Files
second-mind-aep/⚙️ Техническое/📖 Документация/Обзор инфраструктуры.md
Andrey Epifancev e96fec3709 Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками
- Добавлена система Inbox для быстрого захвата идей
- Созданы шаблоны для всех типов заметок с YAML метаданными
- Перенесен весь контент из старой структуры в новую
- Добавлен главный дашборд с динамическими запросами
- Создано подробное руководство по использованию системы
- Техническая документация реорганизована по типам

Основные улучшения:
 Inbox-first подход для новых заметок
 Тематическая организация по 8 областям знаний
 Шаблоны с метаданными для структурированности
 Система связей между заметками
 Динамические дашборды с аналитикой
 Централизованная техническая документация без дублирования
2025-08-09 22:11:50 +04:00

259 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Обзор инфраструктуры 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/Администрирование]]** - Управление пользователями