✨ Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
This commit is contained in:
@@ -0,0 +1,314 @@
|
||||
## Описание
|
||||
|
||||
Authelia Authentication - централизованная система аутентификации и авторизации для всех сервисов экосистемы aepif.ru. Обеспечивает Single Sign-On (SSO), двухфакторную аутентификацию и гранулярное управление доступом.
|
||||
|
||||
## Архитектура системы
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
A[User Request] --> B[Traefik Reverse Proxy]
|
||||
B --> C{Authelia Middleware}
|
||||
C -->|Authenticated| D[Target Service]
|
||||
C -->|Not Authenticated| E[Authelia Login Page]
|
||||
|
||||
E --> F[User Authentication]
|
||||
F --> G[Session Storage - Redis]
|
||||
F --> H[User Database - File]
|
||||
|
||||
G --> I[Session Validation]
|
||||
I --> D
|
||||
|
||||
subgraph "Authelia Container"
|
||||
E
|
||||
F
|
||||
I
|
||||
J[TOTP 2FA]
|
||||
K[Password Reset]
|
||||
end
|
||||
|
||||
subgraph "Redis Container"
|
||||
G
|
||||
L[Session Data]
|
||||
end
|
||||
|
||||
subgraph "Configuration"
|
||||
H
|
||||
M[Access Control Rules]
|
||||
N[Notification Settings]
|
||||
end
|
||||
```
|
||||
|
||||
## Основные компоненты
|
||||
|
||||
### Authelia Server
|
||||
- **Назначение**: Центральный сервер аутентификации
|
||||
- **Домен**: `auth.aepif.ru`
|
||||
- **Порт**: 9091
|
||||
- **Технология**: Go-based authentication server
|
||||
- **Особенности**:
|
||||
- Forward Authentication integration с Traefik
|
||||
- TOTP двухфакторная аутентификация
|
||||
- Password reset через файловые уведомления
|
||||
- Детальные политики доступа
|
||||
|
||||
### Redis Session Store
|
||||
- **Назначение**: Хранение пользовательских сессий
|
||||
- **Технология**: Redis 7 Alpine
|
||||
- **Контейнер**: `auth_redis`
|
||||
- **Особенности**:
|
||||
- Персистентное хранение сессий
|
||||
- Защита паролем (`Ll8qlQ3rgBFo4Syq`)
|
||||
- Быстрый доступ к данным сессий
|
||||
- Автоматическое истечение сессий
|
||||
|
||||
### File-based User Database
|
||||
- **Назначение**: Хранение пользователей и их данных
|
||||
- **Файл**: `/config/users_database.yml`
|
||||
- **Особенности**:
|
||||
- Argon2id хеширование паролей
|
||||
- Группы пользователей для управления доступом
|
||||
- Email адреса для уведомлений
|
||||
|
||||
## Конфигурация
|
||||
|
||||
### Docker Compose
|
||||
Основная конфигурация в `/DOCKER/auth/docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: auth_redis
|
||||
command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
|
||||
|
||||
authelia:
|
||||
image: authelia/authelia:latest
|
||||
container_name: authelia
|
||||
depends_on:
|
||||
- redis
|
||||
volumes:
|
||||
- ./authelia:/config
|
||||
networks:
|
||||
- proxy # Подключение к Traefik
|
||||
```
|
||||
|
||||
### Основная конфигурация
|
||||
Файл `/DOCKER/auth/authelia/configuration.yml`:
|
||||
|
||||
```yaml
|
||||
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
|
||||
default_redirection_url: https://notes.aepif.ru
|
||||
|
||||
server:
|
||||
host: 0.0.0.0
|
||||
port: 9091
|
||||
|
||||
totp:
|
||||
issuer: aepif.ru
|
||||
|
||||
session:
|
||||
domain: aepif.ru
|
||||
expiration: 1h
|
||||
inactivity: 5m
|
||||
redis:
|
||||
host: redis
|
||||
port: 6379
|
||||
password: Ll8qlQ3rgBFo4Syq
|
||||
```
|
||||
|
||||
## Политики доступа
|
||||
|
||||
### Access Control Rules
|
||||
Текущие правила доступа:
|
||||
|
||||
```yaml
|
||||
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_database.yml`:
|
||||
|
||||
```yaml
|
||||
users:
|
||||
admin:
|
||||
displayname: "Administrator"
|
||||
password: "$argon2id$..." # Хешированный пароль Argon2id
|
||||
email: epifantsev1aa@gmail.com
|
||||
groups:
|
||||
- admins # Администраторская группа
|
||||
- users # Базовая группа пользователей
|
||||
```
|
||||
|
||||
### Управление паролями
|
||||
- **Хеширование**: Argon2id (высокий уровень безопасности)
|
||||
- **Reset процедура**: Через файловые уведомления
|
||||
- **Требования**: Минимальная длина, сложность
|
||||
|
||||
## Двухфакторная аутентификация
|
||||
|
||||
### TOTP Configuration
|
||||
- **Issuer**: `aepif.ru`
|
||||
- **QR Code**: Автоматическая генерация для настройки
|
||||
- **Backup Codes**: Коды восстановления доступа
|
||||
- **Приложения**: Google Authenticator, Authy, 1Password
|
||||
|
||||
### Настройка TOTP
|
||||
1. Первый вход с логином/паролем
|
||||
2. Сканирование QR кода мобильным приложением
|
||||
3. Подтверждение TOTP кода
|
||||
4. Сохранение backup кодов
|
||||
|
||||
## Интеграция с Traefik
|
||||
|
||||
### Forward Auth Middleware
|
||||
Traefik labels для защищенных сервисов:
|
||||
|
||||
```yaml
|
||||
labels:
|
||||
- traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.aepif.ru
|
||||
- traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true
|
||||
- traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email
|
||||
```
|
||||
|
||||
### Headers передача
|
||||
Authelia передает в backend сервисы:
|
||||
- **Remote-User**: Username аутентифицированного пользователя
|
||||
- **Remote-Groups**: Группы пользователя
|
||||
- **Remote-Name**: Display name
|
||||
- **Remote-Email**: Email адрес
|
||||
|
||||
## Сессии и безопасность
|
||||
|
||||
### Session Management
|
||||
- **Время жизни**: 1 час активной сессии
|
||||
- **Неактивность**: 5 минут до автоматического выхода
|
||||
- **Хранение**: Redis с паролем
|
||||
- **Domain**: `.aepif.ru` (работает для всех поддоменов)
|
||||
|
||||
### Regulation (Rate Limiting)
|
||||
Защита от брутфорса:
|
||||
|
||||
```yaml
|
||||
regulation:
|
||||
max_retries: 3 # Максимум попыток входа
|
||||
find_time: 2m # Период для подсчета попыток
|
||||
ban_time: 5m # Время блокировки
|
||||
```
|
||||
|
||||
### Безопасность
|
||||
- **JWT Secret**: Секретный ключ для подписи токенов
|
||||
- **Session Secret**: Ключ для шифрования сессий
|
||||
- **Encryption Key**: Ключ для шифрования хранилища
|
||||
- **Secure Headers**: Автоматические заголовки безопасности
|
||||
|
||||
## Уведомления
|
||||
|
||||
### File Notifier
|
||||
- **Файл**: `/config/notification.txt`
|
||||
- **Назначение**: Password reset уведомления
|
||||
- **Формат**: Простой текстовый файл
|
||||
|
||||
### Email Integration (Future)
|
||||
Для полноценных email уведомлений потребуется настройка SMTP:
|
||||
- Password reset emails
|
||||
- 2FA setup notifications
|
||||
- Security alerts
|
||||
|
||||
## Мониторинг
|
||||
|
||||
### Health Checks
|
||||
```bash
|
||||
# Проверка доступности Authelia
|
||||
curl -I https://auth.aepif.ru
|
||||
|
||||
# Проверка API здоровья
|
||||
curl https://auth.aepif.ru/api/health
|
||||
|
||||
# Логи Authelia
|
||||
docker logs authelia -f
|
||||
|
||||
# Проверка Redis
|
||||
docker exec auth_redis redis-cli -a Ll8qlQ3rgBFo4Syq ping
|
||||
```
|
||||
|
||||
### Metrics
|
||||
- **Authentication attempts**: Успешные/неуспешные попытки входа
|
||||
- **Session statistics**: Активные сессии, время жизни
|
||||
- **2FA usage**: Статистика использования TOTP
|
||||
- **Access denials**: Заблокированные запросы
|
||||
|
||||
## Структура файлов
|
||||
|
||||
```
|
||||
/DOCKER/auth/
|
||||
├── docker-compose.yml # Конфигурация Authelia + Redis
|
||||
├── authelia/ # Конфигурация Authelia
|
||||
│ ├── configuration.yml # Основная конфигурация
|
||||
│ ├── users_database.yml # База пользователей
|
||||
│ ├── db.sqlite3 # SQLite база данных (для хранения состояния)
|
||||
│ └── notification.txt # Файл уведомлений
|
||||
└── volumes/
|
||||
└── redis_data/ # Данные Redis
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Общие проблемы
|
||||
1. **Не работает аутентификация**: Проверить сеть `proxy`, статус контейнеров
|
||||
2. **Сессии не сохраняются**: Проверить подключение к Redis
|
||||
3. **TOTP не работает**: Синхронизировать время на сервере и устройстве
|
||||
4. **Password reset**: Проверить файл уведомлений
|
||||
|
||||
### Логи отладки
|
||||
```yaml
|
||||
# В configuration.yml для детальных логов
|
||||
log:
|
||||
level: debug
|
||||
```
|
||||
|
||||
## Backup и восстановление
|
||||
|
||||
### Критически важные данные
|
||||
- **configuration.yml**: Основная конфигурация
|
||||
- **users_database.yml**: База пользователей
|
||||
- **db.sqlite3**: Состояние системы (2FA secrets, etc.)
|
||||
- **redis_data**: Активные сессии
|
||||
|
||||
### Процедура backup
|
||||
```bash
|
||||
# Backup конфигурации Authelia
|
||||
tar czf authelia_config_backup.tar.gz -C /DOCKER/auth/authelia .
|
||||
|
||||
# Backup Redis данных
|
||||
docker exec auth_redis redis-cli -a Ll8qlQ3rgBFo4Syq BGSAVE
|
||||
```
|
||||
|
||||
## Связанные сервисы
|
||||
|
||||
- **[[Мой сервер/Traefik Reverse Proxy/Обзор системы|Traefik]]** - интеграция через Forward Auth middleware
|
||||
- **[[Мой сервер/Second Mind Setup/Обзор системы|Second Mind]]** - защита доступа к заметкам
|
||||
- **Redis** - хранение сессий и состояния
|
||||
|
||||
## Связанные документы
|
||||
|
||||
- **[[Authelia Authentication - Конфигурации]]** - детальные настройки всех компонентов
|
||||
- **[[Authelia Authentication - Развертывание]]** - пошаговая установка
|
||||
- **[[Authelia Authentication - Администрирование]]** - управление пользователями и мониторинг
|
||||
Reference in New Issue
Block a user