Traefik dynamic configuration file does not load.
Also getting "Skipping unchanged configuration providerName=file" when making on-the-fly changes.
LOG:
traefik | 2025-05-12T21:40:11Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:127 > Skipping unchanged configuration providerName=file
traefik | 2025-05-12T21:40:13Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:127 > Skipping unchanged configuration providerName=file
traefik | 2025-05-12T21:40:15Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:127 > Skipping unchanged configuration providerName=file
traefik | 2025-05-12T21:40:17Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:127 > Skipping unchanged configuration providerName=file
CONFIG FILE:
certificatesResolvers:
testresolver:
acme:
httpChallenge: false
tlsChallenge: false
dnsChallenge:
provider: cloudflare
# resolvers: 1.1.1.1:53,8.8.8.8:53
email: myname@gmail.com
storage: /letsencrypt/cloudflare.json
caServer: https://acme-staging-v02.api.letsencrypt.org/directory
DOCKER-COMPOSE.YAML
services:
traefik:
image: "traefik:v3.3.7"
container_name: "traefik"
environment:
- "CF_API_EMAIL=user@gmail.com"
- "CF_API_KEY=abcdefg12345"
- "LEGO_DISABLE_CNAME_SUPPORT=true"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.tls=true"
- "traefik.http.routers.dashboard.rule=Host(`traefik.mysite.org`)"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.users=adminuser:$$apr1$$mjunkjunkjunk."
- "traefik.http.routers.dashboard.entrypoints=websecure"
- "traefik.http.services.dashboard.loadbalancer.server.port=8080"
- "traefik.http.routers.dashboard.tls.certresolver=cloudflare"
- "traefik.http.routers.dashboard.tls.domains[0].main=mysite.org"
- "traefik.http.routers.dashboard.tls.domains[0].sans=*.mysite.org"
restart: always
command:
- "--log.level=DEBUG"
- "--api=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=proxy"
- "--providers.docker.watch=true"
- "--accesslog=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
### DYNAMIC CONFIG ###
- "--providers.file.directory=/etc/traefik/dynamic/"
- "--providers.file.watch=true"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--certificatesresolvers.cloudflare.acme.httpchallenge=false"
- "--certificatesresolvers.cloudflare.acme.tlschallenge=false"
- "--certificatesresolvers.cloudflare.acme.dnschallenge=true"
- "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare"
- "--certificatesresolvers.cloudflare.acme.email=myname@gmail.com"
- "--certificatesresolvers.cloudflare.acme.storage=/letsencrypt/cloudflare.json"
ports:
- "80:80"
- "443:443"
volumes:
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
read_only: true
- type: bind
source: /home/ubuntu/docker/traefik/volumes/traefik/traefik/letsencrypt
target: /letsencrypt
### DYNAMIC CONFIG ###
- type: bind
source: /home/ubuntu/docker/traefik/volumes/traefik/traefik/dynamic
target: /etc/traefik/dynamic
networks:
- external
- proxy
networks:
proxy:
external: true
external:
external: true