vault backup: 2025-08-04 14:26:29

This commit is contained in:
Andrey Epifancev
2025-08-04 14:26:29 +04:00
parent 89db2cc763
commit 05f63cdf0e
20 changed files with 1450 additions and 1314 deletions

View File

@@ -1,2 +1,4 @@
тут я буду вести лог с помощью аи агента # Мои заметки
Добро пожаловать в мою систему заметок! Здесь я веду записи по различным аспектам жизни и работы.

View File

@@ -0,0 +1,35 @@
# Authelia Authentication - Администрирование
## Ежедневное администрирование Authelia
*Документация будет дополнена процедурами администрирования*
## Управление пользователями
*Добавление, изменение, удаление пользователей*
## Управление группами и правами
*Настройка access control правил*
## Мониторинг аутентификации
*Анализ логов входа и безопасности*
## Password reset процедуры
*Сброс паролей пользователей*
## Управление TOTP
*Настройка и сброс двухфакторной аутентификации*
## Мониторинг Redis
*Контроль хранилища сессий*
## Troubleshooting
*Решение проблем с аутентификацией*
## Backup пользователей
*Резервное копирование базы пользователей*
## Обновления Authelia
*Процедуры обновления сервиса*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,29 @@
# Authelia Authentication - Конфигурации
## Детальные настройки конфигурации Authelia
*Документация будет дополнена деталями конфигурации*
## Docker Compose конфигурация
*Настройки контейнеров Authelia и Redis*
## Основной файл configuration.yml
*Разбор всех параметров конфигурации*
## User Database
*Управление файлом users_database.yml*
## Access Control Rules
*Детальная настройка политик доступа*
## Session Configuration
*Настройки сессий и Redis интеграции*
## TOTP Configuration
*Конфигурация двухфакторной аутентификации*
## Notifier Settings
*Настройка уведомлений*
---
*Эта страница находится в разработке*

View File

@@ -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 - Администрирование]]** - управление пользователями и мониторинг

View File

@@ -0,0 +1,32 @@
# Authelia Authentication - Развертывание
## Пошаговая установка Authelia
*Документация будет дополнена инструкциями по развертыванию*
## Предварительные требования
*Системные требования, Traefik, сеть proxy*
## Подготовка конфигурации
*Создание файлов configuration.yml и users_database.yml*
## Генерация секретов
*Создание JWT и session секретов*
## Создание пользователей
*Настройка первичных пользователей*
## Развертывание контейнеров
*Запуск Authelia и Redis*
## Интеграция с Traefik
*Настройка Forward Auth middleware*
## Тестирование аутентификации
*Проверка работы системы*
## Настройка TOTP
*Конфигурация двухфакторной аутентификации*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,60 @@
# Git Service - Администрирование
## Ежедневное администрирование
Этот документ содержит информацию по управлению и обслуживанию Git Service.
## Управление пользователями
### Создание пользователей
*Процедуры добавления новых пользователей*
### Управление правами доступа
*Настройка прав и ролей*
### Сброс паролей
*Процедуры восстановления доступа*
## Управление репозиториями
### Создание репозиториев
*Настройка новых репозиториев*
### Backup репозиториев
*Процедуры резервного копирования*
### Миграция репозиториев
*Перенос репозиториев*
## Мониторинг
### Проверка состояния сервиса
*Health checks и мониторинг*
### Анализ логов
*Работа с логами Gitea и PostgreSQL*
### Метрики производительности
*Мониторинг ресурсов*
## Обслуживание
### Обновления
*Процедуры обновления Gitea*
### Backup и восстановление
*Полное резервное копирование*
### Troubleshooting
*Решение типовых проблем*
## Интеграции
### Настройка Webhooks
*Конфигурация уведомлений*
### Интеграция с CI/CD
*Подключение систем автоматизации*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,37 @@
# Git Service - Конфигурации
## Обзор конфигураций
Этот документ содержит детальную информацию о настройках всех компонентов Git Service.
## Docker Compose конфигурация
### Основной файл: `/DOCKER/git/docker-compose.yml`
*Документация будет дополнена с деталями конфигурации*
## Gitea конфигурация
### Переменные окружения
*Настройки Gitea через environment variables*
### Базовые настройки
*Конфигурация через app.ini*
## PostgreSQL конфигурация
### Настройки базы данных
*Параметры PostgreSQL для Gitea*
## Networking
### Сетевые настройки
*Конфигурация сетей Docker*
## Volumes и Storage
### Хранение данных
*Настройки volumes для персистентности данных*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,204 @@
## Описание
Git Service - отдельный сервис на базе Gitea, обеспечивающий централизованное хранение кода и заметок. Работает независимо от других сервисов и предоставляет Git-интерфейс для всех проектов в экосистеме aepif.ru.
## Архитектура системы
```mermaid
graph TB
A[Users] --> B[Traefik Proxy]
B --> C[Gitea Web Interface]
C --> D[Git Repositories]
C --> E[PostgreSQL Database]
F[SSH Clients] --> G[Gitea SSH:2222]
G --> D
subgraph "Git Service Container"
C
D
end
subgraph "Database Container"
E
end
H[Webhook Consumers] --> C
C --> I[Webhook Notifications]
```
## Основные компоненты
### Gitea Server
- **Назначение**: Web-интерфейс для управления Git-репозиториями
- **Домен**: `git.aepif.ru`
- **Технология**: Gitea (Go-based Git service)
- **Особенности**:
- Web-интерфейс для просмотра кода
- Issue tracking
- Pull/Merge requests
- Webhook notifications
- User management
### PostgreSQL Database
- **Назначение**: Хранение метаданных Gitea
- **Технология**: PostgreSQL 14
- **Данные**:
- Информация о пользователях
- Метаданные репозиториев
- Issues и комментарии
- Настройки системы
### SSH Access
- **Порт**: 2222 (внешний доступ)
- **Назначение**: Git operations через SSH
- **Особенности**: Отдельный порт для избежания конфликтов
## Конфигурация
### Docker Compose
```yaml
services:
gitea:
image: gitea/gitea:latest
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__server__SSH_DOMAIN=git.aepif.ru
- GITEA__server__SSH_PORT=2222
networks:
- proxy # Подключение к Traefik
- default
```
### Traefik Labels
- **HTTP routing**: `git.aepif.ru` → port 3000
- **TCP routing**: SSH на порту 2222
- **SSL**: Автоматические сертификаты
## Репозитории
### Активные репозитории
- **second-mind-aep**: Заметки для Second Mind
- **configs**: Конфигурационные файлы сервера
- **scripts**: Вспомогательные скрипты
### Структура URL
- **HTTP Clone**: `https://git.aepif.ru/username/repo.git`
- **SSH Clone**: `git@git.aepif.ru:username/repo.git`
- **Internal URL**: `http://gitea:3000/username/repo.git`
## Интеграции
### Webhook Integration
- **Second Mind**: автоматическая пересборка при push
- **CI/CD**: потенциальная интеграция с системами автоматизации
- **Notifications**: уведомления в внешние системы
### Authentication
- **Bypass Authelia**: Собственная система аутентификации Gitea
- **Local Users**: Управление пользователями внутри Gitea
- **SSH Keys**: Управление SSH ключами для каждого пользователя
## Домены и доступ
| Протокол | Endpoint | Описание | Порт |
|----------|----------|----------|------|
| HTTPS | `git.aepif.ru` | Web-интерфейс Gitea | 443 |
| SSH | `git.aepif.ru:2222` | Git SSH operations | 2222 |
| HTTP | `gitea:3000` | Internal container access | 3000 |
## Workflow использования
### Веб-интерфейс
1. **Доступ** через `git.aepif.ru`
2. **Аутентификация** с помощью логина/пароля Gitea
3. **Управление** репозиториями через Web UI
4. **Настройка** webhooks для автоматизации
### Git Operations
```bash
# SSH клонирование
git clone git@git.aepif.ru:2222/username/repo.git
# HTTPS клонирование
git clone https://git.aepif.ru/username/repo.git
# Push изменений
git push origin main
```
## Структура файлов
```
/DOCKER/git/
├── docker-compose.yml # Конфигурация Gitea + PostgreSQL
└── volumes/
├── gitea_data/ # Данные Gitea (repos, config)
└── postgres_data/ # База данных PostgreSQL
```
## Безопасность
### Уровни защиты
- **SSL/TLS**: Все HTTPS соединения зашифрованы
- **SSH Keys**: Аутентификация по ключам для Git operations
- **User Management**: Контроль доступа на уровне пользователей
- **Repository Permissions**: Детальные права доступа к репозиториям
### Backup Strategy
- **Database**: Регулярные дампы PostgreSQL
- **Repositories**: Backup директории `gitea_data`
- **External Mirrors**: Синхронизация с внешними Git-сервисами
## Мониторинг
### Доступные метрики
- **Repository Usage**: Размер и активность репозиториев
- **User Activity**: Статистика commits, pushes, pulls
- **System Health**: Состояние базы данных и сервиса
### Health Checks
```bash
# Проверка веб-интерфейса
curl -I https://git.aepif.ru
# Проверка SSH доступа
ssh -T git@git.aepif.ru -p 2222
# Проверка контейнеров
docker ps | grep gitea
```
## Администрирование
### Создание пользователей
1. Доступ к админ-панели Gitea
2. User Management → Create User
3. Настройка прав доступа
### Настройка репозиториев
1. Создание репозитория через Web UI
2. Настройка webhooks для интеграций
3. Управление коллаборацией
### Обновления
```bash
# Обновление образа
docker-compose pull
docker-compose up -d
# Проверка версии
docker exec gitea gitea --version
```
## Связанные сервисы
- **[[Мой сервер/Second Mind Setup/Обзор системы|Second Mind]]** - использует Git Service для хранения заметок
- **[[Мой сервер/Инфраструктура/Обзор системы|Traefik]]** - обеспечивает маршрутизацию и SSL
- **Potential CI/CD** - будущие интеграции с системами автоматизации
## Связанные документы
- **[[Git Service - Конфигурации]]** - детальные настройки
- **[[Git Service - Развертывание]]** - пошаговая установка
- **[[Git Service - Администрирование]]** - управление и обслуживание

