Traefik — это современный reverse proxy и load balancer, который идеально подходит для работы с микросервисами в Docker-окружении. Его главное преимущество — автоматическое обнаружение сервисов и динамическая конфигурация маршрутизации.

Нам потребуется сервер с установленным Docker на сервере, по ссылкам описано, как установить Docker в Ubuntu и Debian.
Для запуска будем использовать официальный Docker образ.
И так создаем папку traefik и переходим в нее:
mkdir traefik && cd traefik
Создаем файл docker-compose:
nano docker-compose.yml
version: "3.9"
services:
  traefik:
    image: traefik:v3.1
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.le.acme.httpchallenge=true
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
      - --certificatesresolvers.le.acme.email=admin@yourdomain.com
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
      # Dashboard
      - --api.dashboard=true
      - --api.insecure=true
      # Redirect HTTP to HTTPS
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # Dashboard port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt
    restart: unless-stopped
    networks:
      - traefik-network
networks:
  traefik-network:
    external: true
Создать сеть
docker network create traefik-network
Создать директорию для сертификатов:
mkdir -p ./letsencrypt
chmod 600 ./letsencrypt
Запустить Traefik:
docker-compose up -d
или
docker compose up -d
Проверим, что контейнер появился командой docker ps

Настройка сервиса с Traefik
Теперь создадим пример сервиса, который будет работать через Traefik:
version: "3.9"
services:
  web-app:
    image: nginx:alpine
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web-app.rule=Host(`app.yourdomain.com`)"
      - "traefik.http.routers.web-app.entrypoints=websecure"
      - "traefik.http.routers.web-app.tls.certresolver=le"
      - "traefik.http.services.web-app.loadbalancer.server.port=80"
    networks:
      - traefik-network
networks:
  traefik-network:
    external: true
Доступ к панели управления
После запуска Traefik панель управления будет доступна по адресу:
В панели вы увидите:
- Все запущенные сервисы
 - Маршруты и правила
 - Статус сервисов
 - SSL сертификаты
 - Метрики производительности
 

Безопасность
Для продакшн окружения рекомендуется:
Защитить панель управления:
command:
  - --api.dashboard=true
  - --api.insecure=false
  - --api.middlewares=auth
  - --middlewares.auth.basicauth.users=admin:$$2y$$10$$...
Использовать HTTPS для всех сервисов
labels:
  - "traefik.http.routers.app.entrypoints=websecure"
  - "traefik.http.routers.app.tls.certresolver=le"
Настроить rate limiting
labels:
  - "traefik.http.middlewares.ratelimit.ratelimit.burst=100"
  - "traefik.http.routers.app.middlewares=ratelimit"
Мониторинг
Для подключения метрик добавьте в конфигурацию Traefik:
command:
  - --metrics.prometheus=true
  - --metrics.prometheus.b
Traefik — мощный инструмент для управления трафиком в Docker-окружении. Его автоматическое обнаружение сервисов и поддержка SSL сертификатов делают его идеальным выбором для современных микросервисных архитектур.Основные преимущества:
- ✅ Автоматическое обнаружение сервисов
 - ✅ Динамическая конфигурация
 - ✅ Автоматические SSL сертификаты
 - ✅ Встроенная панель управления
 - ✅ Поддержка множества провайдеров
 - ✅ Высокая производительность