feat: harden production data and backups
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-06 14:08:07 +07:00
parent a4bd395856
commit 870d9cc7f9
17 changed files with 215 additions and 36 deletions
+20 -5
View File
@@ -32,7 +32,7 @@ curl -fsS https://rf4spotter.ru/health
curl -fsS https://rf4spotter.ru/ready
```
API-контейнер перед стартом применяет Alembic-миграции и запускает seed. До альфы демонстрационные уловы следует убрать отдельной задачей; справочники должны остаться.
API-контейнер перед стартом применяет Alembic-миграции и запускает идемпотентный seed. В production он добавляет только минимальные справочники и точки; демонстрационные уловы жёстко отключены настройкой `SEED_DEMO_DATA=false`.
Проверка TLS и маршрутизации:
@@ -65,11 +65,26 @@ curl -fsS https://rf4spotter.ru/ready
Перед обновлением со сменой схемы обязателен backup PostgreSQL. Не удаляйте volumes и не используйте `down -v`.
## 6. Что ещё блокирует приглашение альфа-пользователей
## 6. Резервное копирование и восстановление
- проверенный backup/restore PostgreSQL и MinIO;
- production-safe seed без демонстрационных уловов;
- одноразовый секрет для повторной загрузки скриншота вместо одного UUID;
Храните копии вне диска приложения. Скрипт создаёт PostgreSQL dump, архив MinIO и контрольные суммы в новом каталоге с UTC-временем:
```bash
./deploy/backup.sh /srv/rf4-backups
```
Восстановление заменяет содержимое PostgreSQL и MinIO данными из выбранной копии, временно останавливая API, web и MinIO. Это намеренно защищённая подтверждением операция:
```bash
CONFIRM_RESTORE=rf4-spotter ./deploy/restore.sh /srv/rf4-backups/20260906T120000Z
curl -fsS https://rf4spotter.ru/ready
```
Перед приглашением пользователей проведите учебное восстановление на отдельном сервере или с отдельным Compose project name. Одной только успешной архивации недостаточно. После проверки настройте ежедневный запуск `backup.sh`, шифрование/выгрузку копий во внешнее хранилище и уведомление при ошибке; храните минимум 7 ежедневных и 4 еженедельных копии.
## 7. Что ещё блокирует приглашение альфа-пользователей
- учебное восстановление PostgreSQL и MinIO на изолированном контуре;
- проверка полного bootstrap на пустых volumes;
- политика хранения и удаления пользовательских данных;
- базовый мониторинг `/ready`, диска и срока TLS-сертификата.