Come on and fight me…

I just tried out caddy for the first time and found it to be fantastic, I have used both Traefik and Nginx Proxy Manager extensively and although they were both great, the simplicity of the Caddfilr is fantastic. With a few snippets configured, I can add a host with a single line that just defines the port and url, it’s like magic.

Has anyone got any known traps ( or tips) with caddy to make it useful.

The issues I have had previously with Traefik were the need to have multiplelines to configure it (and configure the host and router separately), and the difference between local docker services ( I do like using labels to configure, but with lots of services it gets a bit fragmented and difficult toanahe) and remote services ( had to use the file config).

With NPM, I find using the GUI to configure the servers difficult ( and challenging to keep consistent ) and I had a time that it forgot something ( can’t remember if it was certificates or something else ) and that was the straw that broke the camel’s back for me.

Anyway, currently I am happy with caddy and am not planning on replacing it (at least for a month or two :D ). It would be nice if there was a GUI, but no big drama honestly, and the text config is great.

  • Edo78@feddit.it
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 years ago

    It’s interesting how different people have different approaches … I migrate from Caddy to Traefik because I found it magical … Whenever I need to add another selfhosted service I just adapt a docker-compose like this one

    version: '3.8'
    
    services:
      homeassistant:
        container_name: homeassistant
        image: ghcr.io/home-assistant/home-assistant:stable
        #image: homeassistant/raspberrypi4-homeassistant:stable
        volumes:
          - ./media/:/media
          - ./config/:/config
          - /etc/localtime:/etc/localtime:ro
        environment:
          - TZ=${TZ}
        restart: unless-stopped
        networks:
          - t2_proxy
          - backend
        labels:
          - traefik.enable=true
          - traefik.docker.network=t2_proxy
          - traefik.http.routers.homeassistant.rule=Host(`home.mydomain.bla.bla`)
          - traefik.http.routers.homeassistant.entrypoints=websecure
          - traefik.http.routers.homeassistant.tls.certresolver=myresolver
          - traefik.http.services.homeassistant.loadbalancer.server.port=8123
    
    networks:
      backend:
        external: true
      t2_proxy:
        external: true
    

    As you can see I just need to change the host and the port in the labels to have a new domain pointing to the right port … I wasn’t able to find an easier way to add a new service to caddy

    • mbirth@lemmy.mbirth.uk
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 years ago

      This! I’ve setup Traefik and use traefik-redis and traefik-kop to pull in labels from my other Raspberry Pis so I can spin up my containers on any of the Docker hosts without having to change anything in the proxy config.

    • qwacko@lemmy.nzOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      Yeah, I had lots of service configured like that, and you are correct that it is awesome, however I have other services on other hosts (not on docker swarm either) so I needed to delve into file config quite often, and doing some web dev work, I had services that weren’t dockerized, so I ended up creating dummy services (socat containers) to make them easy. It just got a bit frustrating and taking too much headspace, I was able to setup caddy in about 2 hours one evening, so I am pretty happy so far, and I can see all my hosts in a single file which is great ( I ended up with orphaned routes etc… from containers I forgot about when I was testing things).

      As you say, different people come at the same problem and come away with totally different views ( which is pretty great that there are enough option that we can all find something that works for our needs ).

    • karlthemailman@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 years ago

      Completely a personal preference, but this is one reason I prefer caddy. I like to keep the configs separate and not clutter up my compose files.

      It means I need to update two things when adding a new service (a compose file plus my caddy file), but I like the separation of concerns.

      It also makes my proxy config consistent for all services, regardless of whether that run in docket or elsewhere.

      • Edo78@feddit.it
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 years ago

        I just use dockerized service and I plan to move to k8s so I don’t have (nor plan to) deal with anything besides dockerized services

    • Andreas@feddit.dk
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      First time I heard of migrating from Caddy to Traefik and not the other way around. The usual complaint about Traefik is that it’s too complicated to manage all of the moving parts. I have only used Caddy with Dockerized setups though so I don’t know what the others are like.

      • Edo78@feddit.it
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 years ago

        Well, this way it works great for my needs … If I don’t need a service anymore I just remove its docker-compose and puff it’s gone the service and the reverse proxy config all in one single atomic thanos-like snap of fingers I wasn’t able to find a way to do the same with Caddy and I don’t get what do you mean with “moving parts”