# Обзор инфраструктуры aepif.ru ## Введение Данный документ представляет общий обзор инфраструктуры домена aepif.ru и служит связующим звеном между отдельными компонентами системы. ← **[[index|Вернуться к документации сервера]]** ## Архитектура высокого уровня ```mermaid 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 ```yaml 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 1. **User Request** → Traefik получает запрос к защищенному ресурсу 2. **Middleware Check** → Traefik проверяет Authelia middleware 3. **Auth Validation** → Authelia валидирует сессию в Redis 4. **Authentication** → При необходимости перенаправление на auth.aepif.ru 5. **Access Grant** → После успешной аутентификации доступ к ресурсу ### Content Publishing Flow 1. **Git Push** → Изменения отправляются в Git Service 2. **Webhook Trigger** → Git Service отправляет webhook 3. **Content Pull** → Webhook Service получает изменения 4. **Site Build** → Quartz генерирует статический сайт 5. **Content Deploy** → Nginx раздает обновленный контент ## Security Model ### Принципы безопасности - **Zero Trust**: Проверка каждого запроса - **Least Privilege**: Минимальные необходимые права - **Defense in Depth**: Многоуровневая защита - **Secure by Default**: Безопасные настройки по умолчанию ### Security Layers 1. **Network Level**: Firewall, isolated networks 2. **Transport Level**: TLS encryption, HSTS 3. **Application Level**: Authentication, authorization 4. **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 ```bash # 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 1. **Configuration Files**: All docker-compose.yml and config files 2. **SSL Certificates**: Traefik ACME data 3. **User Data**: Authelia user database and config 4. **Git Repositories**: Git Service data and PostgreSQL 5. **Application Data**: Second Mind built content ### Recovery Procedures 1. **Infrastructure**: Redeploy Traefik and Authelia 2. **Certificates**: Restore ACME data or let auto-renewal 3. **Services**: Redeploy application services 4. **Data**: Restore databases and repositories 5. **Testing**: Validate all services are functional ## Развертывание (High Level) ### Порядок развертывания 1. **[[Мой сервер/Traefik Reverse Proxy/Развертывание|Traefik Deployment]]** - Базовая инфраструктура 2. **[[Мой сервер/Authelia Authentication/Развертывание|Authelia Deployment]]** - Система аутентификации 3. **[[Мой сервер/Git Service/Развертывание|Git Service Deployment]]** - Git сервер 4. **[[Мой сервер/Second Mind Setup/Развертывание|Second Mind Deployment]]** - Система публикации ### 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/Администрирование]]** - Управление пользователями