Operate · Recovery
先診斷、可驗證地復原
這裡是值班分流與復原順序;可執行腳本和完整事故處置手冊只隨已驗證的 Source Kit 提供。網站不會遠端操作你的節點,也不會要求 API key。
錯誤碼分流
先記錄 HTTP status、error.code、request_id、Retry-After 與聚合健康狀態;不要記錄 API key、RTSP URL、請求 body 或環境變數。完整診斷與升級條件在 Source Kit 的 docs/api/operator-playbooks.md。
| 穩定信號 | 第一本手冊 |
|---|---|
| source.authentication_failed · source_unreachable · rtsp_* | RTSP 身分驗證、斷線或存取政策 |
| model_unavailable · inference.capacity_exceeded | Provider 可用性與容量 |
| database_capacity_exceeded · evidence_capacity_exceeded | 儲存壓力與復原點 |
| delivery retrying/dead_letter | Webhook 故障與有界重播 |
| invalid_api_key · bad webhook signature | 密鑰/簽署密鑰洩漏 |
建立靜止、可驗證的備份
在受信任的 POSIX shell 中進入 kit 的 deploy/api。Windows 請使用 Ubuntu/WSL 內的獨立 checkout;這些 recovery 腳本不是 PowerShell 命令。--stop-writers 會造成短暫監控缺口,必須先核准並記錄。
install -d -m 700 /secure/sentinel-backups
cd deploy/api
./recovery/backup.sh \
--output-dir /secure/sentinel-backups \
--stop-writers腳本只停止它確認屬於該 Compose 專案的 writer,使用 SQLite online backup,並保留 data、evidence 與 model cache。備份不含 .env;災難復原還需要不可變 digest 的精確 API image 與分開保管的 secret。
每份副本都要驗證
./recovery/verify.sh \
--backup-dir /secure/sentinel-backups/sentinel-backup-IDverify 會重算大小與 SHA-256、檢查 archive path 與 SQLite quick_check。複製到加密、受控的 off-node 儲存後要再跑一次;manifest hash 只能偵測損壞,不是簽章或不可變儲存。
只還原到新的 volume,再離線驗證
BACKUP=/secure/sentinel-backups/sentinel-backup-ID
./recovery/restore.sh \
--backup-dir "$BACKUP" \
--target-data-volume sentinel-restore-data-ID \
--target-model-volume sentinel-restore-models-ID
# Review the dry-run, then authorize creation of only those new volumes.
./recovery/restore.sh \
--backup-dir "$BACKUP" \
--target-data-volume sentinel-restore-data-ID \
--target-model-volume sentinel-restore-models-ID \
--execute
./recovery/validate-restore.sh \
--backup-dir "$BACKUP" \
--data-volume sentinel-restore-data-ID \
--model-volume sentinel-restore-models-ID不得就地覆蓋 production volume。離線 byte-for-byte 驗證後,才用不同 project、network、port 與還原 volume 啟動候選 Runtime,並重跑 readiness、Source/Monitor reconcile、證據下載、Webhook backlog 與真實模型驗收。
回復上一代,不刪除任何一代
./recovery/rollback.sh --backup-dir "$BACKUP"
# Only after the read-only preflight proves volumes and exact image identity:
./recovery/rollback.sh --backup-dir "$BACKUP" --executeRollback 會遺失只寫入候選版本的資料。先停止新寫入,並在需要時備份候選版本。腳本不會刪除原始或候選 volume;不要添加 --volumes,也不要執行 docker system prune --volumes。