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 сертификаты
- ✅ Встроенная панель управления
- ✅ Поддержка множества провайдеров
- ✅ Высокая производительность