9.8 KiB
9.8 KiB
Traefik Reverse Proxy - Развертывание
Предварительные требования
Системные требования
- Docker: версия 20.10+
- Docker Compose: версия 2.0+
- Операционная система: Linux (Ubuntu 20.04+ рекомендуется)
- RAM: минимум 512MB для Traefik
- Дисковое пространство: 1GB для логов и SSL сертификатов
Сетевые требования
- Публичный IP: Для Let's Encrypt ACME challenge
- Открытые порты: 80, 443, 2222 (для SSH Git), 8080 (Dashboard)
- Доступ к DNS: Для настройки A-записей
DNS настройка
Перед развертыванием настройте DNS записи:
# A записи для всех поддоменов
traefik.aepif.ru IN A YOUR_SERVER_IP
auth.aepif.ru IN A YOUR_SERVER_IP
notes.aepif.ru IN A YOUR_SERVER_IP
git.aepif.ru IN A YOUR_SERVER_IP
webhook.aepif.ru IN A YOUR_SERVER_IP
Создание сети proxy
Шаг 1: Создание Docker network
# Создаем external сеть для всех сервисов
docker network create proxy
# Проверяем создание
docker network ls | grep proxy
Важность proxy сети
Сеть proxy позволяет:
- Изолировать веб-трафик от внутренних сетей
- Автоматически подключать сервисы к Traefik
- Обеспечить безопасность через сегментацию сети
Подготовка файлов
Шаг 2: Создание директории
# Создаем рабочую директорию
mkdir -p /docker/reverse-proxy
cd /docker/reverse-proxy
Шаг 3: Создание docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
# API и Dashboard
- --api.dashboard=true
- --api.insecure=true
# Docker Provider
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
# Entrypoints
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
# SSL Configuration - ЗАМЕНИТЕ EMAIL!
- --certificatesresolvers.letsencrypt.acme.email=YOUR_EMAIL@domain.com
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
# Logging
- --log.level=INFO
- --accesslog=true
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "2222:2222"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.aepif.ru`)
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
- traefik.http.routers.traefik.service=api@internal
# Global HTTP to HTTPS redirect
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
restart: unless-stopped
volumes:
traefik_data:
networks:
proxy:
external: true
⚠️ Важно: Замените YOUR_EMAIL@domain.com на свой email адрес!
Первый запуск
Шаг 4: Запуск Traefik
# Переходим в директорию с конфигурацией
cd /docker/reverse-proxy
# Запускаем в detached режиме
docker-compose up -d
# Проверяем статус
docker-compose ps
Шаг 5: Проверка логов
# Смотрим логи запуска
docker-compose logs -f traefik
# Должны увидеть сообщения о:
# - Создании routers и services
# - Успешном запуске API
# - Подключении к Docker provider
Проверка работоспособности
Шаг 6: Тестирование Dashboard
# Проверяем доступность Dashboard
curl -I http://YOUR_SERVER_IP:8080
# Проверяем HTTPS редирект
curl -I http://traefik.aepif.ru
# Должен вернуть 301/302 редирект на HTTPS
Шаг 7: Проверка SSL сертификатов
# Проверяем получение SSL сертификата
curl -I https://traefik.aepif.ru
# Проверяем детали сертификата
openssl s_client -connect traefik.aepif.ru:443 -servername traefik.aepif.ru | openssl x509 -noout -text
Настройка firewall
Шаг 8: Конфигурация UFW (Ubuntu)
# Разрешаем необходимые порты
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 2222/tcp # Git SSH
sudo ufw allow 8080/tcp # Dashboard (временно)
# Включаем firewall
sudo ufw enable
# Проверяем статус
sudo ufw status
Мониторинг и диагностика
Проверка состояния
# Статус контейнера
docker ps | grep traefik
# Использование ресурсов
docker stats traefik --no-stream
# Логи в реальном времени
docker logs traefik -f
Dashboard интерфейс
- URL: http://YOUR_SERVER_IP:8080 или https://traefik.aepif.ru
- Разделы:
- HTTP Routers: Настроенные маршруты
- HTTP Services: Backend сервисы
- HTTP Middlewares: Промежуточное ПО
- TLS: SSL сертификаты
Устранение проблем
Проблема: Сертификат не получается
# Проверяем DNS записи
nslookup traefik.aepif.ru
# Проверяем доступность порта 443 извне
telnet YOUR_SERVER_IP 443
# Смотрим логи ACME
docker logs traefik | grep acme
Проблема: Dashboard недоступен
# Проверяем, что контейнер запущен
docker ps | grep traefik
# Проверяем порт
netstat -tulpn | grep :8080
# Проверяем логи
docker logs traefik --tail 50
Проблема: Сервисы не обнаруживаются
# Проверяем сеть proxy
docker network inspect proxy
# Проверяем подключение Traefik к Docker socket
docker logs traefik | grep docker
# Проверяем labels сервисов
docker inspect SERVICE_CONTAINER | grep -A 10 Labels
Безопасность после установки
Рекомендации по безопасности
- Закрыть порт 8080: Настроить аутентификацию для Dashboard
- Ограничить доступ к Docker socket: Использовать Docker socket proxy
- Настроить логирование: Централизованный сбор логов
- Мониторинг: Настроить алерты на проблемы с сертификатами
Закрытие небезопасного Dashboard
После настройки всех сервисов, отредактируйте docker-compose.yml:
command:
- --api.dashboard=true
# Убираем эту строку:
# - --api.insecure=true
И добавьте middleware для аутентификации:
labels:
- traefik.http.routers.traefik.middlewares=authelia@docker
Следующие шаги
После успешного развертывания Traefik:
- ../Authelia Authentication/Развертывание - Настройка аутентификации
- ../Git Service/Развертывание - Развертывание Git сервера
- ../Second Mind Setup/Развертывание - Настройка системы заметок
- Администрирование - Ежедневное управление
Автоматизация развертывания
Скрипт развертывания
#!/bin/bash
# deploy-traefik.sh
set -e
echo "🚀 Развертывание Traefik Reverse Proxy"
# Проверяем Docker
if ! command -v docker &> /dev/null; then
echo "❌ Docker не установлен"
exit 1
fi
# Создаем сеть
docker network create proxy 2>/dev/null || echo "Сеть proxy уже существует"
# Создаем директорию
mkdir -p /docker/reverse-proxy
cd /docker/reverse-proxy
# Запрашиваем email
read -p "📧 Введите email для Let's Encrypt: " ACME_EMAIL
# Создаем docker-compose.yml с введенным email
cat > docker-compose.yml << EOF
# Вставляем конфигурацию с заменой email
EOF
# Запускаем
docker-compose up -d
echo "✅ Traefik развернут успешно"
echo "🌐 Dashboard: http://$(curl -s ipinfo.io/ip):8080"
Связанные документы
- Конфигурации - детальные настройки конфигурации
- Администрирование - управление и мониторинг
- ../Authelia Authentication/Развертывание - следующий шаг развертывания