View File

@@ -0,0 +1,46 @@
# Git Service - Развертывание
## Пошаговая установка
Этот документ содержит инструкции по развертыванию Git Service с нуля.
## Предварительные требования
### Системные требования
*Минимальные требования к серверу*
### Зависимости
*Необходимое ПО и сервисы*
## Установка
### Шаг 1: Подготовка среды
*Подготовка окружения для развертывания*
### Шаг 2: Конфигурация
*Настройка файлов конфигурации*
### Шаг 3: Развертывание контейнеров
*Запуск Docker Compose*
### Шаг 4: Первоначальная настройка
*Настройка Gitea через веб-интерфейс*
## Интеграция с инфраструктурой
### Подключение к Traefik
*Настройка reverse proxy*
### Настройка SSL
*Конфигурация сертификатов*
## Тестирование
### Проверка доступности
*Тесты работоспособности сервиса*
### Создание тестового репозитория
*Валидация функциональности*
---
*Эта страница находится в разработке*

View File

@@ -6,23 +6,31 @@ Second Mind - система автоматической публикации
```mermaid ```mermaid
graph TB graph TB
A[Gitea Repository] --> B[Webhook Service] A[External Gitea Repository] --> B[Webhook Service]
B --> C[Quartz Builder] B --> C[Quartz Builder]
C --> D[Static Files] C --> D[Static Files]
D --> E[Nginx Server] D --> E[Nginx Server]
F[PostgreSQL] --> A F[Traefik Proxy] --> E
G[Traefik Proxy] --> A F --> B
G --> E
G --> B subgraph "Second Mind Container"
B
C
end
subgraph "External Services"
A
F
end
``` ```
## Основные компоненты ## Основные компоненты
### Git-сервер (Gitea) ### External Git-сервер (Gitea)
- **Назначение**: Хранение и версионирование заметок - **Назначение**: Хранение и версионирование заметок
- **Домен**: `git.aepif.ru` - **Домен**: `git.aepif.ru`
- **База данных**: PostgreSQL - **Особенности**: Отдельный сервис, SSH доступ на порту 2222, webhook'и при push
- **Особенности**: SSH доступ на порту 2222, webhook'и при push - **Репозиторий**: `http://gitea:3000/admin/second-mind-aep.git`
### Webhook Service ### Webhook Service
- **Назначение**: Автоматическая пересборка при изменениях - **Назначение**: Автоматическая пересборка при изменениях
@@ -69,17 +77,18 @@ graph TB
``` ```
/DOCKER/second-mind/ /DOCKER/second-mind/
├── docker-compose.yml # Основная конфигурация ├── docker-compose.yml # Основная конфигурация (только Nginx + Webhook)
├── Dockerfile # Образ для webhook сервиса ├── Dockerfile # Кастомный образ для webhook сервиса
├── .env # Переменные окружения ├── nginx.conf # Конфигурация Nginx для статических файлов
├── nginx.conf # Конфигурация Nginx
├── webhook-server/ # Код webhook сервиса ├── webhook-server/ # Код webhook сервиса
│ ├── server.js │ ├── server.js # Node.js сервер для обработки webhooks
│ └── package.json │ └── package.json # Зависимости Node.js
├── obsidian_repo/ # Локальная копия репозитория ├── obsidian_repo/ # Локальная копия Git-репозитория
└── quartz_build/ # Собранный статический сайт └── quartz_build/ # Собранные статические файлы для Nginx
``` ```
**Примечание**: Gitea и PostgreSQL развернуты отдельно в `/DOCKER/git/`
## Преимущества решения ## Преимущества решения
- **Автоматизация**: Публикация происходит автоматически при push - **Автоматизация**: Публикация происходит автоматически при push

