Traefik на Ubuntu 24.04: пошаговая установка
Когда на сервере растёт число контейнеров, каждый со своим доменом и сертификатом, ручная правка конфигов утомляет. Установить Traefik на Ubuntu 24.04 стоит ради автоматизации: он сам обнаруживает контейнеры, маршрутизирует трафик по их меткам и выпускает сертификаты Let's Encrypt. Ниже — пошаговая установка с готовыми командами: от Docker и сети до рабочего HTTPS-роутинга с автообновлением сертификатов. Главное отличие Traefik от классического Nginx — в способе конфигурации. Вы не пишете отдельный конфиг на каждый сайт, а вешаете метки прямо на контейнеры, и Traefik, следя за Docker, сам настраивает для новых контейнеров маршруты и сертификаты без перезапуска и правки файлов. Добавили сервис с парой меток — он тут же доступен по своему домену с HTTPS, убрали — маршрут исчез. Полезно заранее уложить в голове четыре сущности, из которых складывается маршрутизация: точка входа (порт, обычно 80 и 443), роутер (правило по домену), сервис (сам контейнер) и резолвер сертификатов (выпуск TLS через Let's Encrypt). Все четыре вы описываете метками, а Traefik собирает из них рабочую конфигурацию на лету. Для одного статичного сайта это избыточно, а вот когда сервисов много и они меняются, автоматизация окупается сразу.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Шаг 1. Подготовка сервера и портов
Начните с чистого VPS на Ubuntu 24.04 с root-доступом. Сам Traefik лёгкий, ресурсы нужны вашим сервисам: под прокси плюс набор контейнеров комфортно на 2–4 ядрах и 4 ГБ RAM. Обновите систему:
apt update && apt upgrade -y
Traefik принимает трафик на портах 80 и 443, поэтому откройте их в фаерволе, оставив снаружи ещё и SSH:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Порт 80 обязателен даже при работе только по HTTPS: по нему идёт HTTP-проверка ACME при выпуске сертификатов. Заранее убедитесь, что домены сервисов A-записями указывают на IP этого VPS. Локацию выбирайте по аудитории: RU для России, US для доступа к зарубежным сервисам, UK для Европы. У MAATRIX доступны все три с оплатой из России картой, СБП или криптой.
Шаг 2. Установка Docker и создание сети
Traefik работает в Docker и управляет другими контейнерами, поэтому сначала поставьте движок официальным скриптом:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker compose version
Traefik и проксируемые сервисы должны быть в одной сети Docker, чтобы прокси мог до них дотянуться. Создайте общую сеть заранее — она понадобится и Traefik, и вашим сервисам:
docker network create web
Это ключевой момент, который часто упускают новички: сервис в другой сети для Traefik невидим, даже с правильными метками. Общая внешняя сеть web связывает прокси и приложения. Слово external в описании сети означает, что она создаётся заранее и не принадлежит ни одному compose-проекту, поэтому к ней могут подключаться контейнеры из разных стеков — и Traefik, и любое ваше приложение. Без этой общей сети даже безупречно размеченный сервис останется недоступным прокси, и вы будете долго искать причину там, где её нет. Поэтому создание сети — не формальность, а фундамент всей схемы.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSШаг 3. Запуск Traefik через Docker Compose
Опишем Traefik в отдельном compose-файле. Создайте каталог и compose.yaml:
mkdir -p /opt/traefik/letsencrypt && cd /opt/traefik
Содержимое compose.yaml поднимает прокси, даёт ему доступ к сокету Docker для обнаружения контейнеров, открывает порты и настраивает выпуск сертификатов:
services:
traefik:
image: traefik:v3.1
restart: unless-stopped
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=/letsencrypt/acme.json"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
networks:
- web
networks:
web:
external: true
Ключевое: exposedbydefault=false означает, что Traefik проксирует только явно разрешённые метками контейнеры, а не всё подряд, — это важная настройка безопасности. Резолвер le настраивает выпуск сертификатов Let's Encrypt с хранением в acme.json.
Шаг 4. Права на acme.json и запуск
Прежде чем запускать, задайте строгие права на файл, где будут храниться ключи сертификатов. Traefik требует прав 600 и с более открытыми откажется использовать хранилище — это самая частая причина, по которой у новичков «не выпускаются сертификаты»:
touch letsencrypt/acme.json
chmod 600 letsencrypt/acme.json
Теперь запустите Traefik и проверьте логи:
docker compose up -d
docker compose logs -f traefik
В логах не должно быть ошибок доступа к сокету или к acme.json. Traefik запущен и следит за Docker, но пока не проксирует ни один сервис, потому что мы включили режим явного разрешения по меткам. Подключим сервис на следующем шаге.
Шаг 5. Маршрутизация сервиса по меткам
Магия Traefik в том, что маршрут и сертификат задаются метками прямо на контейнере приложения. Опишите сервис, подключив его к сети web и добавив метки:
services:
app:
image: myapp:1.0
restart: unless-stopped
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.example.com`)"
- "traefik.http.routers.app.entrypoints=websecure"
- "traefik.http.routers.app.tls.certresolver=le"
networks:
web:
external: true
Разберём метки. traefik.enable=true разрешает проксировать этот контейнер. Правило Host(...) задаёт домен, по которому идёт трафик на сервис. Точка входа websecure — это HTTPS на 443, а tls.certresolver=le включает автовыпуск сертификата. Поднимите сервис:
docker compose up -d
Через несколько секунд сервис доступен по https://app.example.com с валидным сертификатом — без отдельного конфига и перезапуска прокси. Traefik увидел новый контейнер, прочитал метки и настроил всё сам. Если сервисов несколько, каждый описывается своим набором меток с собственным доменом, и все они получают сертификаты независимо друг от друга — добавление нового сайта остаётся делом нескольких строк.
Шаг 6. Проверка, дашборд и обслуживание
Убедитесь, что маршрутизация и сертификат работают:
curl -I https://app.example.com
В ответе должен быть валидный HTTPS и код 200. Если сертификат не выпустился, типовые причины: неверные права на acme.json, домен не указывает на сервер или закрыт порт 80. У Traefik есть веб-дашборд с текущими маршрутами и состоянием сертификатов, полезный для отладки, но открывать его наружу без аутентификации нельзя — он раскрывает структуру инфраструктуры.
Обслуживание Traefik минимально: он сам продлевает сертификаты, подхватывает новые контейнеры и убирает исчезнувшие. Обновление самого прокси — смена тега образа и docker compose up -d, но перед мажорным апдейтом читайте примечания к версии: синтаксис меток между крупными версиями менялся, поэтому фиксируйте конкретный тег (traefik:v3.1), а не latest. По мере роста числа сервисов автоматизация экономит всё больше ручной работы, а когда контейнеров и трафика становится больше, чем тянет сервер, это видно по метрикам — и служит поводом взять VPS помощнее. У MAATRIX апгрейд доступен без смены провайдера, с оплатой из России картой или криптой.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Чем Traefik на Ubuntu 24.04 удобнее ручной настройки Nginx?
Он автоматически обнаруживает контейнеры Docker и настраивает маршруты и сертификаты по их меткам, без отдельных конфигов и перезапуска прокси на каждое изменение.
Почему сервис не проксируется, хотя метки есть?
Скорее всего он не в общей сети с Traefik или не выставлена метка traefik.enable=true; подключите его к внешней сети web и проверьте метки.
Почему Traefik не выпускает сертификат?
Частая причина — права на acme.json: задайте chmod 600; также проверьте A-запись домена и открытый порт 80 для ACME.
Как оплатить VPS под Traefik из России?
У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой или токеном MAAT, иностранная карта не требуется.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.