Traefik на VPS: reverse proxy с автоматическим SSL
Настройка Traefik на VPS: маршрутизация, Let's Encrypt, Docker labels, middleware. Альтернатива Nginx и Caddy для микросервисов.
Краткий ответ: Traefik — reverse proxy с автоматическим SSL и discovery через Docker labels. Поднимите контейнер Traefik, укажите домены в labels — сертификаты и маршруты создаются сами.
Если устали вручную править конфиг Nginx при каждом новом сервисе — Traefik решает это декларативно. Сравнение с Nginx и Caddy — в конце статьи.
Когда Traefik, а не Nginx
| Сценарий | Traefik | Nginx |
|---|---|---|
| 5+ микросервисов в Docker | Отлично | Много ручных конфигов |
| Один сайт + API | Избыточен | Проще |
| Авто SSL для новых доменов | Из коробки | certbot + reload |
| Kubernetes / Swarm | Нативно | Нужен ingress controller |
Traefik идеален рядом с Docker Compose и Docker Swarm.
Минимальный docker-compose
services:
traefik:
image: traefik:v3.0
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@example.com
- --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_certs:/letsencrypt
restart: unless-stopped
volumes:
traefik_certs:
Подключение приложения через labels
services:
api:
image: myapi:latest
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(`api.example.com`)
- traefik.http.routers.api.entrypoints=websecure
- traefik.http.routers.api.tls.certresolver=le
- traefik.http.services.api.loadbalancer.server.port=8080
Traefik подхватит контейнер автоматически — без reload.
Middleware: rate limit, auth, redirect
labels:
- traefik.http.middlewares.ratelimit.ratelimit.average=100
- traefik.http.routers.api.middlewares=ratelimit
Для базовой auth — basicAuth middleware. Для DDoS — связка с Cloudflare и CrowdSec.
Dashboard Traefik
labels:
- traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)
- traefik.http.routers.dashboard.service=api@internal
- traefik.http.routers.dashboard.middlewares=auth
Не публикуйте dashboard без auth — только HTTPS + basicAuth или VPN (WireGuard).
RAM и production
| Нагрузка | RAM |
|---|---|
| 2–5 сервисов | 512 MB |
| 10+ сервисов | 1 GB |
| High traffic | 2 GB + CDN |
Мониторинг — Uptime Kuma + Grafana.
Traefik vs Caddy vs Nginx
| Traefik | Caddy | Nginx | |
|---|---|---|---|
| Docker discovery | Да | Нет (нужен caddy-docker-proxy) | Нет |
| Конфиг | Labels/YAML | Caddyfile | nginx.conf |
| Сложность | Средняя | Низкая | Средняя |
Итог
Traefik — лучший выбор для Docker-стека с часто меняющимися сервисами. Один раз настроили — добавляете контейнеры labels’ами.
VPS от 2 GB — StormNet Cloud. Базовый деплой — развернуть сайт на VPS.
Рекомендуем прочитать
Частые вопросы
Traefik или Nginx для одного сайта на VPS?
Для одного сайта — Nginx или Caddy проще. Traefik окупается при нескольких Docker-сервисах с разными доменами.
Поддерживает ли Traefik автоматический SSL?
Да, через ACME (Let's Encrypt). Настраивается один раз в static config — сертификаты для новых роутеров создаются автоматически.






