services: traefik: image: traefik:v3 container_name: traefik restart: always # Traefik replaces nginx-proxy-manager on 80/443. Decommission NPM before # deploying this (both can't bind 80/443). UDP/443 (SMB-over-QUIC) is NOT # handled here — the router forwards UDP/443 straight to serverfile. # # NOTE: absolute host paths (NOT ./relative). Portainer GitOps runs compose # with paths relative to its own container (/data/compose//...), which # the Docker daemon can't resolve — relative mounts silently become empty # dirs. Config files live on the host; keep them in sync with this repo's # traefik.yml / dynamic/ (source of truth). ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /mnt/containers/traefik/container-data/traefik.yml:/etc/traefik/traefik.yml:ro,z - /mnt/containers/traefik/container-data/dynamic:/etc/traefik/dynamic:ro,z - /mnt/containers/traefik/container-data/acme:/acme:z networks: - reverseproxy-nw networks: reverseproxy-nw: external: true