View File

@@ -0,0 +1,29 @@
# Traefik Reverse Proxy - Администрирование
## Ежедневное администрирование Traefik
*Документация будет дополнена процедурами администрирования*
## Мониторинг Dashboard
*Работа с веб-интерфейсом Traefik*
## Управление SSL сертификатами
*Мониторинг и обновление сертификатов*
## Анализ логов
*Работа с логами доступа и ошибок*
## Добавление новых сервисов
*Процедура подключения новых сервисов*
## Troubleshooting
*Решение типовых проблем*
## Обновления
*Процедуры обновления Traefik*
## Backup и восстановление
*Резервное копирование конфигурации*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,26 @@
# Traefik Reverse Proxy - Конфигурации
## Детальные настройки конфигурации Traefik
*Документация будет дополнена деталями конфигурации*
## Docker Compose конфигурация
*Разбор всех параметров docker-compose.yml*
## Command Line Arguments
*Детальное описание всех флагов запуска*
## Static Configuration
*Настройки, которые не изменяются во время выполнения*
## Dynamic Configuration
*Конфигурация через Docker labels*
## SSL/TLS Configuration
*Настройки сертификатов и шифрования*
## Middleware Configuration
*Конфигурация middleware для различных задач*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,239 @@
## Описание
Traefik Reverse Proxy - центральный компонент инфраструктуры aepif.ru, обеспечивающий маршрутизацию трафика, автоматические SSL сертификаты и интеграцию с системой аутентификации.
## Архитектура системы
```mermaid
graph TB
A[Internet] --> B[Traefik v3.0]
B --> C[Second Mind - notes.aepif.ru]
B --> D[Gitea - git.aepif.ru]
B --> E[Authelia - auth.aepif.ru]
B --> F[Webhook Service - webhook.aepif.ru]
B --> G[Traefik Dashboard - traefik.aepif.ru]
H[Let's Encrypt] --> B
I[Docker Socket] --> B
subgraph "SSL Certificates"
H
J[ACME Storage]
end
subgraph "Service Discovery"
I
K[Docker Labels]
end
```
## Основные функции
### Reverse Proxy
- **Назначение**: Централизованная точка входа для всех сервисов
- **Технология**: Traefik v3.0
- **Порты**:
- 80 (HTTP) - автоматический редирект на HTTPS
- 443 (HTTPS) - основной трафик
- 8080 - Dashboard (небезопасен в production)
- 2222 - SSH для Git-сервера
### SSL Management
- **Let's Encrypt**: Автоматическое получение и обновление сертификатов
- **ACME Challenge**: TLS challenge для валидации доменов
- **Автоматический редирект**: HTTP → HTTPS для всех сервисов
- **Хранение**: Персистентные сертификаты в volume
### Service Discovery
- **Docker Integration**: Автоматическое обнаружение сервисов через Docker API
- **Label-based Configuration**: Настройка маршрутизации через Docker labels
- **Dynamic Configuration**: Изменения конфигурации без перезапуска
## Конфигурация
### Docker Compose
Основная конфигурация в `/DOCKER/reverse-proxy/docker-compose.yml`:
```yaml
services:
traefik:
image: traefik:v3.0
command:
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "2222:2222"
```
### Entrypoints
- **web** (80): HTTP трафик с редиректом на HTTPS
- **websecure** (443): HTTPS трафик
- **ssh** (2222): TCP трафик для Git SSH
### Middlewares
- **redirect-to-https**: Автоматический редирект HTTP → HTTPS
- **authelia@docker**: Интеграция с Forward Auth
## Маршрутизация
### HTTP Routes
| Домен | Сервис | Middleware | Порт |
|-------|--------|------------|------|
| `notes.aepif.ru` | Second Mind | authelia@docker | 80 |
| `git.aepif.ru` | Gitea | - | 3000 |
| `auth.aepif.ru` | Authelia | - | 9091 |
| `webhook.aepif.ru` | Webhook Service | - | 3000 |
| `traefik.aepif.ru` | Dashboard | - | api@internal |
### TCP Routes
- **SSH Git Access**: `git.aepif.ru:2222` → Gitea container port 22
## Сетевая архитектура
### Proxy Network
```yaml
networks:
proxy:
name: proxy
driver: bridge
```
Все сервисы, которые должны быть доступны через Traefik, подключаются к сети `proxy`.
### Labels Configuration
Пример конфигурации сервиса через labels:
```yaml
labels:
- traefik.enable=true
- traefik.http.routers.service.rule=Host(`service.aepif.ru`)
- traefik.http.routers.service.tls.certresolver=letsencrypt
- traefik.http.services.service.loadbalancer.server.port=80
```
## SSL Сертификаты
### Let's Encrypt Integration
- **Email**: `your_email@aepif.ru` для уведомлений
- **Challenge Type**: TLS Challenge
- **Storage**: `/data/acme.json` в контейнере
- **Автоматическое обновление**: Traefik обновляет сертификаты автоматически
### Wildcard Certificates
Для поддержки wildcard сертификатов потребуется DNS Challenge с API ключами DNS провайдера.
## Dashboard
### Доступ
- **URL**: `https://traefik.aepif.ru`
- **Порт**: 8080 (insecure mode)
- **Функции**: Мониторинг роутеров, сервисов, middleware
### Безопасность
⚠️ **Внимание**: Dashboard в текущей конфигурации доступен без аутентификации. В production рекомендуется:
- Отключить insecure API (`--api.insecure=false`)
- Добавить middleware для аутентификации
- Ограничить доступ по IP
## Мониторинг
### Metrics
- **Prometheus**: Встроенная поддержка метрик Prometheus
- **Health Checks**: Автоматические проверки состояния backend сервисов
- **Access Logs**: Детальные логи запросов
### Troubleshooting
```bash
# Проверка статуса Traefik
curl -I https://traefik.aepif.ru
# Логи Traefik
docker logs traefik -f
# Проверка конфигурации
docker exec traefik traefik version
```
## Безопасность
### TLS Configuration
- **Минимальная версия**: TLS 1.2
- **Cipher Suites**: Современные безопасные шифры
- **HSTS**: HTTP Strict Transport Security headers
### Rate Limiting
Можно настроить ограничение запросов через middleware:
```yaml
labels:
- traefik.http.middlewares.ratelimit.ratelimit.burst=100
- traefik.http.middlewares.ratelimit.ratelimit.average=50
```
## Производительность
### Load Balancing
- **Алгоритм**: Round Robin (по умолчанию)
- **Health Checks**: Автоматическое исключение неисправных backend'ов
- **Connection Pooling**: Переиспользование соединений
### Caching
- **Static Content**: Заголовки кеширования для статических файлов
- **Compression**: Автоматическое сжатие ответов
## Структура файлов
```
/DOCKER/reverse-proxy/
├── docker-compose.yml # Основная конфигурация Traefik
└── volumes/
└── traefik_data/ # ACME сертификаты и данные
└── acme.json # Let's Encrypt сертификаты
```
## Интеграции
### Docker Integration
- **Automatic Service Discovery**: Обнаружение сервисов через Docker API
- **Label-based Configuration**: Настройка через labels в docker-compose
- **Hot Reload**: Изменения применяются без перезапуска
### Authelia Integration
- **Forward Auth**: Интеграция с Authelia для централизованной аутентификации
- **Headers**: Передача информации о пользователе в backend сервисы
## Backup и восстановление
### Критически важные данные
- **acme.json**: SSL сертификаты Let's Encrypt
- **docker-compose.yml**: Конфигурация сервиса
- **traefik.yml**: Статическая конфигурация (если используется)
### Процедура backup
```bash
# Backup SSL сертификатов
docker cp traefik:/data/acme.json ./backup/acme.json
# Backup всего volume
docker run --rm -v traefik_data:/data -v $(pwd):/backup alpine tar czf /backup/traefik_data.tar.gz -C /data .
```
## Связанные сервисы
- **[[Мой сервер/Authelia Authentication/Обзор системы|Authelia]]** - аутентификация через Forward Auth
- **[[Мой сервер/Second Mind Setup/Обзор системы|Second Mind]]** - защищенный доступ к заметкам
- **[[Мой сервер/Git Service/Обзор системы|Git Service]]** - HTTP и SSH доступ к Git
## Связанные документы
- **[[Traefik Reverse Proxy - Конфигурации]]** - детальные настройки и параметры
- **[[Traefik Reverse Proxy - Развертывание]]** - пошаговая установка
- **[[Traefik Reverse Proxy - Администрирование]]** - обслуживание и мониторинг

