Як налаштувати Traefik для Docker: Повний гід для новачків

Що таке Traefik і навіщо він потрібен?

Уявіть, що у вас є сервер, на якому працює кілька веб-додатків у Docker контейнерах. Кожен додаток має свій порт, і вам треба:

  • Підключити SSL сертифікати для HTTPS
  • Налаштувати домени для кожного додатку
  • Керувати маршрутизацією трафіку

Traefik – це “розумний шлюз”, який автоматично виконує всі ці завдання за вас.

Як це працює?

Стара схема (без Traefik):

Нова схема (з Traefik):

Переваги Traefik

Автоматичний SSL – Let’s Encrypt сертифікати отримуються та оновлюються автоматично ✅ Один Traefik для багатьох додатків – можна запустити 10 різних проєктів з різними доменами ✅ Не треба редагувати конфіги – просто додаєте labels до контейнера ✅ Автоматичне виявлення – Traefik сам знаходить нові контейнери Docker

Структура проєкту

Після налаштування у вас буде така структура:

Крок 1: Створюємо окремий docker-compose для Traefik

Створіть файл docker-compose-traefik.yml у вашій папці проєкту:

📝 Пояснення:

  • ports – відкриваємо порти 80 (HTTP) та 443 (HTTPS)
  • /var/run/docker.sock – дозволяє Traefik бачити всі Docker контейнери
  • networks: web – спільна мережа для всіх додатків
  • labels – налаштування Dashboard (веб-панелі керування Traefik)

Крок 2: Створюємо конфігураційний файл Traefik

Створіть папку traefik та файл traefik/traefik.yml:

📝 Пояснення:

  • entryPoints – точки входу (порти 80 і 443)
  • redirections – автоматично перенаправляє HTTP на HTTPS
  • providers.docker – Traefik автоматично знаходить Docker контейнери
  • exposedByDefault: false – контейнери треба вручну вмикати через labels
  • certificatesResolvers – налаштування Let’s Encrypt для SSL
  • httpChallenge – спосіб перевірки домену (найпростіший, не потребує API ключів)

Крок 3: Оновлюємо ваш docker-compose

У вашому файлі docker-compose-php83_delta.yml змініть тільки labels у сервісі nginx:

❌ Було:

✅ Стало:

📝 Пояснення labels:

  • traefik.enable=true – увімкнути Traefik для цього контейнера
  • rule=Host(telegram.crumpel.site) – який домен веде до цього контейнера
  • entrypoints=https – використовувати HTTPS (порт 443)
  • tls=true – увімкнути SSL
  • certresolver=letsencrypt – використовувати Let’s Encrypt для SSL сертифікатів
  • loadbalancer.server.port=80 – внутрішній порт контейнера (nginx слухає на порті 80)

Крок 4: Підготовка на сервері

Виконайте наступні команди на вашому сервері:

📝 Пояснення:

  • acme.json – тут зберігаються SSL сертифікати
  • chmod 600 – тільки власник файлу може читати/писати (вимога Let’s Encrypt)
  • docker network create web – створює спільну мережу для всіх контейнерів

Крок 5: Налаштування DNS

У панелі керування вашим доменом (ukraine.com.ua) додайте A-записи:

⏱️ Час очікування:

DNS зміни можуть застосовуватися від 5 хвилин до 24 годин.

Перевірити чи пропрацювали зміни можна командою:

Крок 6: Перевірка файрволу

Переконайтеся що порти 80 і 443 відкриті на сервері:

Крок 7: Запуск!

Тепер запустіть все разом:

📝 Порядок важливий!

Traefik повинен запуститися першим, інакше інші контейнери не зможуть до нього підключитися.

Крок 8: Перевірка

Через 1-2 хвилини після запуску:

  1. Перевірте сайт: https://telegram.crumpel.site
  2. Перевірте Dashboard: https://traefik.crumpel.site (логін: admin, пароль: password)

Що має працювати:

✅ Сайт відкривається з HTTPS
✅ Браузер показує зелений замочок (валідний SSL сертифікат)
✅ HTTP автоматично перенаправляє на HTTPS
✅ Dashboard показує активні роутери та сервіси

Типові проблеми та рішення

❌ Проблема: “SSL certificate problem”

Причина: Let’s Encrypt ще не видав сертифікат

Рішення:


❌ Проблема: “502 Bad Gateway”

Причина: Traefik не може підключитися до nginx

Рішення:


❌ Проблема: “404 page not found”

Причина: Traefik не знайшов роутер

Рішення:


❌ Проблема: DNS не резолвиться

Причина: DNS зміни ще не пропрацювали

Рішення:

Додавання нових доменів

Хочете додати ще один домен? Просто додайте labels до нового контейнера:

Traefik автоматично знайде новий контейнер і налаштує для нього SSL!

Моніторинг через Dashboard

Traefik має вбудований Dashboard де ви можете:

  • Бачити всі активні роутери
  • Перевіряти статус SSL сертифікатів
  • Дивитися метрики трафіку
  • Знаходити помилки в конфігурації

Доступ: https://traefik.crumpel.site (логін: admin, пароль: password)

Як згенерувати свій пароль для Dashboard:

Корисні команди

Оновлення Traefik

Безпека

🔒 Рекомендації:

  1. Змініть пароль Dashboard – не використовуйте дефолтний admin:password
  2. Обмежте доступ до Dashboard за IP (додайте middleware)
  3. Регулярно оновлюйте Traefik до останньої версії
  4. Перевіряйте логи на підозрілу активність

Приклад обмеження доступу за IP:

Підсумок

Тепер у вас:

✅ Traefik автоматично керує SSL сертифікатами
✅ Всі HTTP запити перенаправляються на HTTPS
✅ Можна легко додавати нові домени через labels
✅ Все працює через єдину точку входу (порти 80/443)
✅ Є веб-інтерфейс для моніторингу

Що далі?

  • Налаштуйте моніторинг (Prometheus + Grafana)
  • Додайте rate limiting для захисту від DDoS
  • Налаштуйте автоматичне резервне копіювання acme.json
  • Додайте middleware для безпеки (headers, compression)

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *