Files
awg-dash/docs/adr/006-state-sqlite.md

30 lines
1.8 KiB
Markdown

# 006. Состояние: SQLite (WAL) + /config + /data
- **Статус:** принято
- **Контекст/issue:** #15, #20
## Контекст
Нужно хранить правила маршрутизации, исключения, режим, расписание GeoIP, метаданные конфигов,
устройства, audit log и историю метрик. Профиль нагрузки: единичный пользователь, десятки записей в секунду,
важна надёжность и отсутствие внешних зависимостей.
## Решение
- **SQLite в режиме WAL** в `/data/awg-dash.db` — всё структурированное состояние и audit log;
- `/config` — файлы `.conf`, права 0600, секреты в подкаталоге с ограниченным доступом;
- `/data` — кэш GeoIP и история метрик с retention.
Оба каталога объявляются томами образа: без них конфигурация не переживёт пересоздание контейнера.
## Альтернативы
- **Postgres/Redis** — лишний сервис в образе для единичного пользователя.
- **Только файлы JSON** — нет транзакций, аудита и атомарного apply/rollback.
## Последствия
- Миграции схемы обязательны с первого дня (#20) и проверяются при старте.
- Backup/restore = копирование `/data` и `/config` — отражается в runbook (#45).
- История метрик растёт: нужен retention и периодическая очистка (#28).