Главная/Разработка/Traefik
Установка Traefik в Docker с автоматическим HTTPS
Установка Traefik нужна, когда на сервере много контейнеров и править конфиг при каждом новом лень: Traefik читает метки контейнеров Docker, сам строит маршруты и получает сертификаты Let's Encrypt. Обратный прокси, то есть сервер, который принимает запросы из интернета и раздаёт их приложениям, настраивается здесь строками в compose-файле самих приложений.
Ответ за 30 секунд
Traefik окупается, когда контейнеров больше трёх-четырёх и они меняются: новое приложение получает домен и HTTPS одной группой меток. Для двух постоянных сайтов проще Caddy. Не публикуйте порт панели 8080 и помните, что сокет Docker даёт Traefik большие права.
Почасовая оплата: поднимите стенд с несколькими приложениями, проверьте метки и удалите сервер, когда схема отлажена.
Проверка настройки Traefik перед выпуском сертификатаv3актуальная ветка Traefik
80 и 443порты прокси
acme.jsonфайл с сертификатами
01 · 1 мин
Как устроен Traefik: точки входа, роутеры и сервисы#
В отличие от Nginx, Traefik не требует перезагрузки при изменении настроек. Он следит за Docker и перестраивает маршруты, когда контейнер появляется или исчезает. Четыре термина, на которых держится вся настройка:
| Термин | Что это | Пример |
|---|---|---|
| Точка входа (entrypoint) | Порт, который слушает Traefik | web на :80, websecure на :443 |
| Роутер (router) | Правило: какие запросы куда | Host с адресом вашего домена |
| Сервис (service) | Куда отправить запрос: контейнер и его порт | порт 5678 у n8n |
| Мидлвар (middleware) | Обработка по пути: пароль, переадресация | basicauth |
02 · 1 мин
Установка Traefik 3 в Docker с сертификатом Let's Encrypt#
- Направьте A-запись нужного поддомена на IP сервера и откройте порты 80 и 443.
- Создайте файл
compose.yamlс содержимым ниже и подставьте свой адрес почты и домен. - Запустите
docker compose up -d, откройте домен и проверьте замок в адресной строке.
services:
traefik:
image: traefik:v3.4
restart: unless-stopped
security_opt: ["no-new-privileges:true"]
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --certificatesresolvers.le.acme.email=you@example.com
- --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.le.acme.httpchallenge=true
- --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
ports: ["80:80", "443:443"]
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- letsencrypt:/letsencrypt
networks: [proxy]
whoami:
image: traefik/whoami
restart: unless-stopped
networks: [proxy]
labels:
- traefik.enable=true
- traefik.http.routers.whoami.rule=Host(`whoami.example.com`)
- traefik.http.routers.whoami.entrypoints=websecure
- traefik.http.routers.whoami.tls.certresolver=le
networks:
proxy:
name: proxy
volumes:
letsencrypt:
Тег образа взят из примеров документации Traefik (ветка v3.4), текущую версию смотрите в Docker Hub. Для отладки добавьте в command строку --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory: тестовый сервер не упирается в жёсткие лимиты, но выдаёт сертификат, которому браузер не верит.
03 · 1 мин
Метки Traefik для вашего приложения: домен, порт и пароль#
Чтобы подключить любое приложение, достаточно сети proxy и пяти меток. Вот пример для n8n, который слушает порт 5678:
n8n:
image: docker.n8n.io/n8nio/n8n
networks: [proxy]
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`n8n.example.com`)
- traefik.http.routers.n8n.entrypoints=websecure
- traefik.http.routers.n8n.tls.certresolver=le
- traefik.http.services.n8n.loadbalancer.server.port=5678
Последняя метка обязательна, если образ объявляет несколько портов или не объявляет ни одного. Пароль на панель, у которой нет своего входа, ставится мидлваром: traefik.http.middlewares.auth.basicauth.users=admin:ХЭШ, затем метка traefik.http.routers.n8n.middlewares=auth. Хэш получают командой htpasswd -nb admin пароль из пакета apache2-utils.
Знак доллара в хэше удваивают
В compose-файле одиночный знак $ означает подстановку переменной, поэтому каждый $ в хэше basicauth записывают как $$. Без этого Traefik получит обрезанный хэш и будет отвечать отказом на любой пароль.
04 · 1 мин
Ошибки Traefik: 404, Bad Gateway и сертификат по умолчанию#
| Что видите | Причина | Что сделать |
|---|---|---|
| 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 |
Про безопасность: флаг :ro у сокета Docker не делает его безопасным, через сокет по-прежнему доступен весь API. Поэтому ставьте exposedbydefault=false, не открывайте порт панели и не давайте Traefik больше, чем нужно. Панель, если она нужна, включают флагом --api.dashboard=true и публикуют роутером с сервисом api@internal под паролем.
Инструмент · 1 мин
Проверка настройки Traefik перед выпуском сертификата#
Лимиты Let's Encrypt прощают немного ошибок, поэтому сначала пройдите список ниже, а потом запускайте рабочий выпуск. Для переезда на другой сервер достаточно перенести том letsencrypt: в нём лежит acme.json с сертификатами и ключами.
Перед первым запуском Traefik
Отметьте, что уже готово: калькулятор покажет следующий шаг
Обновление сводится к смене тега образа и команде docker compose pull с последующим docker compose up -d. Перед сменой ветки прочитайте заметки о миграции на сайте Traefik. Копии тома и порядок их хранения описаны на странице сервер для бэкапов.
06 · 1 мин
Вопросы об установке Traefik#
Чем 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.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация Traefik: публикация сервисов в Docker, doc.traefik.io/traefik/expose/docker/basic, проверено 15 октября 2026.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов