Вот мой блок labels для дашборда:
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`tf.domain.com`)"
- "traefik.http.middlewares.auth.basicauth.users=login:hashed_password"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=auth,traefik-https-redirect"
- "traefik.http.routers.traefik-https.entrypoints=https"
- "traefik.http.routers.traefik-https.rule=Host(`tf.domain.com`)"
- "traefik.http.routers.traefik-https.tls=true"
- "traefik.http.routers.traefik-https.tls.certresolver=mytlschallenge"
- "traefik.http.routers.traefik-https.tls.domains[0].main=tf.domain.com"
- "traefik.http.routers.traefik-https.service=api@internal"
То есть
- слушаем 80 порт для нужного домена
- зпрашиваем basic auth для входа ()
- редиректим на 443 порт
- случаем 443 порт для нужного домена
- указываем выписывание tls-сертификата, настройки прописать можно в блок command (пример ниже)
command:
// ..... другие директивы
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=youremail@domain.com"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
папку letsencrypt надо не забыть смонтировать в volumes:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "./letsencrypt:/letsencrypt"