Конфигурация Traefik с авто SSL на Docker Compose
Конфигурация Traefik с автоматическим получением SSL сертификата Let’s Encrypt и подключением контейнеров к доменам
Создать пустой файл acme.json
Создать файл traefik.yaml и заполнить:
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
websecure:
address: ":443"
http:
tls:
certResolver: resolver
certificatesResolvers:
resolver:
acme:
email: "E-MAIL_АДМИНИСТРАТОРА"
storage: acme.json
httpChallenge:
entryPoint: web
middlewares:
my-fail2ban:
plugin:
fail2ban:
rules:
bantime: "3h"
findtime: "10m"
maxretry: 4
enabled: true
urlregexp:
- ""
urlregexp: ""
ports: "80:443"
accessLog:
filePath: "/var/log/traefik.log"
providers:
docker:
network: network
Создать файл docker-compose.yaml и заполнить:
version: '3'
networks:
default:
external:
name: network
services:
traefik:
container_name: traefik
image: traefik
restart: always
environment:
- TZ=Europe/Moscow
command:
- --accesslog.fields.names.StartUTC=drop
- --providers.docker
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yaml:/traefik.yaml
- ./acme.json:/acme.json
- ./traefik.log:/var/log/traefik.log
labels:
- traefik.enable=false
Сборка и запуск:
# docker-compose up
Остальным контейнерам добавлять:
labels:
- traefik.enable=true
- traefik.http.routers.<НАЗВАНИЕ>.rule=Host(`<ДОМЕН>`)
- traefik.http.services.<НАЗВАНИЕ>.loadbalancer.server.port=<ПОРТ_ПРИЛОЖЕНИЯ>