✨ Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
This commit is contained in:
@@ -0,0 +1,407 @@
|
||||
# Authelia Authentication - Конфигурации
|
||||
|
||||
← **[[Обзор системы|← Назад к обзору]]**
|
||||
|
||||
## Docker Compose конфигурация
|
||||
|
||||
### Основной файл: `/DOCKER/auth/docker-compose.yml`
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: auth_redis
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
networks:
|
||||
- default
|
||||
command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
|
||||
restart: unless-stopped
|
||||
|
||||
authelia:
|
||||
image: authelia/authelia:latest
|
||||
container_name: authelia
|
||||
depends_on:
|
||||
- redis
|
||||
volumes:
|
||||
- ./authelia:/config
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.authelia.rule=Host(`auth.aepif.ru`)
|
||||
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
|
||||
- traefik.http.services.authelia.loadbalancer.server.port=9091
|
||||
- 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
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Moscow
|
||||
|
||||
volumes:
|
||||
redis_data:
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
default:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
## Основной файл configuration.yml
|
||||
|
||||
### Полная конфигурация: `/DOCKER/auth/authelia/configuration.yml`
|
||||
|
||||
```yaml
|
||||
---
|
||||
theme: auto
|
||||
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
|
||||
default_redirection_url: https://notes.aepif.ru
|
||||
|
||||
server:
|
||||
host: 0.0.0.0
|
||||
port: 9091
|
||||
|
||||
log:
|
||||
level: info
|
||||
|
||||
totp:
|
||||
issuer: aepif.ru
|
||||
|
||||
authentication_backend:
|
||||
file:
|
||||
path: /config/users_database.yml
|
||||
|
||||
access_control:
|
||||
default_policy: deny
|
||||
rules:
|
||||
- domain: notes.aepif.ru
|
||||
policy: one_factor
|
||||
- domain: git.aepif.ru
|
||||
policy: bypass
|
||||
- domain: webhook.aepif.ru
|
||||
policy: bypass
|
||||
- domain: auth.aepif.ru
|
||||
policy: bypass
|
||||
|
||||
session:
|
||||
name: authelia_session
|
||||
domain: aepif.ru
|
||||
secret: 91Zc/PM0EogwZbsX0tsDGLpr4Wg7zwtQUzcp5tYP5dNdRNTlpkXBfJr9EivuD+A4
|
||||
expiration: 1h
|
||||
inactivity: 5m
|
||||
redis:
|
||||
host: redis
|
||||
port: 6379
|
||||
password: Ll8qlQ3rgBFo4Syq
|
||||
|
||||
regulation:
|
||||
max_retries: 3
|
||||
find_time: 2m
|
||||
ban_time: 5m
|
||||
|
||||
storage:
|
||||
encryption_key: sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
|
||||
local:
|
||||
path: /config/db.sqlite3
|
||||
|
||||
notifier:
|
||||
filesystem:
|
||||
filename: /config/notification.txt
|
||||
```
|
||||
|
||||
### Разбор конфигурации по разделам
|
||||
|
||||
#### Server Configuration
|
||||
```yaml
|
||||
server:
|
||||
host: 0.0.0.0 # Слушать на всех интерфейсах
|
||||
port: 9091 # Внутренний порт контейнера
|
||||
```
|
||||
|
||||
#### JWT и безопасность
|
||||
```yaml
|
||||
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
|
||||
default_redirection_url: https://notes.aepif.ru
|
||||
theme: auto # Автоматическая тема (dark/light)
|
||||
```
|
||||
|
||||
#### Logging
|
||||
```yaml
|
||||
log:
|
||||
level: info # Уровни: trace, debug, info, warn, error
|
||||
```
|
||||
|
||||
## User Database Configuration
|
||||
|
||||
### Файл пользователей: `/DOCKER/auth/authelia/users_database.yml`
|
||||
|
||||
```yaml
|
||||
users:
|
||||
admin:
|
||||
displayname: "Administrator"
|
||||
password: "$argon2id$v=19$m=65536,t=3,p=4$..." # Argon2id hash
|
||||
email: epifantsev1aa@gmail.com
|
||||
groups:
|
||||
- admins
|
||||
- users
|
||||
```
|
||||
|
||||
### Генерация паролей
|
||||
```bash
|
||||
# Использование authelia для генерации хеша пароля
|
||||
docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'your_password'
|
||||
|
||||
# Результат вставляется в users_database.yml
|
||||
```
|
||||
|
||||
### Структура пользователей
|
||||
- **displayname**: Отображаемое имя пользователя
|
||||
- **password**: Argon2id хеш пароля
|
||||
- **email**: Email для уведомлений и 2FA
|
||||
- **groups**: Массив групп для контроля доступа
|
||||
|
||||
## Access Control Rules
|
||||
|
||||
### Политики доступа
|
||||
```yaml
|
||||
access_control:
|
||||
default_policy: deny # По умолчанию запрещено
|
||||
rules:
|
||||
- domain: notes.aepif.ru
|
||||
policy: one_factor # Требует логин + пароль
|
||||
- domain: git.aepif.ru
|
||||
policy: bypass # Без проверки Authelia
|
||||
- domain: webhook.aepif.ru
|
||||
policy: bypass # API сервис
|
||||
- domain: auth.aepif.ru
|
||||
policy: bypass # Сама страница входа
|
||||
```
|
||||
|
||||
### Типы политик
|
||||
- **deny**: Полный запрет доступа
|
||||
- **bypass**: Доступ без аутентификации через Authelia
|
||||
- **one_factor**: Только логин + пароль
|
||||
- **two_factor**: Логин + пароль + TOTP
|
||||
|
||||
### Расширенные правила доступа
|
||||
```yaml
|
||||
# Пример дополнительных правил
|
||||
access_control:
|
||||
rules:
|
||||
# Ограничение по группам
|
||||
- domain: admin.aepif.ru
|
||||
policy: two_factor
|
||||
subject: "group:admins"
|
||||
|
||||
# Ограничение по пользователям
|
||||
- domain: private.aepif.ru
|
||||
policy: one_factor
|
||||
subject: "user:admin"
|
||||
|
||||
# Ограничение по IP/сети
|
||||
- domain: internal.aepif.ru
|
||||
policy: one_factor
|
||||
networks:
|
||||
- "192.168.1.0/24"
|
||||
|
||||
# Ограничение по методам HTTP
|
||||
- domain: api.aepif.ru
|
||||
policy: one_factor
|
||||
methods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
```
|
||||
|
||||
## Session Configuration
|
||||
|
||||
### Настройки сессий
|
||||
```yaml
|
||||
session:
|
||||
name: authelia_session # Имя cookie
|
||||
domain: aepif.ru # Домен для cookie (все поддомены)
|
||||
secret: 91Zc/PM0EogwZbsX0tsDGLpr4Wg7zwtQUzcp5tYP5dNdRNTlpkXBfJr9EivuD+A4
|
||||
expiration: 1h # Время жизни сессии
|
||||
inactivity: 5m # Время неактивности до выхода
|
||||
|
||||
redis:
|
||||
host: redis # Хост Redis контейнера
|
||||
port: 6379 # Порт Redis
|
||||
password: Ll8qlQ3rgBFo4Syq # Пароль Redis
|
||||
```
|
||||
|
||||
### Дополнительные настройки сессий
|
||||
```yaml
|
||||
session:
|
||||
# Дополнительные опции безопасности
|
||||
same_site: lax # Политика SameSite cookie
|
||||
secure: true # Только HTTPS (автоматически в production)
|
||||
remember_me_duration: 1M # Время "запомнить меня"
|
||||
```
|
||||
|
||||
## TOTP Configuration
|
||||
|
||||
### Двухфакторная аутентификация
|
||||
```yaml
|
||||
totp:
|
||||
issuer: aepif.ru # Отображается в приложении аутентификации
|
||||
algorithm: sha1 # sha1, sha256, sha512
|
||||
digits: 6 # Количество цифр в коде
|
||||
period: 30 # Период действия кода в секундах
|
||||
skew: 1 # Допуск на рассинхронизацию времени
|
||||
```
|
||||
|
||||
### Поддерживаемые приложения
|
||||
- Google Authenticator
|
||||
- Authy
|
||||
- Microsoft Authenticator
|
||||
- 1Password
|
||||
- Bitwarden
|
||||
|
||||
## Redis Configuration
|
||||
|
||||
### Настройки Redis контейнера
|
||||
```yaml
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
|
||||
volumes:
|
||||
- redis_data:/data # Персистентное хранение
|
||||
```
|
||||
|
||||
### Дополнительные настройки Redis
|
||||
```yaml
|
||||
# В configuration.yml для дополнительных опций Redis
|
||||
session:
|
||||
redis:
|
||||
host: redis
|
||||
port: 6379
|
||||
password: Ll8qlQ3rgBFo4Syq
|
||||
database_index: 0 # Номер базы данных
|
||||
maximum_active_connections: 8
|
||||
minimum_idle_connections: 0
|
||||
```
|
||||
|
||||
## Regulation (Rate Limiting)
|
||||
|
||||
### Защита от брутфорса
|
||||
```yaml
|
||||
regulation:
|
||||
max_retries: 3 # Максимум попыток входа
|
||||
find_time: 2m # Временное окно для подсчета попыток
|
||||
ban_time: 5m # Время блокировки после превышения лимита
|
||||
```
|
||||
|
||||
### Расширенная конфигурация
|
||||
```yaml
|
||||
regulation:
|
||||
max_retries: 3
|
||||
find_time: 2m
|
||||
ban_time: 5m
|
||||
|
||||
# Дополнительные настройки
|
||||
bantime_multiplier: 2 # Увеличение времени блокировки при повторных нарушениях
|
||||
cleanup_interval: 1h # Интервал очистки старых записей
|
||||
```
|
||||
|
||||
## Storage Configuration
|
||||
|
||||
### Локальное хранилище
|
||||
```yaml
|
||||
storage:
|
||||
encryption_key: sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
|
||||
local:
|
||||
path: /config/db.sqlite3
|
||||
```
|
||||
|
||||
### База данных содержит
|
||||
- TOTP секреты пользователей
|
||||
- U2F/WebAuthn данные
|
||||
- Статистика авторизации
|
||||
- Конфигурация двухфакторной аутентификации
|
||||
|
||||
## Notifier Configuration
|
||||
|
||||
### Файловые уведомления
|
||||
```yaml
|
||||
notifier:
|
||||
filesystem:
|
||||
filename: /config/notification.txt
|
||||
```
|
||||
|
||||
### SMTP уведомления (альтернатива)
|
||||
```yaml
|
||||
notifier:
|
||||
smtp:
|
||||
username: your_email@gmail.com
|
||||
password: your_app_password
|
||||
host: smtp.gmail.com
|
||||
port: 587
|
||||
sender: your_email@gmail.com
|
||||
startup_check_address: your_email@gmail.com
|
||||
disable_require_tls: false
|
||||
disable_html_emails: false
|
||||
|
||||
subject: "[Authelia] {title}"
|
||||
templates_path: /config/templates
|
||||
```
|
||||
|
||||
## Traefik Integration Labels
|
||||
|
||||
### Forward Auth Middleware
|
||||
```yaml
|
||||
labels:
|
||||
# Основная конфигурация middleware
|
||||
- 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
|
||||
```
|
||||
|
||||
### Применение к сервисам
|
||||
```yaml
|
||||
# Для защищенного сервиса
|
||||
labels:
|
||||
- traefik.http.routers.protected-service.middlewares=authelia@docker
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
### Переменные окружения
|
||||
```yaml
|
||||
environment:
|
||||
- TZ=Europe/Moscow # Часовой пояс
|
||||
- AUTHELIA_JWT_SECRET_FILE=/run/secrets/jwt_secret # Секреты через файлы
|
||||
- AUTHELIA_SESSION_SECRET_FILE=/run/secrets/session_secret
|
||||
```
|
||||
|
||||
## Безопасность конфигурации
|
||||
|
||||
### Генерация секретов
|
||||
```bash
|
||||
# Генерация случайных секретов
|
||||
openssl rand -base64 64 # Для JWT и session secrets
|
||||
openssl rand -hex 32 # Для encryption key
|
||||
```
|
||||
|
||||
### Рекомендации по безопасности
|
||||
1. **Используйте сильные пароли**: Все секреты должны быть случайными
|
||||
2. **Ротация секретов**: Регулярно обновляйте JWT и session секреты
|
||||
3. **Ограничьте доступ к файлам**: Конфигурационные файлы должны быть доступны только контейнеру
|
||||
4. **Мониторинг попыток входа**: Настройте алерты на подозрительную активность
|
||||
|
||||
### Защита конфигурационных файлов
|
||||
```bash
|
||||
# Правильные права доступа
|
||||
chmod 600 /DOCKER/auth/authelia/configuration.yml
|
||||
chmod 600 /DOCKER/auth/authelia/users_database.yml
|
||||
chown root:root /DOCKER/auth/authelia/*.yml
|
||||
```
|
||||
|
||||
## Связанные файлы
|
||||
|
||||
- **[[Развертывание]]** - инструкции по установке и настройке
|
||||
- **[[Администрирование]]** - управление пользователями и мониторинг
|
||||
- **[[../Traefik Reverse Proxy/Конфигурации]]** - интеграция с reverse proxy
|
||||
Reference in New Issue
Block a user