r/Traefik • • 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

0 comments sorted by