# 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 записи: ```bash # 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 ```bash # Создаем external сеть для всех сервисов docker network create proxy # Проверяем создание docker network ls | grep proxy ``` ### Важность proxy сети Сеть `proxy` позволяет: - Изолировать веб-трафик от внутренних сетей - Автоматически подключать сервисы к Traefik - Обеспечить безопасность через сегментацию сети ## Подготовка файлов ### Шаг 2: Создание директории ```bash # Создаем рабочую директорию mkdir -p /docker/reverse-proxy cd /docker/reverse-proxy ``` ### Шаг 3: Создание docker-compose.yml ```yaml 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 ```bash # Переходим в директорию с конфигурацией cd /docker/reverse-proxy # Запускаем в detached режиме docker-compose up -d # Проверяем статус docker-compose ps ``` ### Шаг 5: Проверка логов ```bash # Смотрим логи запуска docker-compose logs -f traefik # Должны увидеть сообщения о: # - Создании routers и services # - Успешном запуске API # - Подключении к Docker provider ``` ## Проверка работоспособности ### Шаг 6: Тестирование Dashboard ```bash # Проверяем доступность Dashboard curl -I http://YOUR_SERVER_IP:8080 # Проверяем HTTPS редирект curl -I http://traefik.aepif.ru # Должен вернуть 301/302 редирект на HTTPS ``` ### Шаг 7: Проверка SSL сертификатов ```bash # Проверяем получение 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) ```bash # Разрешаем необходимые порты 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 ``` ## Мониторинг и диагностика ### Проверка состояния ```bash # Статус контейнера 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 сертификаты ## Устранение проблем ### Проблема: Сертификат не получается ```bash # Проверяем DNS записи nslookup traefik.aepif.ru # Проверяем доступность порта 443 извне telnet YOUR_SERVER_IP 443 # Смотрим логи ACME docker logs traefik | grep acme ``` ### Проблема: Dashboard недоступен ```bash # Проверяем, что контейнер запущен docker ps | grep traefik # Проверяем порт netstat -tulpn | grep :8080 # Проверяем логи docker logs traefik --tail 50 ``` ### Проблема: Сервисы не обнаруживаются ```bash # Проверяем сеть proxy docker network inspect proxy # Проверяем подключение Traefik к Docker socket docker logs traefik | grep docker # Проверяем labels сервисов docker inspect SERVICE_CONTAINER | grep -A 10 Labels ``` ## Безопасность после установки ### Рекомендации по безопасности 1. **Закрыть порт 8080**: Настроить аутентификацию для Dashboard 2. **Ограничить доступ к Docker socket**: Использовать Docker socket proxy 3. **Настроить логирование**: Централизованный сбор логов 4. **Мониторинг**: Настроить алерты на проблемы с сертификатами ### Закрытие небезопасного Dashboard После настройки всех сервисов, отредактируйте docker-compose.yml: ```yaml command: - --api.dashboard=true # Убираем эту строку: # - --api.insecure=true ``` И добавьте middleware для аутентификации: ```yaml labels: - traefik.http.routers.traefik.middlewares=authelia@docker ``` ## Следующие шаги После успешного развертывания Traefik: 1. **[[../Authelia Authentication/Развертывание]]** - Настройка аутентификации 2. **[[../Git Service/Развертывание]]** - Развертывание Git сервера 3. **[[../Second Mind Setup/Развертывание]]** - Настройка системы заметок 4. **[[Администрирование]]** - Ежедневное управление ## Автоматизация развертывания ### Скрипт развертывания ```bash #!/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/Развертывание]]** - следующий шаг развертывания