- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
239 lines
8.8 KiB
Markdown
239 lines
8.8 KiB
Markdown
## Описание
|
||
|
||
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 - Администрирование]]** - обслуживание и мониторинг |