Renew docs

This commit is contained in:
Magnus Root 2026-04-16 15:21:59 +03:00
parent 130203c778
commit f2de534734
3 changed files with 764 additions and 1498 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,26 +1,88 @@
# Magos # Magos
Программа для автоматизированного управления конфигурациями WAF. Программа для автоматизированного управления конфигурациями Angie, PTAF Nginx, SolidWall Nginx и Docker Compose.
## Описание ## Описание
Программа выполняет следующие задачи: Программа выполняет следующие задачи:
1. Подключается к PostgreSQL БД (primary/secondary) 1. Подключается к PostgreSQL БД (primary/secondary fallback)
2. Определяет instance текущего хоста по hostname 2. Определяет instances текущего хоста по hostname
3. Получает биндинги для данного instance из таблицы `apps_settings` 3. Для каждого клиента определяет WAF-вендор (PTAF или SolidWall)
4. Группирует биндинги по `client_title` 4. **Для PTAF-клиентов:**
5. Для каждого клиента: - Проверяет наличие Docker-образа, при необходимости скачивает
- Получает данные из БД или через API (server_name, aliases, origins)
- Выделяет свободные порты для контейнеров - Выделяет свободные порты для контейнеров
- Генерирует конфигурационные файлы Angie - Генерирует конфигурационные файлы Angie и Nginx
- Создает директории для контейнеров - Создаёт docker-compose.yml и запускает контейнеры
- Генерирует конфигурационные файлы Nginx для контейнеров - Управляет graceful drain при масштабировании и миграции
- Генерирует docker-compose.yml файлы 5. **Для SolidWall-клиентов:**
- Запускает контейнеры через docker-compose - Генерирует конфигурационные файлы solidwall-nginx
- Выполняет reload solidwall-nginx при изменениях
6. Поддерживает идемпотентность — повторный запуск без изменений в БД не вносит изменений
## Конфигурация
Конфигурационный файл: `/etc/magos/magos.env`
```bash
# База данных
DB_USER=login
DB_PASSWORD=password
DB_NAME=waf_info
DB_PORT=5432
PRIMARY_DB_HOST=10.100.10.8
SECONDARY_DB_HOST=10.100.13.5
# Docker-образ PTAF (глобальный)
DOCKER_IMAGE=ptaf-core-nginx-agent:release-4.3.1.431839-debian-bullseye-nginx-1.28.0
DOCKER_IMAGE_URL=https://example.com/image.tar
# Параметры Nginx
WORKER_PROCESSES=4
WORKER_CONNECTIONS=64000
```
## Требования к хосту
Для корректной работы на PTAF-хостах необходимо зарезервировать диапазон портов:
```bash
# Добавить в /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports=18000-23999
# Применить немедленно
sysctl -w net.ipv4.ip_local_reserved_ports=18000-23999
```
## Подробности ## Подробности
Изучить как работает программа можно в файле ARCHITECTURE.md. Изучить как работает программа можно в файле **ARCHITECTURE.md**.
Посмотреть зависимость работы программы от БД в файле DATABASE_SCHEMA.md Посмотреть зависимость работы программы от БД в файле **DATABASE_SCHEMA.md**.
## Диагностика
### Lock-файл завис
```bash
# Просмотреть PID
cat /var/lock/ptaf-main.lock
# Если процесс не существует — magos удалит lock автоматически при следующем запуске
# Если процесс завис — завершить вручную
kill {PID} && rm /var/lock/ptaf-main.lock
```
### Переназначить порты контейнера
```bash
rm /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent*/.ports.json
# При следующем запуске magos порты будут перевыделены
```
### Принудительно пересоздать контейнер
```bash
# Удалить контейнер — magos создаст новый при следующем запуске
docker-compose -f /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent001/docker-compose.yml down
```