Traefik — reverse-proxy и TLS
Назначение сервиса
Traefik работает как точка входа в систему мониторинга: * Терминирует HTTPS (Let’s Encrypt) * Маршрутизирует запросы по правилам Host/Path * Поддерживает middleware (ForwardAuth, IPAllowList, BasicAuth) * Выставляет метрики Prometheus
Структура каталогов
config/services/traefik/deployment/docker/
├─ docker-compose.yml # контейнер Traefik + volume certs
├─ .env_example # переменные окружения
└─ config/
├─ traefik.yaml # глобальная конфигурация (entrypoints, providers)
└─ dynamic.yaml # правила routers/middlewares
.env параметры
| Переменная | Описание |
|---|---|
TRAEFIK_HOST |
Домен панели Traefik (dashboard) |
TRAEFIK_HTTP_PORT / TRAEFIK_HTTPS_PORT |
Порты entrypoints |
EMAIL |
Email для ACME |
COMPOSE_PROJECT_NAME |
Префикс контейнера |
Запуск
cd config/services/traefik/deployment/docker
cp .env_example .env
# укажите домен и email
docker compose up -d
Dashboard: https://<TRAEFIK_HOST>/dashboard/ (доступ ограничен Forward-Auth).
Добавление нового сервиса
В нужном docker-compose.yml сервиса добавьте labels, напр. для Grafana:
labels:
- traefik.enable=true
- traefik.http.routers.grafana.rule=Host(`grafana.example.com`)
- traefik.http.routers.grafana.tls=true
- traefik.http.routers.grafana.tls.certresolver=lets-encrypt
- traefik.http.routers.grafana.middlewares=monitoring-forward-auth
- traefik.http.services.grafana.loadbalancer.server.port=3000
Traefik обнаружит контейнер через Docker provider и применит правило без перезагрузки.
ACME хранилище
Сертификаты Let’s Encrypt сохраняются в volume traefik-certificates. При миграции хоста скопируйте весь volume.
Метрики
Endpoint /metrics (порт 8082) отдаёт Prometheus-совместимые метрики. В prometheus.yml уже добавлен job traefik.
Обновление
docker compose pull traefik
docker compose up -d
Troubleshooting
- 404 page not found — проверьте правильность Rule и Port.
- Cannot get ACME cert — убедитесь, что порты 80/443 не заняты и домен указывает на хост.