View File

@@ -0,0 +1,26 @@
# Traefik Reverse Proxy - Развертывание
## Пошаговая установка Traefik
*Документация будет дополнена инструкциями по развертыванию*
## Предварительные требования
*Системные требования и зависимости*
## Создание сети proxy
*Настройка Docker network*
## Конфигурация Docker Compose
*Подготовка файлов конфигурации*
## Первый запуск
*Процедура начального запуска*
## Настройка DNS
*Настройка доменных записей*
## Тестирование
*Проверка работоспособности*
---
*Эта страница находится в разработке*

View File

@@ -0,0 +1,85 @@
# Документация сервера aepif.ru
Техническая документация инфраструктуры и сервисов домена aepif.ru. Здесь собрана вся информация о развернутых системах.
## Обзор архитектуры
Система построена на микросервисной архитектуре с использованием Docker и состоит из следующих основных компонентов:
### Инфраструктурные сервисы
- **[[Traefik Reverse Proxy/Обзор системы|Traefik Reverse Proxy]]** - централизованная маршрутизация и SSL
- **[[Authelia Authentication/Обзор системы|Authelia Authentication]]** - единая система аутентификации и авторизации
- **Redis** - хранение сессий и кэширование
### Основные приложения
- **[[Second Mind Setup/Обзор системы|Second Mind]]** - система публикации заметок Obsidian через Quartz
- **[[Git Service/Обзор системы|Git Service]]** - Git-сервер на базе Gitea для хранения кода и заметок
## Структура документации
### 🏗️ Общий обзор инфраструктуры
- **[[Обзор инфраструктуры]]** - архитектура высокого уровня и принципы системы
### 📋 Инфраструктурные сервисы
Базовые сервисы, обеспечивающие работу всей системы:
#### 🌐 Traefik Reverse Proxy
- **[[Traefik Reverse Proxy/Обзор системы]]** - архитектура и функции
- **[[Traefik Reverse Proxy/Конфигурации]]** - настройки маршрутизации и SSL
- **[[Traefik Reverse Proxy/Развертывание]]** - установка reverse proxy
- **[[Traefik Reverse Proxy/Администрирование]]** - управление трафиком
#### 🔐 Authelia Authentication
- **[[Authelia Authentication/Обзор системы]]** - система аутентификации
- **[[Authelia Authentication/Конфигурации]]** - настройки доступа и пользователей
- **[[Authelia Authentication/Развертывание]]** - установка системы авторизации
- **[[Authelia Authentication/Администрирование]]** - управление пользователями
### 📝 Second Mind Setup
Система автоматической публикации заметок:
- **[[Second Mind Setup/Обзор системы]]** - концепция и архитектура
- **[[Second Mind Setup/Конфигурации]]** - настройки компонентов
- **[[Second Mind Setup/Развертывание]]** - пошаговая установка
- **[[Second Mind Setup/Администрирование]]** - управление и поддержка
### 🗂️ Git Service
Централизованное хранение кода и версионирование:
- **[[Git Service/Обзор системы]]** - архитектура Git-сервера
- **[[Git Service/Конфигурации]]** - настройки Gitea и PostgreSQL
- **[[Git Service/Развертывание]]** - установка и первоначальная настройка
- **[[Git Service/Администрирование]]** - управление пользователями и репозиториями
## Домены и сервисы
| Домен | Сервис | Описание | Статус |
|-------|--------|----------|--------|
| `notes.aepif.ru` | Second Mind | Опубликованные заметки | 🟢 Активен |
| `git.aepif.ru` | Gitea | Git-сервер | 🟢 Активен |
| `auth.aepif.ru` | Authelia | Система входа | 🟢 Активен |
| `traefik.aepif.ru` | Traefik Dashboard | Мониторинг прокси | 🟢 Активен |
| `webhook.aepif.ru` | Webhook Service | API автоматизации | 🟢 Активен |
## Быстрый старт
1. **Развертывание Traefik**: [[Traefik Reverse Proxy/Развертывание]]
2. **Настройка аутентификации**: [[Authelia Authentication/Развертывание]]
3. **Установка Git Service**: [[Git Service/Развертывание]]
4. **Установка Second Mind**: [[Second Mind Setup/Развертывание]]
5. **Первая публикация**: [[Second Mind Setup/Администрирование]]
## Мониторинг и безопасность
- Все сервисы защищены SSL сертификатами от Let's Encrypt
- Централизованная аутентификация через Authelia
- Мониторинг доступен через Traefik Dashboard
- Логи сервисов доступны через `docker logs`
## Полезные ссылки
- [Опубликованная версия заметок](https://notes.aepif.ru) 🔒
- [Git-репозиторий](https://git.aepif.ru) 🔒
- [Административная панель](https://traefik.aepif.ru) 🔒
---
*Документация обновлена: {{ date | date('YYYY-MM-DD') }}*

View File

@@ -1,506 +0,0 @@
## Мониторинг системы
### Проверка статуса всех сервисов
```bash
# Статус инфраструктурных сервисов
cd /DOCKER/reverse-proxy && docker-compose ps
cd /DOCKER/auth && docker-compose ps
# Общий статус системы
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Использование ресурсов
docker stats --no-stream traefik authelia auth_redis
```
### Мониторинг Traefik
#### Dashboard и метрики
```bash
# Проверка Traefik dashboard
curl -I https://traefik.aepif.ru/dashboard/
# Просмотр конфигурации маршрутов
curl https://traefik.aepif.ru/api/http/routers | jq
# Проверка SSL сертификатов
curl https://traefik.aepif.ru/api/http/routers | jq '.[] | select(.tls) | {name, rule, tls}'
# Статистика сервисов
curl https://traefik.aepif.ru/api/http/services | jq
```
#### Логи Traefik
```bash
# Просмотр логов в реальном времени
cd /DOCKER/reverse-proxy
docker-compose logs -f traefik
# Поиск ошибок SSL
docker-compose logs traefik | grep -i "acme\|ssl\|tls"
# Анализ трафика
docker-compose logs traefik | grep -E "GET|POST" | tail -20
```
### Мониторинг Authelia
#### Проверка аутентификации
```bash
# Health check Authelia
curl https://auth.aepif.ru/api/health
# Проверка конфигурации
cd /DOCKER/auth
docker exec authelia authelia validate-config /config/configuration.yml
# Статистика пользователей
docker exec authelia sqlite3 /config/db.sqlite3 "SELECT * FROM user_preferences;"
```
#### Анализ логов аутентификации
```bash
# Логи Authelia
cd /DOCKER/auth
docker-compose logs -f authelia
# Поиск неуспешных попыток входа
docker-compose logs authelia | grep -i "authentication\|failed\|banned"
# Статистика входов по пользователям
docker-compose logs authelia | grep "Successful" | cut -d' ' -f8 | sort | uniq -c
```
### Мониторинг Redis
```bash
# Статус Redis
cd /DOCKER/auth
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" info
# Количество активных сессий
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" info keyspace
# Список ключей сессий
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "authelia*"
# Время жизни сессий
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*" | head -5 | xargs -I {} docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" ttl {}
```
## Обслуживание SSL сертификатов
### Проверка статуса сертификатов
```bash
# Просмотр всех сертификатов
cd /DOCKER/reverse-proxy
docker exec traefik cat /data/acme.json | jq '.letsencrypt.Certificates[] | {domains: .domain.main, expires: .certificate}' 2>/dev/null || echo "Нет сертификатов"
# Проверка срока действия сертификата
echo | openssl s_client -connect aepif.ru:443 2>/dev/null | openssl x509 -noout -dates
# Проверка для всех доменов
for domain in traefik.aepif.ru auth.aepif.ru notes.aepif.ru git.aepif.ru webhook.aepif.ru; do
echo "=== $domain ==="
echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -subject -dates
echo
done
```
### Принудительное обновление сертификатов
```bash
# Удаление старых сертификатов (ОСТОРОЖНО!)
cd /DOCKER/reverse-proxy
docker-compose stop traefik
docker volume rm reverse-proxy_traefik_data
docker volume create traefik_data
docker-compose up -d traefik
# Проверка получения новых сертификатов
docker-compose logs -f traefik | grep -i acme
```
## Управление пользователями
### Добавление нового пользователя
```bash
# Генерация хеша пароля
NEW_PASSWORD="secure-password-123"
PASSWORD_HASH=$(docker run --rm authelia/authelia:latest authelia hash-password "$NEW_PASSWORD")
# Редактирование базы пользователей
cd /DOCKER/auth
cp authelia/users_database.yml authelia/users_database.yml.backup
cat >> authelia/users_database.yml << EOF
newuser:
displayname: "New User"
password: "$PASSWORD_HASH"
email: newuser@aepif.ru
groups:
- users
EOF
# Применение изменений
docker-compose restart authelia
# Проверка
docker-compose logs authelia | grep -i "user\|config"
```
### Смена пароля пользователя
```bash
# Генерация нового хеша
NEW_PASSWORD="new-secure-password"
PASSWORD_HASH=$(docker run --rm authelia/authelia:latest authelia hash-password "$NEW_PASSWORD")
# Редактирование файла пользователей
cd /DOCKER/auth
nano authelia/users_database.yml
# Замените строку password для нужного пользователя
# Перезапуск Authelia
docker-compose restart authelia
```
### Удаление пользователя
```bash
# Создание резервной копии
cd /DOCKER/auth
cp authelia/users_database.yml authelia/users_database.yml.backup
# Редактирование (удалить секцию пользователя)
nano authelia/users_database.yml
# Очистка сессий пользователя из Redis
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*username*" | xargs docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" del
# Перезапуск
docker-compose restart authelia
```
## Управление политиками доступа
### Добавление нового защищенного сервиса
```bash
# Редактирование конфигурации Authelia
cd /DOCKER/auth
nano authelia/configuration.yml
# Добавить новое правило в секцию access_control.rules:
# - domain: newservice.aepif.ru
# policy: one_factor
# Применение изменений
docker-compose restart authelia
```
### Изменение политик безопасности
```bash
# Для более строгой безопасности (требует 2FA)
cd /DOCKER/auth
nano authelia/configuration.yml
# Изменить policy с one_factor на two_factor для нужных доменов
# - domain: notes.aepif.ru
# policy: two_factor
# Перезапуск
docker-compose restart authelia
```
## Обновления
### Обновление Traefik
```bash
cd /DOCKER/reverse-proxy
# Проверка текущей версии
docker exec traefik traefik version
# Получение новой версии
docker-compose pull traefik
# Обновление с сохранением конфигурации
docker-compose up -d traefik
# Проверка логов
docker-compose logs -f traefik
```
### Обновление Authelia
```bash
cd /DOCKER/auth
# Создание резервной копии конфигурации
tar czf authelia_backup_$(date +%Y%m%d).tar.gz authelia/
# Проверка текущей версии
docker exec authelia authelia --version
# Получение новой версии
docker-compose pull authelia
# Обновление
docker-compose up -d authelia
# Проверка совместимости конфигурации
docker exec authelia authelia validate-config /config/configuration.yml
```
### Обновление Redis
```bash
cd /DOCKER/auth
# Создание дампа данных
docker exec auth_redis redis-cli -a "$REDIS_PASSWORD" save
# Обновление образа
docker-compose pull redis
docker-compose up -d redis
# Проверка работоспособности
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" ping
```
## Резервное копирование
### Автоматический backup скрипт
```bash
#!/bin/bash
# /opt/scripts/infrastructure_backup.sh
BACKUP_DIR="/opt/backups/infrastructure"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
echo "Starting infrastructure backup - $DATE"
# Backup Traefik data (SSL сертификаты)
echo "Backing up Traefik data..."
docker run --rm -v reverse-proxy_traefik_data:/data -v $BACKUP_DIR:/backup alpine \
tar czf /backup/traefik_data_$DATE.tar.gz -C /data .
# Backup Authelia configuration
echo "Backing up Authelia config..."
tar czf $BACKUP_DIR/authelia_config_$DATE.tar.gz -C /DOCKER/auth authelia/
# Backup Redis data
echo "Backing up Redis data..."
docker exec auth_redis redis-cli -a "$REDIS_PASSWORD" save
docker run --rm -v auth_redis_data:/data -v $BACKUP_DIR:/backup alpine \
tar czf /backup/redis_data_$DATE.tar.gz -C /data .
# Backup environment files
echo "Backing up environment files..."
tar czf $BACKUP_DIR/env_files_$DATE.tar.gz \
/DOCKER/reverse-proxy/.env \
/DOCKER/auth/.env \
/DOCKER/reverse-proxy/docker-compose.yml \
/DOCKER/auth/docker-compose.yml
# Cleanup old backups (keep 7 days)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "Infrastructure backup completed - $DATE"
```
### Настройка автоматического backup
```bash
# Создание скрипта
sudo mkdir -p /opt/scripts
sudo nano /opt/scripts/infrastructure_backup.sh
sudo chmod +x /opt/scripts/infrastructure_backup.sh
# Создание директории для бэкапов
sudo mkdir -p /opt/backups/infrastructure
# Добавление в crontab (ежедневно в 2:00)
echo "0 2 * * * /opt/scripts/infrastructure_backup.sh >> /var/log/infrastructure_backup.log 2>&1" | sudo crontab -
```
### Восстановление из backup
```bash
#!/bin/bash
# Восстановление инфраструктуры из backup
BACKUP_DATE="20250804_020000" # Измените на нужную дату
BACKUP_DIR="/opt/backups/infrastructure"
# Остановка сервисов
cd /DOCKER/reverse-proxy && docker-compose down
cd /DOCKER/auth && docker-compose down
# Восстановление Traefik data
docker volume rm reverse-proxy_traefik_data
docker volume create reverse-proxy_traefik_data
docker run --rm -v reverse-proxy_traefik_data:/data -v $BACKUP_DIR:/backup alpine \
tar xzf /backup/traefik_data_$BACKUP_DATE.tar.gz -C /data
# Восстановление Authelia config
rm -rf /DOCKER/auth/authelia
tar xzf $BACKUP_DIR/authelia_config_$BACKUP_DATE.tar.gz -C /DOCKER/auth/
# Восстановление Redis data
docker volume rm auth_redis_data
docker volume create auth_redis_data
docker run --rm -v auth_redis_data:/data -v $BACKUP_DIR:/backup alpine \
tar xzf /backup/redis_data_$BACKUP_DATE.tar.gz -C /data
# Восстановление env файлов
tar xzf $BACKUP_DIR/env_files_$BACKUP_DATE.tar.gz -C /
# Запуск сервисов
cd /DOCKER/reverse-proxy && docker-compose up -d
cd /DOCKER/auth && docker-compose up -d
echo "Восстановление завершено"
```
## Диагностика проблем
### Проблемы с маршрутизацией
```bash
# Проверка правил маршрутизации в Traefik
curl https://traefik.aepif.ru/api/http/routers | jq '.[] | {name, rule, service}'
# Проверка состояния сервисов
curl https://traefik.aepif.ru/api/http/services | jq '.[] | {name, status}'
# Тест конкретного маршрута
curl -H "Host: notes.aepif.ru" http://localhost/
```
### Проблемы с аутентификацией
```bash
# Проверка Forward Auth middleware
curl -v https://notes.aepif.ru/
# Проверка сессий в Redis
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*"
# Тест API Authelia
curl -v https://auth.aepif.ru/api/verify
# Сброс заблокированного пользователя
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*banned*" | xargs docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" del
```
### Проблемы с SSL
```bash
# Проверка ACME логов
docker logs traefik 2>&1 | grep -i acme
# Тест получения сертификата вручную
docker exec traefik sh -c "curl -I http://test.aepif.ru/.well-known/acme-challenge/test"
# Проверка файла acme.json
docker exec traefik ls -la /data/
docker exec traefik cat /data/acme.json | jq '.letsencrypt.Certificates | length'
```
## Мониторинг производительности
### Настройка метрик
```bash
# Добавление Prometheus метрик в Traefik
cd /DOCKER/reverse-proxy
nano docker-compose.yml
# Добавить в command секцию:
# - --metrics.prometheus=true
# - --metrics.prometheus.addEntryPointsLabels=true
# - --metrics.prometheus.addServicesLabels=true
docker-compose up -d traefik
```
### Анализ производительности
```bash
# Статистика запросов к Traefik
curl https://traefik.aepif.ru/metrics
# Анализ времени ответа
curl -w "@curl-format.txt" -o /dev/null -s https://notes.aepif.ru/
# Создание файла curl-format.txt:
cat > curl-format.txt << 'EOF'
time_namelookup: %{time_namelookup}s\n
time_connect: %{time_connect}s\n
time_appconnect: %{time_appconnect}s\n
time_pretransfer: %{time_pretransfer}s\n
time_redirect: %{time_redirect}s\n
time_starttransfer: %{time_starttransfer}s\n
----------\n
time_total: %{time_total}s\n
EOF
```
## Автоматизация обслуживания
### Скрипт проверки системы
```bash
#!/bin/bash
# /opt/scripts/infrastructure_health_check.sh
echo "=== Infrastructure Health Check $(date) ==="
# Проверка статуса контейнеров
echo "Container Status:"
docker ps --filter "name=traefik" --filter "name=authelia" --filter "name=auth_redis" --format "table {{.Names}}\t{{.Status}}"
# Проверка доступности сервисов
echo -e "\nService Availability:"
for service in traefik.aepif.ru auth.aepif.ru; do
if curl -s -o /dev/null -w "%{http_code}" https://$service | grep -q "200\|302"; then
echo "$service: OK"
else
echo "$service: FAILED"
fi
done
# Проверка SSL сертификатов (срок действия)
echo -e "\nSSL Certificates:"
for domain in traefik.aepif.ru auth.aepif.ru; do
expiry=$(echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
echo "$domain expires: $expiry"
done
# Проверка использования диска
echo -e "\nDisk Usage:"
df -h /var/lib/docker | tail -1
echo -e "\n=== End Health Check ==="
```
Система администрирования настроена! Теперь у вас есть полный контроль над инфраструктурой.
Связанные документы:
- [[Инфраструктура - Обзор системы]]
- [[Second Mind - Администрирование]]

View File

@@ -1,415 +0,0 @@
## Traefik Reverse Proxy
### docker-compose.yml
```yaml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
# API и Dashboard
- --api.dashboard=true
- --api.insecure=true
# Docker provider
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
# Entrypoints (порты входа)
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
# SSL сертификаты Let's Encrypt
- --certificatesresolvers.letsencrypt.acme.email=your_email@aepif.ru
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
# TCP routing
- --providers.docker.exposedByDefault=false
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8080:8080" # Dashboard
- "2222:2222" # SSH для Git
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
- traefik.enable=true
# Dashboard маршрут
- traefik.http.routers.traefik.rule=Host(`traefik.aepif.ru`)
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
- traefik.http.routers.traefik.service=api@internal
# HTTP → HTTPS редирект
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
restart: unless-stopped
volumes:
traefik_data:
networks:
proxy:
name: proxy
driver: bridge
```
### Переменные окружения (.env)
```bash
DOMAIN=aepif.ru
ADMIN_EMAIL=epifantsev1aa@gmail.com
```
### Важные особенности конфигурации
#### Entrypoints (точки входа)
- **web** (80): HTTP трафик, автоматически редиректится на HTTPS
- **websecure** (443): HTTPS трафик для веб-сервисов
- **ssh** (2222): TCP трафик для SSH доступа к Git
#### Labels для автоматического SSL
```yaml
# Для любого сервиса добавить эти labels:
labels:
- traefik.enable=true
- traefik.http.routers.service-name.rule=Host(`subdomain.aepif.ru`)
- traefik.http.routers.service-name.tls.certresolver=letsencrypt
- traefik.http.services.service-name.loadbalancer.server.port=SERVICE_PORT
```
## Authelia Authentication Service
### 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
# Forward Auth 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
restart: unless-stopped
environment:
- TZ=Europe/Moscow
volumes:
redis_data:
networks:
proxy:
external: true
default:
driver: bridge
```
### Переменные окружения (.env)
```bash
DOMAIN=aepif.ru
ADMIN_EMAIL=epifantsev1aa@gmail.com
# JWT секрет для токенов
JWT_SECRET=4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
# Секрет для сессий
SESSION_SECRET=91Zc/PM0EogwZbsX0tsDGLpr4Wg7zwtQUzcp5tYP5dNdRNTlpkXBfJr9EivuD+A4
# Ключ шифрования для хранилища
STORAGE_KEY=sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
# Пароль Redis
REDIS_PASSWORD=Ll8qlQ3rgBFo4Syq
# Пароль администратора
AUTHELIA_ADMIN_PASSWORD=Creonila1
```
## Конфигурация Authelia
### configuration.yml
```yaml
---
# Тема интерфейса (auto, light, dark)
theme: auto
# JWT секрет для подписи токенов
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
# URL по умолчанию после входа
default_redirection_url: https://notes.aepif.ru
# Настройки сервера
server:
host: 0.0.0.0
port: 9091
# Логирование
log:
level: info
# TOTP настройки (двухфакторная аутентификация)
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
```
### users_database.yml
```yaml
---
users:
admin:
displayname: "Administrator"
# Хешированный пароль (Argon2id)
password: "$argon2id$v=19$m=65536,t=3,p=4$iF/2ZnDiY1seRau4Vf5MHw$JbKU6i/2uhvpN0CWg73eD0lzUs7NkcHw6INCH0+YFTA"
email: epifantsev1aa@gmail.com
groups:
- admins
- users
```
## Middleware конфигурации
### Использование Authelia middleware
Для защиты сервиса через Authelia добавьте в docker-compose.yml сервиса:
```yaml
labels:
- traefik.enable=true
- traefik.http.routers.service-name.rule=Host(`service.aepif.ru`)
- traefik.http.routers.service-name.tls.certresolver=letsencrypt
- traefik.http.routers.service-name.middlewares=authelia@docker # Защита Authelia
- traefik.http.services.service-name.loadbalancer.server.port=SERVICE_PORT
```
### Дополнительные middleware
#### Rate Limiting
```yaml
# В Traefik можно добавить rate limiting
- traefik.http.middlewares.rate-limit.ratelimit.burst=100
- traefik.http.middlewares.rate-limit.ratelimit.average=50
```
#### Security Headers
```yaml
# Безопасные заголовки
- traefik.http.middlewares.security.headers.browserXssFilter=true
- traefik.http.middlewares.security.headers.contentTypeNosniff=true
- traefik.http.middlewares.security.headers.frameDeny=true
```
## Сетевая конфигурация
### Сеть proxy
Сеть `proxy` является центральной для всей инфраструктуры:
```yaml
networks:
proxy:
name: proxy
driver: bridge
external: true # Сеть используется несколькими docker-compose файлами
```
### Создание сети
```bash
# Создание внешней сети (выполнить один раз)
docker network create proxy
```
### Подключение сервисов
Все сервисы, которые должны быть доступны через Traefik, подключаются к сети `proxy`:
```yaml
services:
your-service:
# ... конфигурация сервиса
networks:
- default # Внутренняя сеть для связи с базой данных
- proxy # Внешняя сеть для Traefik
```
## SSL/TLS конфигурация
### ACME настройки
```yaml
# В команде Traefik:
- --certificatesresolvers.letsencrypt.acme.email=epifantsev1aa@gmail.com
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
```
### Хранение сертификатов
Сертификаты сохраняются в `/data/acme.json` внутри контейнера, который маппится на volume `traefik_data`.
### Автоматическое обновление
Traefik автоматически обновляет сертификаты за 30 дней до истечения.
## Генерация секретов
### Создание случайных секретов
```bash
# JWT секрет (64 символа)
openssl rand -base64 48
# Session секрет (64 символа)
openssl rand -base64 48
# Storage ключ (32 символа)
openssl rand -base64 24
# Redis пароль (16 символов)
openssl rand -base64 12
```
### Хеширование паролей для Authelia
```bash
# Установка authelia CLI (опционально)
docker run --rm -it authelia/authelia:latest authelia hash-password 'your-password'
```
## Файловая структура
### Полная структура проектов
```
/DOCKER/
├── reverse-proxy/
│ ├── docker-compose.yml
│ ├── .env
│ └── volumes/
│ └── traefik_data/
│ ├── acme.json # SSL сертификаты
│ └── traefik.log # Логи Traefik
├── auth/
│ ├── docker-compose.yml
│ ├── .env
│ └── authelia/
│ ├── configuration.yml # Основная конфигурация
│ ├── users_database.yml # База пользователей
│ ├── db.sqlite3 # SQLite база данных
│ └── notification.txt # Файл уведомлений
└── second-mind/
├── docker-compose.yml
├── .env
├── nginx.conf
├── Dockerfile
├── webhook-server/
├── obsidian_repo/
└── quartz_build/
```
## Права доступа
### Важные права файлов
```bash
# ACME файл должен быть доступен только Traefik
chmod 600 /var/lib/docker/volumes/reverse-proxy_traefik_data/_data/acme.json
# Конфигурационные файлы Authelia
chmod 644 /DOCKER/auth/authelia/configuration.yml
chmod 644 /DOCKER/auth/authelia/users_database.yml
chmod 600 /DOCKER/auth/.env
# База данных SQLite
chmod 644 /DOCKER/auth/authelia/db.sqlite3
```
Следующий документ: [[Инфраструктура - Развертывание]]

View File

@@ -1,227 +0,0 @@
## Описание
Инфраструктурные сервисы обеспечивают базовую функциональность для всех приложений в экосистеме aepif.ru. Включают в себя reverse proxy с автоматическими SSL сертификатами и систему аутентификации.
## Архитектура инфраструктуры
```mermaid
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 # Файл уведомлений
```
## Принцип работы
### Маршрутизация запросов
1. **Пользователь** обращается к любому поддомену `*.aepif.ru`
2. **Traefik** перехватывает запрос и анализирует Host header
3. **Traefik** проверяет, требуется ли аутентификация (middleware authelia)
4. Если нужна **аутентификация** → перенаправление на `auth.aepif.ru`
5. **Authelia** проверяет сессию или запрашивает логин/пароль
6. После успешной **аутентификации** → возврат к исходному сервису
7. **Traefik** проксирует запрос к целевому контейнеру
### SSL сертификаты
1. **Let's Encrypt ACME** автоматически получает сертификаты для новых доменов
2. **Traefik** автоматически обновляет сертификаты перед истечением
3. Все **HTTP запросы** автоматически перенаправляются на HTTPS
4. **Сертификаты сохраняются** в 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
```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**: Полный запрет доступа
## Пользователи и группы
### Структура пользователей
```yaml
users:
admin:
displayname: "Administrator"
password: "$argon2id$..." # Хешированный пароль
email: epifantsev1aa@gmail.com
groups:
- admins # Администраторская группа
- users # Базовая группа пользователей
```
### Управление паролями
- Пароли хранятся в формате **Argon2id** (безопасное хеширование)
- Поддержка **reset паролей** через email уведомления
- Интеграция с **TOTP** для двухфакторной аутентификации
## Безопасность
### Уровни защиты
1. **SSL/TLS**: Все соединения зашифрованы
2. **Forward Auth**: Централизованная проверка аутентификации
3. **Session Management**: Безопасное хранение сессий в Redis
4. **Password Hashing**: Argon2id для хранения паролей
5. **Rate Limiting**: Защита от брутфорса (3 попытки за 2 минуты)
6. **Session Expiration**: Автоматическое истечение сессий
### Настройки безопасности
```yaml
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
```bash
# Проверка 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 - Обзор системы]] - основное приложение на этой инфраструктуре

View File

@@ -1,148 +0,0 @@
## Предварительные требования
### Системные требования
- Ubuntu/Debian сервер с минимум 2GB RAM
- Docker и Docker Compose установлены
- Открыты порты: 80, 443, 2222, 8080
- Настроены DNS записи для поддоменов
### Подготовка DNS
Создайте A-записи для всех поддоменов:
```dns
traefik.aepif.ru IN A YOUR_SERVER_IP
auth.aepif.ru IN A YOUR_SERVER_IP
notes.aepif.ru IN A YOUR_SERVER_IP
git.aepif.ru IN A YOUR_SERVER_IP
webhook.aepif.ru IN A YOUR_SERVER_IP
```
## Порядок развертывания
⚠️ **Важно**: Инфраструктурные сервисы должны быть развернуты **первыми**, так как все остальные приложения зависят от них.
### Последовательность установки:
1. **Traefik Reverse Proxy** (сначала)
2. **Authelia Authentication** (после Traefik)
3. **Second Mind** (после обеих частей инфраструктуры)
## 1. Развертывание Traefik
### Подготовка директорий
```bash
# Создание директории проекта
mkdir -p /DOCKER/reverse-proxy
cd /DOCKER/reverse-proxy
# Создание volume для данных Traefik
docker volume create traefik_data
```
### Создание .env файла
```bash
cat > .env << 'EOF'
DOMAIN=aepif.ru
ADMIN_EMAIL=epifantsev1aa@gmail.com
EOF
```
### Создание docker-compose.yml
```bash
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
- --certificatesresolvers.letsencrypt.acme.email=epifantsev1aa@gmail.com
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
- --providers.docker.exposedByDefault=false
- --api.insecure=true
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "2222:2222"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.aepif.ru`)
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
- traefik.http.routers.traefik.service=api@internal
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
restart: unless-stopped
volumes:
traefik_data:
networks:
proxy:
name: proxy
driver: bridge
EOF
```
### Создание сети и запуск
```bash
# Создание внешней сети proxy
docker network create proxy
# Запуск Traefik
docker-compose up -d
# Проверка статуса
docker-compose ps
docker-compose logs -f
```
### Проверка работы Traefik
```bash
# Проверка HTTP → HTTPS редиректа
curl -I http://traefik.aepif.ru
# Проверка HTTPS
curl -I https://traefik.aepif.ru
# Проверка dashboard (должен быть доступен)
curl -I https://traefik.aepif.ru/dashboard/
```
## 2. Развертывание Authelia
### Подготовка директорий
```bash
# Создание директории проекта
mkdir -p /DOCKER/auth/authelia
cd /DOCKER/auth
```
### Генерация секретов
```bash
# Генерация всех необходимых секретов
JWT_SECRET=$(openssl rand -base64 48)
SESSION_SECRET=$(openssl rand -base64 48)
STORAGE_KEY=$(openssl rand -base64 24)
REDIS_PASSWORD=$(

View File

@@ -0,0 +1,259 @@
# Обзор инфраструктуры 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/Администрирование]]** - Управление пользователями