Traefik: reverse-proxy с автоконфигом и Let's Encrypt | Глоссарий FREEHOSTING

Traefik

Traefik Reverse Proxy
Traefik — Traefik — современный reverse-proxy и балансировщик нагрузки с автоматической конфигурацией. Обнаруживает контейнеры Docker, поды Kubernetes и автоматически выдаёт SSL через Let's Encrypt. Подходит для микросервисов, self-hosted сервисов и сред с частыми деплоями.

Определение простыми словами

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

В отличие от классического Nginx, где нужно править конфиг и делать reload при каждом изменении, Traefik работает в режиме «динамической конфигурации». Он умеет встраиваться в Docker, Kubernetes, Consul, etcd, AWS ECS — и узнаёт о новых сервисах через их API. Версия 3.x вышла в 2024 и стала основной для production-инсталляций.

Сравнение (таблица)

Параметр Nginx Traefik
Конфигурация Статическая, файлы Динамическая, лейблы и API
Let’s Encrypt Через certbot Встроенный ACME
Docker-интеграция Нет Из коробки
Метрики nginx-exporter Prometheus встроен
Дашборд Нет Web-UI
Скорость Эталон На 5–15% медленнее

Кейсы использования

  • Self-hosted сервисы на одном VPS: Vaultwarden, Nextcloud, Gitea, n8n — каждому свой поддомен и SSL без правки конфигов.
  • Микросервисная архитектура в Docker Swarm или Kubernetes — Traefik автоматически добавляет новые поды в балансировку.
  • CI/CD-пайплайны с превью-окружениями для каждого pull request — поддомен поднимается на лету.
  • Негативный кейс: статический сайт с одной страницей и без частых обновлений — выгоднее простой Nginx, Traefik здесь избыточен.

Технические детали

# минимальный docker-compose для Traefik v3 + сервис
cat > docker-compose.yml <<'EOF'
services:
  traefik:
    image: traefik:v3.2
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.le.acme.email=admin@example.com
      - --certificatesresolvers.le.acme.storage=/acme.json
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./acme.json:/acme.json
  whoami:
    image: traefik/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`example.com`)
      - traefik.http.routers.whoami.entrypoints=websecure
      - traefik.http.routers.whoami.tls.certresolver=le
EOF
touch acme.json && chmod 600 acme.json
docker compose up -d

Файл acme.json хранит выпущенные сертификаты — права 600 обязательны, иначе Traefik откажется работать. Дашборд (порт 8080) в production закрывайте firewall’ом или basic auth.

Частые вопросы

Стоит ли менять Nginx на Traefik?

Если у вас один-два статических сайта — нет, Nginx надёжнее и быстрее. Если контейнеров десятки и они часто меняются — Traefik избавляет от рутины с конфигами.

Как Traefik выпускает SSL?

Через встроенный ACME-клиент. Достаточно указать email и тип challenge (HTTP-01 или DNS-01). Сертификаты сохраняются в acme.json и автоматически обновляются.

Безопасно ли пробрасывать /var/run/docker.sock в Traefik?

Сокет даёт root-доступ к хосту. В production используйте docker-socket-proxy с фильтрами read-only либо разверните Traefik с привязкой к API через TCP с TLS-сертификатами.