services: traefik: image: traefik:latest container_name: traefik restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" volumes: - ${TRAEFIK_YAML:-./traefik/traefik.yaml}:/etc/traefik/traefik.yaml - ${TRAEFIK_CONFD:-./traefik/conf.d}:/etc/traefik/conf.d - traefik-acme:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock networks: - docknet labels: - 'traefik.enable=true' - 'traefik.http.routers.api.rule=Host(`${CONSOLE_HOST}`)' - 'traefik.http.routers.api.entrypoints=websecure' - 'traefik.http.routers.api.service=api@internal' - 'traefik.http.routers.api.tls=true' - 'traefik.http.routers.api.tls.certresolver=letsencrypt' - 'traefik.http.routers.api.middlewares=traefik-auth' - 'traefik.http.middlewares.traefik-auth.basicauth.users=${TRAEFIK_CONSOLE_AUTH}' ports: - 8342:80 - 8767:443 - 8080:8080 environment: - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL} - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY} command: - --api # Enable the Trafik dashboard - --api.dashboard=true # Tell Traefik to discover containers using the Docker API - --providers.docker=true - --providers.docker.exposedByDefault=false # Set up LetsEncrypt - --certificatesresolvers.letsencrypt.acme.dnschallenge=true - --certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare - --certificatesresolvers.letsencrypt.acme.email=${CLOUDFLARE_EMAIL} # Set up an insecure listener that redirects all traffic to TLS - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entrypoint.to=websecure - --entrypoints.web.http.redirections.entrypoint.scheme=https - --entrypoints.websecure.address=:443 # Set up the TLS configuration for our websecure listener - --entrypoints.websecure.http.tls=true - --entrypoints.websecure.http.tls.certResolver=letsencrypt - --log=true - --log.level=INFO logging: driver: "json-file" options: max-size: "1m" networks: docknet: name: ${NETWORK_NAME:-docknet} volumes: traefik-acme: