Files
second-mind-aep/Мой сервер/Обзор инфраструктуры.md
2025-08-04 14:26:29 +04:00

11 KiB
Raw Blame History

Обзор инфраструктуры 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

Authelia Authentication

Уровень приложений

Second Mind

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

  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

# 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/Развертывание - Базовая инфраструктура
  2. Мой сервер/Authelia Authentication/Развертывание - Система аутентификации
  3. Мой сервер/Git Service/Развертывание - Git сервер
  4. Мой сервер/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: Оптимизированные подключения к БД

Связанные документы

Компоненты инфраструктуры

Прикладные сервисы

Развертывание и администрирование