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