In the middle of trying to set up Caddy as a reverse proxy for my *arr stack. All local only - no domains or accessing from outwith the LAN.

Wondering if anyone has done similar and wouldn’t mind sharing their docker compose files/Caddyfiles? Struggling to find real-work examples that don’t error when I compose.

  • uranibaba@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 hours ago

    Here is two enteries from my Caddyfile:

    ip.domain.tld:80 {
            respond "{client_ip}" 200
    }
    
    
    git.domain.tld {
            reverse_proxy forgejo:3000
    }
    

    This is all I need and Caddy will handle the rest. I have created a network with podman/docker that I add to any container that I need to reverse proxy to.

  • BlackEco@lemmy.blackeco.com
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 day ago

    What’s your issue exactly?

    Personally, I set up Caddy with subdomains like radarr.local.example.tld, added a DNS entry on my domain so that *.local.example.tld points to the local IP of Caddy, then followed this guide so that Caddy issues TLS certificates using the DNS challenge (since the subdomains don’t point to anything accessible from Internet) along with the caddy-docker-proxy plug-in to easily manage upstreams.

    • jobbies@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      The issue is I’m diving right rather than taking the time to learn.

      Caddy-docker-proxy looks promising, thanks!

    • bender223@lemmy.today
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 day ago

      that’s a good point. I’ve only used caddy for handling certs for all the docker containers on my server. for local uses, you generally don’t need certs, although there are some apps that communicate with an offsite db that requires a secure connection.

  • bulwark@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    1 day ago

    I also use Traefik, and once you have it set up it’s really great. Getting it set up is a different story. My advice would be to follow the install guide as closely as you can and don’t start adding to it until it’s stable.

    You don’t need to own a domain to use a reverse proxy by the way, you just need to configure your router to recognize whatever domain you choose and route it to the container.

    Lately, I’ve been playing around with Tailscale and you don’t even need a domain or open ports to connect to your containers from outside your local network.

    • Cousin Mose@lemmy.hogru.ch
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 day ago

      I recently wrote a Caddyfile for a Dockerized Ruby on Rails application in a Kubernetes cluster using Traefik. Traefik connects to Caddy via h2c and Caddy talks to Puma in Ruby on Rails via HTTP/1.1 over UNIX socket.

      I bring this all up because I think h2c is very underutilized and this led to a huge increase in performance.

      • bulwark@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 day ago

        I’ve never heard of h2c but it seems useful. I use docker swarm with a few nodes. But for internal communication all the containers can communicate with each other using docker’s built-in DNS.

        I run Traefik in front of Caddy for a few different applications including Nextcloud.

      • ijhoo@lemmy.ml
        link
        fedilink
        English
        arrow-up
        4
        ·
        20 hours ago

        Once you figure out how traefik is configured, this is super logical and easy. Also, you can use it with podman and qublet on fedora, so you can manage it all with systemd.

        https://theobservum.com/posts/2023/2023-04-15_traefik/

        Tldr; Traefik is looking at all containers and scans for labels (attributes on containers). If certain labels are set, Traefik adjust itself. So the trick is how to set those labels, which both docker compose and qublet make easy, but qublet doesn’t need a compatibility package and comes natively with podman.

      • cron@feddit.org
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 day ago

        I’ve run caddy and traefik. Personally, I prefer caddy, but both are likely completely fine for your use case.

        Traefik has the advantage that it can be configured with docker compose files, while caddy needs its Caddyfile as a seperate configuration.

  • MangoPenguin@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    3
    ·
    1 day ago

    Without using a domain a reverse proxy doesn’t really make sense to use, since you’re just using direct IP addresses.

  • _cryptagion [he/him]@anarchist.nexus
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    3
    ·
    1 day ago

    Why use Caddy at all then? Tailscale would work just as well, with the added bonus that you could access it outside your LAN without exposing it to the clearnet.