Установка и настройка Traefik на CentOS 8
Что вы получите
- Рабочий Traefik как обратный прокси и балансировщик нагрузки
- Автоматическое получение сертификатов Let’s Encrypt
- Примеры конфигурации traefik.toml и docker-compose.yml
Требования
- Сервер с CentOS 8.
- Домен, указывающий на IP сервера.
- Доступ root или пользователя с sudo.
Важно: в примерах используется Traefik 1.7.x (как в исходном руководстве). Для новых проектов рассмотрите Traefik v2 — конфигурация и ключи отличаются.
Установка Docker и Docker Compose
По умолчанию Docker нет в репозитории CentOS 8 — добавим репозиторий Docker CE и установим пакет.
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoУстановите Docker:
dnf install docker-ce --nobest -y
systemctl start docker
systemctl enable dockerУстановите curl и Docker Compose (в примере указан релиз 1.25.0):
dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-composeСовет: можно установить docker-compose-plugin (v2) через dnf или использовать Docker Compose V2 как плагин, если ваша инфраструктура это поддерживает.
Создание Docker‑сети
Traefik и ваши приложения должны быть в общей bridge‑сети, чтобы Traefik мог обнаруживать контейнеры.
docker network create webПроверьте сети:
docker network lsОжидаемый вывод (пример):
NETWORK ID NAME DRIVER SCOPE
76a9475e5ab0 bridge bridge local
2a3d79f64747 host host local
4c9123229eaa none null local
0b6e010b43d0 web bridge localПодготовка к настройке Traefik
Установим утилиту для создания HTTP‑хэша пароля и создадим зашифрованный пароль для панели.
dnf install httpd-tools -y
htpasswd -nb admin my_passwordКоманда выдаст строку вида:
admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0Скопируйте эту строку — она будет вставлена в конфигурацию Traefik.
Конфигурация traefik.toml
Создайте файл конфигурации:
nano traefik.tomlВставьте (замените domain, email и пароль на свои значения):
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.dashboard]
address = ":8080"
[entryPoints.dashboard.auth]
[entryPoints.dashboard.auth.basic]
users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[api]
entrypoint="dashboard"
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[docker]
domain = "traefik.linuxbuz.com"
watch = true
network = "web"Сохраните файл. Затем создайте файл для хранения данных Let’s Encrypt и установите права доступа:
touch acme.json
chmod 600 acme.jsonСоздание docker-compose.yml
Создайте файл docker-compose.yml:
nano docker-compose.ymlВставьте конфигурацию Traefik (сохраняйте сеть web как external):
version: '3'
services:
traefik:
image: traefik:1.7.21-alpine
command: --docker --docker.domain=linuxbuz.com
ports:
- 80:80
- 443:443
networks:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
labels:
- "traefik.frontend.rule=Host:traefik.linuxbuz.com"
- "traefik.port=8080"
container_name: traefik
restart: always
networks:
web:
external: trueСохраните файл.
Запуск контейнера Traefik
Запустите стек в фоне:
docker-compose up -dПример вывода при загрузке образа:
Unable to find image 'traefik:1.7.21-alpine' locally
1.7.21-alpine: Pulling from library/traefik
...
Status: Downloaded newer image for traefik:1.7.21-alpineПроверьте контейнеры:
docker psОжидаемый пример:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7604696507a5 traefik:1.7.21-alpine "/entrypoint.sh --do…" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp traefikДоступ к веб‑интерфейсу Traefik
Откройте в браузере https://traefik.linuxbuz.com и введите учётные данные admin + пароль, который вы сгенерировали.

После входа вы увидите панель управления и статистику активности.


Типовые проблемы и их решения
- Панель не открывается по HTTPS: проверьте, что DNS указывает на IP сервера и что порт 443 открыт в фаерволе.
- Let’s Encrypt не выдаёт сертификат: убедитесь, что запись A для домена доступна извне и что httpChallenge настроен на порт 80.
- Traefik не видит контейнеры: проверьте, что контейнеры находятся в сети web и что Docker сокет подключён в volumes.
Альтернативные подходы
- Использовать Traefik v2: имеет более гибкую конфигурацию routers/services/middlewares.
- Использовать Nginx или HAProxy, если вы предпочитаете файлную конфигурацию или функциональность, специфичную для Nginx.
- Управлять сертификатами вручную или через certbot, если вы не хотите автоматизировать ACME.
Когда этот подход не подходит
- Если вам нужна тонкая маршрутизация на уровне приложения (L7) с нестандартными правилами — рассмотрите сервис‑mesh.
- На очень старых системах или в окружениях без Docker этот метод неприменим.
Мини‑методология развертывания (быстрая чек‑схема)
- Подготовить сервер и DNS.
- Установить Docker и Docker Compose.
- Создать Docker‑сеть web.
- Настроить traefik.toml и создать acme.json.
- Создать docker‑compose.yml и запустить docker-compose up -d.
- Проверить панель и сертификаты.
Контрольные списки по ролям
- Администратор сервера:
- Проверить DNS и firewall
- Установить Docker и права для пользователя
- DevOps:
- Настроить traefik.toml и docker‑compose.yml
- Автоматизировать резервное копирование acme.json
- Разработчик:
- Убедиться, что сервисы выставляют нужные label’ы для Traefik
- Тестировать маршрутизацию и HTTPS
Краткий словарь (1‑строчные определения)
- Traefik: легковесный обратный прокси и load balancer для микросервисов.
- Reverse proxy: прокси, принимающее запросы от клиентов и перенаправляющее их на бэкенды.
- ACME: протокол для автоматического получения TLS‑сертификатов (используется Let’s Encrypt).
- Docker‑сеть bridge: виртуальная сеть для связи контейнеров на одном хосте.
Рекомендуемые тесты и критерии приёмки
- Панель Traefik доступна по HTTPS и требует аутентификацию.
- Для тестового сервиса сертификат выдан Let’s Encrypt и доверяется браузером.
- Traefik видит запущенные контейнеры в сети web и корректно маршрутизирует запросы.
Пример принятия: быстрый smoke‑test
- Запустите простой nginx‑контейнер в сети web с меткой Host:example.yourdomain
- Откройте https://example.yourdomain — должен ответить nginx по HTTPS
- Проверить в панели Traefik, что backend виден и healthy
Решение проблем и откат (rollback)
- Если после изменений Traefik перестал работать: остановите стек docker-compose down, верните предыдущие файлы traefik.toml и acme.json (из резервной копии) и запустите docker-compose up -d.
Простая схема принятия решения (Mermaid)
flowchart TD
A[Нужно обратное проксирование?] -->|Да| B{Есть Docker?}
B -->|Да| C[Использовать Traefik]
B -->|Нет| D[Использовать Nginx/HAProxy]
A -->|Нет| E[Traefik не нужен]Заключение
Поздравляем — вы установили и настроили Traefik на CentOS 8. Traefik упрощает управление маршрутами и сертификатами для множества приложений, запущенных на одном хосте. Для дальнейших шагов проверьте документацию Traefik (особенно если планируете перейти на Traefik v2) и автоматизируйте развёртывание через CI/CD.
Короткие рекомендации: держите acme.json в резерве, используйте уникальные пароли для панели и продумывайте политику обновления образов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента