Apply to traefik:v3.2

Example traefik compose.yaml

See purple4pur/docker_compose .

Example traefik.yaml

log:
  level: "WARN"
api:
  dashboard: true
providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedbydefault: false
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
certificatesResolvers:
  cloudflare:
    acme:
      email: "[email protected]"
      storage: "/letsencrypt/acme_cloudflare.json"
      dnsChallenge:
        provider: "cloudflare"
        resolvers:
          - "8.8.8.8:53"
          - "1.1.1.1:53"
  myresolver:
    acme:
      email: "[email protected]"
      storage: "/letsencrypt/acme.json"
      httpChallenge:
        entryPoint: "web"

Route a https URL to an internal service on :8080

    ...
    labels:
      traefik.enable: true
      traefik.http.services.SERVICE_X.loadbalancer.server.port: "8080"
      traefik.http.routers.ROUTER_X.rule: "..."
      traefik.http.routers.ROUTER_X.entrypoints: "websecure"
      traefik.http.routers.ROUTER_X.tls.certresolver: "cloudflare"
      traefik.http.routers.ROUTER_X.service: "SERVICE_X"

middleware: redirectregex

Redirect dashboard.hostname.com... to https://hostname.com/dashboard...:

    ...
    labels:
      ...
      # define redirectregex
      traefik.http.middlewares.MIDDLEWARE_X.redirectregex.regex: "^(?:https?:\\/\\/)?dashboard\\.hostname\\.com(.*)"
      traefik.http.middlewares.MIDDLEWARE_X.redirectregex.replacement: "https://hostname.com/dashboard$${1}"
      ...
      # use redirectregex
      traefik.http.routers.ROUTER_X.service: "noop@internal" # avoid auto linking this middleware to other services
      traefik.http.routers.ROUTER_X.middlewares: "MIDDLEWARE_X"

middleware: basicAuth

    ...
    labels:
      ...
      # define basicAuth
      traefik.http.middlewares.MIDDLEWARE_X.basicAuth.users: "test:$apr1$7ij1g6q3$WiPOcMX6m/gWCC3kKP9kh0"
      ...
      # use basicAuth
      traefik.http.routers.ROUTER_X.middlewares: "MIDDLEWARE_X"

, where users field is Apache salted MD5 generated by htpasswd:

htpasswd -n USERNAME
Published under Creative Commons Attribution-ShareAlike (CC-BY-SA) license. Feel free to comment or share :)