9.5 KiB
9.5 KiB
Описание
Инфраструктурные сервисы обеспечивают базовую функциональность для всех приложений в экосистеме aepif.ru. Включают в себя reverse proxy с автоматическими SSL сертификатами и систему аутентификации.
Архитектура инфраструктуры
graph TB
A[Internet] --> B[Traefik Reverse Proxy]
B --> C[Authelia Auth Service]
B --> D[Second Mind]
B --> E[Other Services]
C --> F[Redis Session Store]
C --> G[SQLite User Database]
B --> H[Let's Encrypt]
H --> I[SSL Certificates]
subgraph "Network: proxy"
B
C
D
E
end
subgraph "Auth Network"
C
F
end
Основные компоненты
Traefik Reverse Proxy
- Назначение: Централизованная маршрутизация трафика
- Домен:
traefik.aepif.ru(dashboard) - Порты:
- 80 (HTTP) → автоматический редирект на HTTPS
- 443 (HTTPS)
- 2222 (SSH для Git)
- 8080 (Dashboard)
- Функции:
- Автоматическое получение SSL сертификатов от Let's Encrypt
- Load balancing между контейнерами
- TCP и HTTP маршрутизация
- Middleware для аутентификации
Authelia Authentication
- Назначение: Централизованная аутентификация и авторизация
- Домен:
auth.aepif.ru - Технология: Forward Auth middleware
- Функции:
- Single Sign-On (SSO) для всех сервисов
- Two-factor authentication (TOTP)
- Session management через Redis
- Политики доступа по доменам
Redis Session Store
- Назначение: Хранение пользовательских сессий
- Технология: Redis 7 Alpine
- Особенности:
- Персистентное хранение сессий
- Защита паролем
- Быстрый доступ к данным сессий
Структура проектов
Reverse Proxy
/DOCKER/reverse-proxy/
├── docker-compose.yml # Конфигурация Traefik
├── .env # Переменные окружения
└── volumes/
└── traefik_data/ # ACME сертификаты и конфиг
Authentication Service
/DOCKER/auth/
├── docker-compose.yml # Конфигурация Authelia + Redis
├── .env # Переменные окружения и секреты
└── authelia/ # Конфигурация Authelia
├── configuration.yml # Основная конфигурация
├── users_database.yml # База пользователей
├── db.sqlite3 # SQLite база данных
└── notification.txt # Файл уведомлений
Принцип работы
Маршрутизация запросов
- Пользователь обращается к любому поддомену
*.aepif.ru - Traefik перехватывает запрос и анализирует Host header
- Traefik проверяет, требуется ли аутентификация (middleware authelia)
- Если нужна аутентификация → перенаправление на
auth.aepif.ru - Authelia проверяет сессию или запрашивает логин/пароль
- После успешной аутентификации → возврат к исходному сервису
- Traefik проксирует запрос к целевому контейнеру
SSL сертификаты
- Let's Encrypt ACME автоматически получает сертификаты для новых доменов
- Traefik автоматически обновляет сертификаты перед истечением
- Все HTTP запросы автоматически перенаправляются на HTTPS
- Сертификаты сохраняются в volume для персистентности
Домены и маршрутизация
| Домен | Сервис | Аутентификация | Описание |
|---|---|---|---|
traefik.aepif.ru |
Traefik Dashboard | Нет* | Панель управления Traefik |
auth.aepif.ru |
Authelia | Bypass | Страница входа в систему |
notes.aepif.ru |
Second Mind | ✅ Authelia | Заметки с защитой |
git.aepif.ru |
Gitea | Bypass | Git-сервер (собственная авторизация) |
webhook.aepif.ru |
Webhook Service | Bypass | API для автоматизации |
*Dashboard Traefik в production должен быть защищен
Политики доступа
Конфигурация в Authelia
access_control:
default_policy: deny # По умолчанию запрещен доступ
rules:
- domain: notes.aepif.ru
policy: one_factor # Требует логин/пароль
- domain: git.aepif.ru
policy: bypass # Собственная авторизация Gitea
- domain: webhook.aepif.ru
policy: bypass # API с токеном
- domain: auth.aepif.ru
policy: bypass # Сама страница входа
Типы политик
- bypass: Доступ без аутентификации через Authelia
- one_factor: Требует логин/пароль
- two_factor: Требует логин/пароль + TOTP код
- deny: Полный запрет доступа
Пользователи и группы
Структура пользователей
users:
admin:
displayname: "Administrator"
password: "$argon2id$..." # Хешированный пароль
email: epifantsev1aa@gmail.com
groups:
- admins # Администраторская группа
- users # Базовая группа пользователей
Управление паролями
- Пароли хранятся в формате Argon2id (безопасное хеширование)
- Поддержка reset паролей через email уведомления
- Интеграция с TOTP для двухфакторной аутентификации
Безопасность
Уровни защиты
- SSL/TLS: Все соединения зашифрованы
- Forward Auth: Централизованная проверка аутентификации
- Session Management: Безопасное хранение сессий в Redis
- Password Hashing: Argon2id для хранения паролей
- Rate Limiting: Защита от брутфорса (3 попытки за 2 минуты)
- Session Expiration: Автоматическое истечение сессий
Настройки безопасности
regulation:
max_retries: 3 # Максимум попыток входа
find_time: 2m # Период для подсчета попыток
ban_time: 5m # Время блокировки
session:
expiration: 1h # Время жизни сессии
inactivity: 5m # Время неактивности до выхода
Мониторинг
Доступные метрики
- Traefik Dashboard: Статистика запросов, ошибок, времени ответа
- Authelia Logs: Попытки входа, ошибки аутентификации
- Redis Metrics: Использование памяти, количество ключей
- SSL Certificate Status: Статус и срок действия сертификатов
Health Checks
# Проверка Traefik
curl -I https://traefik.aepif.ru
# Проверка Authelia
curl -I https://auth.aepif.ru
# Проверка SSL сертификатов
openssl s_client -connect aepif.ru:443 -servername aepif.ru | openssl x509 -noout -dates
Преимущества архитектуры
- Централизация: Единая точка входа для всех сервисов
- Автоматизация SSL: Не нужно вручную управлять сертификатами
- Безопасность: Единая система аутентификации
- Масштабируемость: Легко добавлять новые сервисы
- Мониторинг: Централизованная статистика
- Zero Downtime: Обновления без простоя сервисов
Связанные документы
- Инфраструктура - Конфигурации - детальные настройки всех компонентов
- Инфраструктура - Развертывание - установка и первоначальная настройка
- Инфраструктура - Администрирование - обслуживание и мониторинг
- Second Mind - Обзор системы - основное приложение на этой инфраструктуре