vault backup: 2025-08-04 14:26:29

This commit is contained in:
Andrey Epifancev
2025-08-04 14:26:29 +04:00
parent 89db2cc763
commit 05f63cdf0e
20 changed files with 1450 additions and 1314 deletions

View File

@@ -0,0 +1,239 @@
## Описание
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 - Администрирование]]** - обслуживание и мониторинг