ステージ8:運用
目標:ラップトップ紛失、サーバーダウン、不正なアップデート、マシン変更があってもサイトが生き残り、誰も手順を覚えている必要がない。
手順
- バックアップ
scripts/backup.shを毎週、およびリスクのある作業の前に実行します。これにより、データベース、アップロード、すべてのGitブランチとスタッシュ、およびClaudeメモリがパッケージ化されます。- zipがマシンから出る前に
--encryptを使用し、コピーを1つオフマシンに保持します。 - ライブ環境:ホストの日次バックアップに加え、デプロイスクリプトとコンテンツスクリプトが取得するダンプ。
- すべてのデータの保存場所を文書化 する:プロジェクトの
docs/reference/DISASTER_RECOVERY.mdのセクション0に記述します。写真のオリジナルフォルダを含めます(Git管理外)。 - 復元訓練:四半期に一度、予備のマシンまたは新しいDDEVプロジェクトに復元し、時間を計測し、§5に記録します。復元したことのないバックアップは希望であって、バックアップではありません。
- 認証情報:すべてのシークレットは
CREDENTIALS_INVENTORY.mdに1行として記載します(名称、保存場所、保持者、最終ローテーション日)。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=を受け付ける。 - クラウドビルドボックスに、他に存在しないブランチとスタッシュがあり、そのボックスはプッシュできなかった。ボックスが停止または削除される前に、
git bundleをSSH経由で使用してそれらを引き出す。 - あるOSで作成したビジュアルベースラインが別のOSでは機能しない。それらは固定のDockerイメージに保持する。
- 期限のある無料プランやクレジットは、脱出訓練の期限である:期限の1週間前に、Git + 状態バンドル + バックアップから次のマシンに再構築できることを証明する。