feat(ops): offsite-бэкапы и проверки профилей
- deploy/backup.sh: BACKUP_OFFSITE_TARGET (rsync или rclone:remote:path) выгружает готовый архив после локальной ротации; неудача выгрузки только предупреждает. Ротация на приёмнике — опционально (BACKUP_OFFSITE_KEEP_DAYS, rclone delete --min-age). Имя архива получает суффикс, если бэкап запущен дважды в одну секунду. - deploy/install.sh: offsite-настройки в .env (BACKUP_OFFSITE_TARGET, BACKUP_OFFSITE_KEEP_DAYS) отдельным разделом; детектор незаполненных плейсхолдеров учитывает цифры в именах (FAIL2BAN_ENABLED); dry-run больше не требует прав на /opt/glchat — явность GLCHAT_ETC_DIR фиксируется до подключения common.sh, иначе ветка временного каталога была недостижима. - scripts/test-profiles.sh: сверка таблицы профилей 10.10 и одинакового набора PROFILE_* (46 проверок), make profiles-test / ops-test. - scripts/test-backup.sh: бэкап и offsite на синтетическом инстансе — локальный rsync-приёмник, шим rclone, недоступный хост, нечисловой срок (12 проверок), make backup-test. - scripts/test-install.sh: проверка offsite-ключей в .env после установки.
This commit is contained in:
@@ -39,3 +39,6 @@ WEBHOOK_SECRET= # подпись вебхуков
|
||||
LIVEKIT_API_KEY= # ключ LiveKit (фаза 3)
|
||||
LIVEKIT_API_SECRET= # секрет LiveKit (фаза 3)
|
||||
AGE_RECIPIENT= # публичный age-ключ для шифрования бэкапов
|
||||
BACKUP_KEEP_DAYS= # сколько дней хранить бэкапы (профиль задаёт значение)
|
||||
BACKUP_OFFSITE_TARGET= # необязательно: rsync-цель (user@host:/path) или rclone:remote:path
|
||||
BACKUP_OFFSITE_KEEP_DAYS= # необязательно: чистить копии на приёмнике старше N дней (rclone)
|
||||
|
||||
Reference in New Issue
Block a user