## Описание Traefik Reverse Proxy - центральный компонент инфраструктуры aepif.ru, обеспечивающий маршрутизацию трафика, автоматические SSL сертификаты и интеграцию с системой аутентификации. ## Архитектура системы ```mermaid graph TB A[Internet] --> B[Traefik v3.0] B --> C[Second Mind - notes.aepif.ru] B --> D[Gitea - git.aepif.ru] B --> E[Authelia - auth.aepif.ru] B --> F[Webhook Service - webhook.aepif.ru] B --> G[Traefik Dashboard - traefik.aepif.ru] H[Let's Encrypt] --> B I[Docker Socket] --> B subgraph "SSL Certificates" H J[ACME Storage] end subgraph "Service Discovery" I K[Docker Labels] end ``` ## Основные функции ### Reverse Proxy - **Назначение**: Централизованная точка входа для всех сервисов - **Технология**: Traefik v3.0 - **Порты**: - 80 (HTTP) - автоматический редирект на HTTPS - 443 (HTTPS) - основной трафик - 8080 - Dashboard (небезопасен в production) - 2222 - SSH для Git-сервера ### SSL Management - **Let's Encrypt**: Автоматическое получение и обновление сертификатов - **ACME Challenge**: TLS challenge для валидации доменов - **Автоматический редирект**: HTTP → HTTPS для всех сервисов - **Хранение**: Персистентные сертификаты в volume ### Service Discovery - **Docker Integration**: Автоматическое обнаружение сервисов через Docker API - **Label-based Configuration**: Настройка маршрутизации через Docker labels - **Dynamic Configuration**: Изменения конфигурации без перезапуска ## Конфигурация ### Docker Compose Основная конфигурация в `/DOCKER/reverse-proxy/docker-compose.yml`: ```yaml services: traefik: image: traefik:v3.0 command: - --api.dashboard=true - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --entrypoints.ssh.address=:2222 - --certificatesresolvers.letsencrypt.acme.tlschallenge=true ports: - "80:80" - "443:443" - "8080:8080" - "2222:2222" ``` ### Entrypoints - **web** (80): HTTP трафик с редиректом на HTTPS - **websecure** (443): HTTPS трафик - **ssh** (2222): TCP трафик для Git SSH ### Middlewares - **redirect-to-https**: Автоматический редирект HTTP → HTTPS - **authelia@docker**: Интеграция с Forward Auth ## Маршрутизация ### HTTP Routes | Домен | Сервис | Middleware | Порт | |-------|--------|------------|------| | `notes.aepif.ru` | Second Mind | authelia@docker | 80 | | `git.aepif.ru` | Gitea | - | 3000 | | `auth.aepif.ru` | Authelia | - | 9091 | | `webhook.aepif.ru` | Webhook Service | - | 3000 | | `traefik.aepif.ru` | Dashboard | - | api@internal | ### TCP Routes - **SSH Git Access**: `git.aepif.ru:2222` → Gitea container port 22 ## Сетевая архитектура ### Proxy Network ```yaml networks: proxy: name: proxy driver: bridge ``` Все сервисы, которые должны быть доступны через Traefik, подключаются к сети `proxy`. ### Labels Configuration Пример конфигурации сервиса через labels: ```yaml labels: - traefik.enable=true - traefik.http.routers.service.rule=Host(`service.aepif.ru`) - traefik.http.routers.service.tls.certresolver=letsencrypt - traefik.http.services.service.loadbalancer.server.port=80 ``` ## SSL Сертификаты ### Let's Encrypt Integration - **Email**: `your_email@aepif.ru` для уведомлений - **Challenge Type**: TLS Challenge - **Storage**: `/data/acme.json` в контейнере - **Автоматическое обновление**: Traefik обновляет сертификаты автоматически ### Wildcard Certificates Для поддержки wildcard сертификатов потребуется DNS Challenge с API ключами DNS провайдера. ## Dashboard ### Доступ - **URL**: `https://traefik.aepif.ru` - **Порт**: 8080 (insecure mode) - **Функции**: Мониторинг роутеров, сервисов, middleware ### Безопасность ⚠️ **Внимание**: Dashboard в текущей конфигурации доступен без аутентификации. В production рекомендуется: - Отключить insecure API (`--api.insecure=false`) - Добавить middleware для аутентификации - Ограничить доступ по IP ## Мониторинг ### Metrics - **Prometheus**: Встроенная поддержка метрик Prometheus - **Health Checks**: Автоматические проверки состояния backend сервисов - **Access Logs**: Детальные логи запросов ### Troubleshooting ```bash # Проверка статуса Traefik curl -I https://traefik.aepif.ru # Логи Traefik docker logs traefik -f # Проверка конфигурации docker exec traefik traefik version ``` ## Безопасность ### TLS Configuration - **Минимальная версия**: TLS 1.2 - **Cipher Suites**: Современные безопасные шифры - **HSTS**: HTTP Strict Transport Security headers ### Rate Limiting Можно настроить ограничение запросов через middleware: ```yaml labels: - traefik.http.middlewares.ratelimit.ratelimit.burst=100 - traefik.http.middlewares.ratelimit.ratelimit.average=50 ``` ## Производительность ### Load Balancing - **Алгоритм**: Round Robin (по умолчанию) - **Health Checks**: Автоматическое исключение неисправных backend'ов - **Connection Pooling**: Переиспользование соединений ### Caching - **Static Content**: Заголовки кеширования для статических файлов - **Compression**: Автоматическое сжатие ответов ## Структура файлов ``` /DOCKER/reverse-proxy/ ├── docker-compose.yml # Основная конфигурация Traefik └── volumes/ └── traefik_data/ # ACME сертификаты и данные └── acme.json # Let's Encrypt сертификаты ``` ## Интеграции ### Docker Integration - **Automatic Service Discovery**: Обнаружение сервисов через Docker API - **Label-based Configuration**: Настройка через labels в docker-compose - **Hot Reload**: Изменения применяются без перезапуска ### Authelia Integration - **Forward Auth**: Интеграция с Authelia для централизованной аутентификации - **Headers**: Передача информации о пользователе в backend сервисы ## Backup и восстановление ### Критически важные данные - **acme.json**: SSL сертификаты Let's Encrypt - **docker-compose.yml**: Конфигурация сервиса - **traefik.yml**: Статическая конфигурация (если используется) ### Процедура backup ```bash # Backup SSL сертификатов docker cp traefik:/data/acme.json ./backup/acme.json # Backup всего volume docker run --rm -v traefik_data:/data -v $(pwd):/backup alpine tar czf /backup/traefik_data.tar.gz -C /data . ``` ## Связанные сервисы - **[[Мой сервер/Authelia Authentication/Обзор системы|Authelia]]** - аутентификация через Forward Auth - **[[Мой сервер/Second Mind Setup/Обзор системы|Second Mind]]** - защищенный доступ к заметкам - **[[Мой сервер/Git Service/Обзор системы|Git Service]]** - HTTP и SSH доступ к Git ## Связанные документы - **[[Traefik Reverse Proxy - Конфигурации]]** - детальные настройки и параметры - **[[Traefik Reverse Proxy - Развертывание]]** - пошаговая установка - **[[Traefik Reverse Proxy - Администрирование]]** - обслуживание и мониторинг