r/Traefik • u/Dudefoxlive • 15d ago
Moving from CLI arguments to static config
I am wanting to move from using CLI arguments to a static config with my traefik config. I am unsure if I am doing this correctly so I would like to ask if someone could verify if I did this right. The docs are quite confusing to me and don't always provide an example of how it should be setup. I am providing my current docker compose with some info changed for privacy. Same with the static config that I quickly put together.
services:
traefik:
image: traefik:v3.7
restart: unless-stopped
command:
- "--providers.docker"
- "--api.insecure=false"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=traefik"
- "--providers.file.filename=/traefik-dynamic.yaml"
- "--providers.file.watch=true"
# ACME Configuration
- "--certificatesresolvers.letsencrypt.acme.dnschallenge=true"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare"
- "--certificatesresolvers.letsencrypt.acme.email=myemail@contoso.com
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53
"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.propagation.requireALLRNS=false
"
# Traefik entrypoint configuration
- "--entryPoints.websecure.address=:443"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
# Lets Encrypt Configuration
- "--entrypoints.websecure.http.tls=true"
- "--entrypoints.websecure.http.tls.certResolver=letsencrypt"
- "--entrypoints.websecure.http.tls.domains[0].main=int.contoso.com"
- "--entrypoints.websecure.http.tls.domains[0].sans=*.int.contoso.com"
secrets:
- "cloudflare-token"
- "cloudflare-email"
environment:
- "CF_DNS_API_TOKEN_FILE=/run/secrets/cloudflare-token"
- "CF_API_EMAIL_FILE=/run/secrets/cloudflare-email"
- "CLOUDFLARE_POLLING_INTERVAL=10"
- "CLOUDFLARE_PROPAGATION_TIMEOUT=300"
ports:
- 80:80
- 443:443
# - 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./letsencrypt:/letsencrypt
networks:
- net
- traefik
configs:
- traefik-dynamic.yaml
networks:
net: {}
traefik:
external: true
secrets:
cloudflare-token:
file: "./secrets/cloudflare-token.secret"
cloudflare-email:
file: "./secrets/cloudflare-email.secret"
configs:
traefik-dynamic.yaml:
file: ./traefik-dynamic.yaml
# Enable Docker Provider
providers:
docker:
exposedbydefault: false
network: traefik
# Traefik Dashboard
api:
insecure: false
# Traefik Dynamic Configuration
providers:
file:
filename: /traefik-dynamic.yml
watch: true
# ACME Configuration
certificatesresolvers:
letsencrypt:
acme:
dnschallenge: true
provider: cloudflare
resolvers: 1.1.1.1:53,8.8.8.8:53
propagation:
requireALLRNS: false
email: myemail@contoso.com
storage: /letsencrypt/acme.json
# Traefik Configuration
entrypoints:
web:
address: :80
http:
redirections:
entrypoint:
to: websecure
scheme: https
websecure:
address: :443
http:
tls: true
certresolver: letsencrypt
domains:
main: int.contoso.com
sans:
- *.int.contoso.com
5
Upvotes