第八階段:營運 (Operate)
目標:網站能夠承受筆電遺失、伺服器故障、錯誤更新或更換機器等情況,且不需要任何人記住如何處理。
步驟
- 備份。
- 每週執行
scripts/backup.sh,並在進行有風險的操作前執行。它會打包資料庫、上傳檔案、所有 Git 分支與暫存區,以及 Claude 記憶。 - 在壓縮檔離開本機前使用
--encrypt,並在機器外保留一份副本。 - 線上備份:主機的每日備份,加上部署與內容腳本產生的匯出檔。
- 每週執行
- 記錄所有資源的位置,寫在專案內的
docs/reference/DISASTER_RECOVERY.md的章節 0 中。包括原始照片資料夾:它不在 Git 中。 - 還原演練。 每季度在備用機器或全新的 DDEV 專案上執行一次還原,計時並記錄在 §5 中。從未還原過的備份只是個希望,不是備份。
- 憑證: 每個機密在
CREDENTIALS_INVENTORY.md中都有一行記錄(名稱、存放位置、誰擁有、上次輪換時間)。輪換任何曾被 AI 代理看過的機密。 - 例行工作: 週、月、年度的檢查項目、更新政策與警報設定在
docs/reference/OPERATIONS.md中。外掛更新先上到暫存環境。 - 使用超過一台機器? 遵循
references/multi-machine.md:docs/team/BRIDGE.md存放角色、規則與交接記錄;scripts/workstation-doctor.sh檢查環境一致性;scripts/make-state-bundle.sh打包被 Git 忽略的設定檔(加密)。
閘門 (在 SITE_STATUS.md 中打勾)
- 已排程備份,並有離機副本
- 已執行還原演練(日期、耗時分鐘數)
- 更新與警報例行程序已寫入
OPERATIONS.md
教訓
- 備份腳本曾指向錯誤的 Claude 記憶資料夾。工作階段是從上層資料夾執行的,因此記憶檔案存在不同的路徑下。腳本會推導出路徑,但為此情況接受
CLAUDE_MEM=參數。 - 某個雲端構建主機上有一個分支和暫存區只在該主機上存在,且該主機無法推送。請在該主機關閉或刪除之前,使用 SSH
git bundle將它們提取出來。 - 在一種作業系統上建立的視覺基準,在另一種上會失敗。請將它們保留在固定的 Docker 映像檔中。
- 有結束日期的免費方案或點數,就是一個退出演練的期限:在到期前一週,證明你可以從 Git、狀態套件和備份檔,在下一台機器上重建網站。