Traefik на VPS: reverse proxy с авто-SSL
Traefik сам находит ваши контейнеры, раздаёт им домены и выпускает SSL-сертификаты Let's Encrypt без единой ручной команды. Настроил один раз — новые сервисы подхватываются автоматически.
Содержание
Почему Traefik, а не Nginx вручную
['Классический Nginx требует писать конфиг под каждый новый сайт и вручную гонять certbot за сертификатами. Traefik работает иначе: он читает метки (labels) прямо у контейнеров Docker и на лету строит маршруты. Добавили сервис с нужными labels — домен и HTTPS появляются сами.', "Для проекта с несколькими приложениями на одном VPS это экономит часы. Тем более что зарубежный сервер MAATRIX с оплатой из России позволяет спокойно выпускать сертификаты Let's Encrypt, которые требуют доступности домена извне."]Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS под TraefikБазовый docker-compose для Traefik
['Traefik сам запускается контейнером и слушает 80/443. Он общается с Docker через сокет и хранит сертификаты в томе.', 'services:\n traefik:\n image: traefik:v3.1\n restart: always\n command:\n - "--providers.docker=true"\n - "--providers.docker.exposedbydefault=false"\n - "--entrypoints.web.address=:80"\n - "--entrypoints.websecure.address=:443"\n - "--certificatesresolvers.le.acme.tlschallenge=true"\n - "--certificatesresolvers.le.acme.email=you@example.com"\n - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"\n ports:\n - "80:80"\n - "443:443"\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock:ro\n - le:/letsencrypt\nvolumes:\n le:', 'Флаг exposedbydefault=false критичен: без него Traefik попытается опубликовать вообще все контейнеры. Мы явно помечаем только нужные.']
Подключаем сервис с автоматическим HTTPS
['Любое приложение получает домен и SSL через labels. Никаких портов наружу — Traefik сам достучится до контейнера по внутренней сети.', ' whoami:\n image: traefik/whoami\n labels:\n - "traefik.enable=true"\n - "traefik.http.routers.whoami.rule=Host(`app.example.com`)"\n - "traefik.http.routers.whoami.entrypoints=websecure"\n - "traefik.http.routers.whoami.tls.certresolver=le"', 'Как только DNS домена app.example.com указывает на IP вашего VPS, Traefik выпустит сертификат и начнёт отдавать сайт по HTTPS. Проверить выпуск можно по логам: docker compose logs traefik | grep -i acme.']
Редирект HTTP→HTTPS и дашборд
['Чтобы весь трафик уходил на HTTPS, добавьте глобальный редирект в command:', ' - "--entrypoints.web.http.redirections.entrypoint.to=websecure"\n - "--entrypoints.web.http.redirections.entrypoint.scheme=https"', 'Встроенный дашборд показывает все роутеры и сервисы. Включать его на публичном порту опасно — оставьте только за базовой авторизацией или SSH-туннелем.', 'Traefik умеет middleware — промежуточные обработчики запроса. Самый частый — basic-auth для закрытия админок. Генерируем хеш пароля и вешаем его на роутер labels:', 'htpasswd -nb admin StrongPass\n# результат: admin:$apr1$....\n# в labels сервиса:\n# traefik.http.middlewares.auth.basicauth.users=admin:$apr1$....\n# traefik.http.routers.dashboard.middlewares=auth', 'Другие полезные middleware — ограничение частоты запросов (rateLimit), добавление security-заголовков и белый список IP. Всё это описывается labels, без правки конфигов Nginx.']
Частые ошибки
["- acme.json с правами 777 — Traefik откажется его читать. Файл создаётся сам в томе, не трогайте права руками
- DNS ещё не прописан — Let's Encrypt не выпустит сертификат, пока домен не резолвится на VPS. Проверяйте:
dig +short app.example.com - Забыли общую сеть — Traefik и приложение должны быть в одной docker-сети, иначе прокси не найдёт контейнер
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS под TraefikЧастые вопросы
Нужен ли отдельный Nginx рядом с Traefik?
Нет. Traefik сам работает reverse proxy и терминирует SSL. Nginx может остаться внутри контейнера приложения, но наружу смотрит Traefik.
Traefik умеет wildcard-сертификаты?
Да, но для *.example.com нужен DNS-challenge и токен вашего DNS-провайдера. Для одиночных доменов достаточно tlsChallenge из примера.
Сработает ли авто-SSL на сервере в UK или US?
Да. Let's Encrypt глобален, а локации MAATRIX в UK и США полностью доступны извне для валидации домена.