Установка Traefik в Docker с автоматическим HTTPS: коротко и с данными
Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 4 вопроса. Полный разбор с примерами: Установка Traefik в Docker с автоматическим HTTPS.
Коротко
Установка Traefik нужна, когда на сервере много контейнеров и править конфиг при каждом новом лень: Traefik читает метки контейнеров Docker, сам строит маршруты и получает сертификаты Let's Encrypt. Обратный прокси, то есть сервер, который принимает запросы из интернета и раздаёт их приложениям, настраивается здесь строками в compose-файле самих приложений. Traefik окупается, когда контейнеров больше трёх-четырёх и они меняются: новое приложение получает домен и HTTPS одной группой меток.
Конспект по разделам
Как устроен Traefik: точки входа, роутеры и сервисы
В отличие от Nginx, Traefik не требует перезагрузки при изменении настроек. Он следит за Docker и перестраивает маршруты, когда контейнер появляется или исчезает. Четыре термина, на которых держится вся настройка: Если приложений два-три и они не меняются, этот механизм избыточен: посмотрите Caddy или Nginx.
Установка Traefik 3 в Docker с сертификатом Let's Encrypt
Тег образа взят из примеров документации Traefik (ветка v3.4), текущую версию смотрите в Docker Hub. Для отладки добавьте в command строку --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory: тестовый сервер не упирается в жёсткие лимиты, но выдаёт сертификат, которому браузер не верит.
- Направьте A-запись нужного поддомена на IP сервера и откройте порты 80 и 443.
- Создайте файл compose.yaml с содержимым ниже и подставьте свой адрес почты и домен.
- Запустите docker compose up -d, откройте домен и проверьте замок в адресной строке.
Метки Traefik для вашего приложения: домен, порт и пароль
Чтобы подключить любое приложение, достаточно сети proxy и пяти меток. Вот пример для n8n, который слушает порт 5678: Последняя метка обязательна, если образ объявляет несколько портов или не объявляет ни одного. Пароль на панель, у которой нет своего входа, ставится мидлваром: traefik.http.middlewares.auth.basicauth.users=admin:ХЭШ, затем метка traefik.http.routers.n8n.middlewares=auth.
Ошибки Traefik: 404, Bad Gateway и сертификат по умолчанию
Про безопасность: флаг:ro у сокета Docker не делает его безопасным, через сокет по-прежнему доступен весь API. Поэтому ставьте exposedbydefault=false, не открывайте порт панели и не давайте Traefik больше, чем нужно. Панель, если она нужна, включают флагом --api.dashboard=true и публикуют роутером с сервисом api@internal под паролем.
Проверка настройки Traefik перед выпуском сертификата
Лимиты Let's Encrypt прощают немного ошибок, поэтому сначала пройдите список ниже, а потом запускайте рабочий выпуск. Для переезда на другой сервер достаточно перенести том letsencrypt: в нём лежит acme.json с сертификатами и ключами. Отметьте, что уже готово: калькулятор покажет следующий шаг Обновление сводится к смене тега образа и команде docker compose pull с последующим docker compose up -d.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов
Данные
| Термин | Что это | Пример |
|---|---|---|
| Точка входа (entrypoint) | Порт, который слушает Traefik | web на:80, websecure на:443 |
| Роутер (router) | Правило: какие запросы куда | Host с адресом вашего домена |
| Сервис (service) | Куда отправить запрос: контейнер и его порт | порт 5678 у n8n |
| Мидлвар (middleware) | Обработка по пути: пароль, переадресация | basicauth |
| Что видите | Причина | Что сделать |
|---|---|---|
| 404 page not found | Ни один роутер не подошёл: нет метки enable, в Host опечатка или контейнер не в сети proxy | Сверьте метки командой docker inspect и сеть командой docker network inspect proxy |
| Bad Gateway | Traefik нашёл контейнер, но не достучался: указан не тот порт, или приложение слушает только 127.0.0.1 внутри контейнера | Задайте метку loadbalancer.server.port и адрес 0.0.0.0 в настройках приложения |
| Сертификат TRAEFIK DEFAULT CERT | Свой сертификат ещё не выпущен: DNS не указывает на сервер или закрыт порт 80 | docker compose logs traefik, поиск строк про acme |
| Порт 80 закрыт провайдером или файрволом | HTTP-проверка не пройдёт | Замените httpchallenge на --certificatesresolvers.le.acme.tlschallenge=true: ей нужен только порт 443 |
Данные на 14 октября 2026.
Вопросы и ответы
Чем Traefik отличается от Nginx для контейнеров?
Nginx читает файл конфигурации и требует перезагрузки, Traefik подхватывает метки Docker на лету. Для нескольких постоянных сайтов Nginx проще, для десятка меняющихся контейнеров удобнее Traefik.
Почему Traefik отвечает 404 вместо моего приложения?
Роутер не нашёл подходящего правила. Проверьте метку traefik.enable=true, написание домена в Host и то, что приложение подключено к той же сети, что и Traefik.
Как включить панель Traefik и не открыть её всему интернету?
Включите флаг api.dashboard, не публикуйте порт 8080 и подключите панель отдельным роутером с сервисом api@internal, мидлваром basicauth и сертификатом.
Как перенести сертификаты Traefik на новый сервер?
Скопируйте том с файлом acme.json и запустите тот же compose-файл. Traefik увидит готовые сертификаты и не станет заказывать их заново, пока DNS указывает на новый IP.