Перейти к содержанию

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 не заняты и домен указывает на хост.