Конфигурация 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=<ПОРТ_ПРИЛОЖЕНИЯ>