11 KiB
11 KiB
Обзор инфраструктуры aepif.ru
Введение
Данный документ представляет общий обзор инфраструктуры домена aepif.ru и служит связующим звеном между отдельными компонентами системы.
← index
Архитектура высокого уровня
graph TB
A[Internet] --> B[Traefik Reverse Proxy]
B --> C[Authelia Authentication]
B --> D[Second Mind - notes.aepif.ru]
B --> E[Git Service - git.aepif.ru]
B --> F[Webhook Service - webhook.aepif.ru]
C --> G[Redis Session Store]
C --> H[User Database]
E --> I[PostgreSQL Database]
E --> J[Git Repositories]
D --> K[Nginx Static Server]
D --> L[Quartz Builder]
F --> L
F --> J
subgraph "Infrastructure Layer"
B
C
G
end
subgraph "Application Layer"
D
E
F
end
subgraph "Data Layer"
H
I
J
K
end
Принципы архитектуры
Микросервисная архитектура
- Разделение ответственности: Каждый сервис выполняет специфическую функцию
- Независимое развертывание: Сервисы можно обновлять и масштабировать независимо
- Контейнеризация: Все сервисы работают в Docker контейнерах
- Service Discovery: Автоматическое обнаружение сервисов через Docker
Централизованная инфраструктура
- Single Point of Entry: Traefik как единая точка входа
- Unified Authentication: Authelia для всех защищенных сервисов
- Automated SSL: Let's Encrypt для всех доменов
- Shared Networks: Общие Docker сети для взаимодействия
DevOps практики
- Infrastructure as Code: Конфигурация через docker-compose файлы
- Automated Deployment: Git-based deployment для заметок
- Monitoring: Централизованный мониторинг через Traefik Dashboard
- Security First: Принцип минимальных привилегий и защита по умолчанию
Компоненты системы
Уровень инфраструктуры
Traefik Reverse Proxy
- Роль: Центральный маршрутизатор трафика
- Документация: Мой сервер/Traefik Reverse Proxy/Обзор системы
- Функции: SSL termination, load balancing, service discovery
- Интеграции: Docker API, Let's Encrypt, Authelia middleware
Authelia Authentication
- Роль: Централизованная аутентификация и авторизация
- Документация: Мой сервер/Authelia Authentication/Обзор системы
- Функции: SSO, 2FA, access control, session management
- Интеграции: Traefik Forward Auth, Redis, file-based users
Уровень приложений
Second Mind
- Роль: Система публикации заметок Obsidian
- Документация: Мой сервер/Second Mind Setup/Обзор системы
- Функции: Статическая генерация сайта, webhook processing
- Интеграции: Git Service, Quartz, Nginx
Git Service
- Роль: Централизованное хранение кода и документации
- Документация: Мой сервер/Git Service/Обзор системы
- Функции: Git repositories, web interface, webhook notifications
- Интеграции: PostgreSQL, Traefik, SSH access
Сетевая архитектура
Docker Networks
Proxy Network
networks:
proxy:
name: proxy
driver: bridge
external: true
- Назначение: Связывает все публичные сервисы с Traefik
- Подключенные сервисы: Traefik, Authelia, Second Mind, Git Service
- Безопасность: Изолированная сеть для веб-трафика
Internal Networks
- auth_default: Внутренняя сеть для Authelia и Redis
- git_default: Внутренняя сеть для Git Service и PostgreSQL
- second-mind_default: Внутренняя сеть для Second Mind компонентов
Port Mapping
| Порт | Сервис | Протокол | Назначение |
|---|---|---|---|
| 80 | Traefik | HTTP | Редирект на HTTPS |
| 443 | Traefik | HTTPS | Основной веб-трафик |
| 2222 | Traefik → Git | SSH | Git operations |
| 8080 | Traefik | HTTP | Dashboard (insecure) |
Управление доменами
Domain Structure
aepif.ru
├── notes.aepif.ru → Second Mind (защищено Authelia)
├── git.aepif.ru → Git Service (собственная авторизация)
├── auth.aepif.ru → Authelia (публичная страница входа)
├── webhook.aepif.ru → Webhook Service (API без авторизации)
└── traefik.aepif.ru → Traefik Dashboard (небезопасно)
SSL Certificate Management
- Провайдер: Let's Encrypt ACME
- Challenge Type: TLS Challenge
- Автоматическое обновление: Traefik управляет жизненным циклом
- Хранение: Persistent volume в Traefik контейнере
Data Flow
User Authentication Flow
- User Request → Traefik получает запрос к защищенному ресурсу
- Middleware Check → Traefik проверяет Authelia middleware
- Auth Validation → Authelia валидирует сессию в Redis
- Authentication → При необходимости перенаправление на auth.aepif.ru
- Access Grant → После успешной аутентификации доступ к ресурсу
Content Publishing Flow
- Git Push → Изменения отправляются в Git Service
- Webhook Trigger → Git Service отправляет webhook
- Content Pull → Webhook Service получает изменения
- Site Build → Quartz генерирует статический сайт
- Content Deploy → Nginx раздает обновленный контент
Security Model
Принципы безопасности
- Zero Trust: Проверка каждого запроса
- Least Privilege: Минимальные необходимые права
- Defense in Depth: Многоуровневая защита
- Secure by Default: Безопасные настройки по умолчанию
Security Layers
- Network Level: Firewall, isolated networks
- Transport Level: TLS encryption, HSTS
- Application Level: Authentication, authorization
- Data Level: Encrypted storage, secure secrets
Access Control
- Public Access: webhook.aepif.ru (API with token)
- Bypass Authelia: git.aepif.ru, auth.aepif.ru
- Protected by Authelia: notes.aepif.ru
- Admin Only: traefik.aepif.ru (должен быть защищен в production)
Monitoring и Observability
Available Metrics
- Traefik Dashboard: Request metrics, response times, error rates
- Container Logs: Application logs через
docker logs - Health Checks: Automatic service health monitoring
- SSL Certificate Status: Expiration monitoring
Monitoring Endpoints
# Health checks
curl -I https://notes.aepif.ru/health
curl -I https://git.aepif.ru/
curl -I https://auth.aepif.ru/api/health
# Traefik metrics
curl https://traefik.aepif.ru/api/rawdata
Disaster Recovery
Backup Strategy
- Configuration Files: All docker-compose.yml and config files
- SSL Certificates: Traefik ACME data
- User Data: Authelia user database and config
- Git Repositories: Git Service data and PostgreSQL
- Application Data: Second Mind built content
Recovery Procedures
- Infrastructure: Redeploy Traefik and Authelia
- Certificates: Restore ACME data or let auto-renewal
- Services: Redeploy application services
- Data: Restore databases and repositories
- Testing: Validate all services are functional
Развертывание (High Level)
Порядок развертывания
- Мой сервер/Traefik Reverse Proxy/Развертывание - Базовая инфраструктура
- Мой сервер/Authelia Authentication/Развертывание - Система аутентификации
- Мой сервер/Git Service/Развертывание - Git сервер
- Мой сервер/Second Mind Setup/Развертывание - Система публикации
Prerequisites
- Docker и Docker Compose
- Доступ к серверу с публичным IP
- Настроенные DNS записи для всех поддоменов
- Открытые порты 80, 443, 2222
Масштабирование
Horizontal Scaling
- Load Balancing: Traefik поддерживает несколько backend instances
- Database Scaling: PostgreSQL можно масштабировать с репликами
- Static Content: CDN для Second Mind статического контента
Performance Optimization
- Caching: Nginx кеширование статического контента
- Compression: Gzip compression в Traefik/Nginx
- Connection Pooling: Оптимизированные подключения к БД
Связанные документы
Компоненты инфраструктуры
- Traefik Reverse Proxy/Обзор системы - Reverse proxy и SSL
- Authelia Authentication/Обзор системы - Аутентификация и авторизация
Прикладные сервисы
- Second Mind Setup/Обзор системы - Система публикации заметок
- Git Service/Обзор системы - Git сервер и репозитории
Развертывание и администрирование
- Traefik Reverse Proxy/Администрирование - Управление трафиком
- Authelia Authentication/Администрирование - Управление пользователями