🛡️ Disaster Recovery Runbook

Mac Mini 災難復原與無痛接手操作手冊

mac-mini-pro (Apple Silicon)・四大防線協同・SOP 標準作業程序

Mac Mini Pro 災難復原與無痛快速接手操作手冊 (Disaster Recovery Runbook)

最後更新日期:2026-10-10
適用主機:mac-mini-pro (Apple Silicon M-series)
適用場景:macOS 系統重灌、硬碟損毀格式化、或使用全新 Mac mini 硬體取代上線。


一、 核心架構:四大防線協同體系

為達到「最少手動設定、最快速度恢復」的目標,系統設計了四層互補防線:

graph TD
    subgraph S1 ["1. Time Machine"]
        TM1["macOS 帳號與密碼"]
        TM2["Keychain 鑰匙圈憑證"]
        TM3["/Applications 大型應用程式"]
        TM4["Wi-Fi 與系統偏好設定"]
    end

    subgraph S2 ["2. 外接硬碟 /Volumes/Samsung/gemini-media-stack-backup"]
        SS1["每日冷備份 SQL Dumps"]
        SS2["Native Apps 核心資料庫"]
        SS3["Immich 照片庫與大容量資料"]
        SS4["專案代碼包 gemini-workspace-code.tar.gz"]
        SS5["極速本機匯入 數分鐘完成"]
    end

    subgraph S3 ["3. Google Drive ~/Gemini"]
        GD1["最新 Compose 與程式碼"]
        GD2["bootstrap-new-mac.sh 腳本"]
        GD3["最新系統快照 Brewfile 與 crontab"]
        GD4["age 加密之金鑰備份"]
    end

    subgraph S4 ["4. NAS1 異地備份"]
        NAS1["Synology DS918+ 每日 DB/快照"]
        NAS2["每週日 Time Machine 全機映像"]
    end

為什麼不能單靠 Time Machine?


二、 快速接手標準作業流程 (Standard Takeover SOP)

【情境 A】使用全新 Mac mini 硬體接手(全新開箱)

步驟 1:基礎硬體與初始設定

  1. 開機進入 macOS 初始設定精靈:
    • 方式一(最快推薦):選擇「從 Time Machine 備份回復」,選擇 NAS1 上的 Time Machine 備份或本地備份,直接還原使用者帳號 authur 與應用程式。
    • 方式二(乾淨安裝):建立使用者帳號 authur(務必維持相同帳號名稱 authur,以確保所有路徑一致)。
  2. 插上 外接硬碟 /Volumes/Samsung。
  3. 下載並登入 Google Drive,確認資料夾掛載於: ~/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini

    💡 免聯網/離線接手備用方案:若暫時無網路或未登入 Google Drive,可直接插上 Samsung 外接硬碟解壓代碼:

    mkdir -p "$HOME/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini" "$HOME/Gemini"
    tar xzf /Volumes/Samsung/gemini-media-stack-backup/$(date +%Y-%m-%d)/gemini-workspace-code.tar.gz -C "$HOME/Gemini/"
    

步驟 2:執行一鍵接手引導程式 (Bootstrap)

開啟終端機 (Terminal),執行以下指令:

# 1. 建立 Google Drive 符號連結(若尚未建立)
ln -s "$HOME/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini" "$HOME/Gemini"

# 2. 啟動一鍵接手引導程式
zsh ~/Gemini/bootstrap-new-mac.sh

此引導程式將自動執行:

  1. 依賴環境檢查:確認 Homebrew,安裝 age、rsync、python3。
  2. 解鎖機密金鑰:
    • 私鑰已直接存放於外接硬碟 /Volumes/Samsung/age-key.txt(權限 600)與本機 ~/.age/gemini-key.txt。新機插上 Samsung 外接硬碟時,引導程式將自動偵測並秒級完成解密,完全免手動貼上!
    • 亦可將私鑰字串同步備份至密碼庫 Vaultwarden(項目名稱:age key - Gemini),支援手動貼上或終端機輸入解密(解密完成後立即自動銷毀暫存檔,零痕跡保護)。
    • 自動將 .env.local 解密至 ~/Gemini-local/.env.local 與 ~/Gemini/.env.local。
    • 自動還原 ~/.ssh/nas1_ed25519 並設定權限 600。
  3. 軟體與 App 自動裝齊 (Brewfile):
    • 自動調用快照中的 Brewfile,一鍵安裝 190+ CLI 工具、OrbStack、Plex、Sonarr、Radarr、SABnzbd 等。
  4. 極速資料與資料庫還原:
    • 自動呼叫 restore-orbstack.sh,直接從 /Volumes/Samsung/gemini-media-stack-backup 的最新快照還原 PostgreSQL dumps (Nextcloud, Immich, Joplin, Paperless, Miniflux)、SQLite (Wallabag, Wallos) 與 Native App 資料庫。
  5. 常駐排程一鍵啟用:
    • 解壓縮 29 個 LaunchAgents 至 ~/Library/LaunchAgents/ 並批次 launchctl load。
    • 還原系統 crontab 排程。

步驟 3:網路身份與網域名稱承接

為了讓內網其他設備、手機 App 與外部 Webhook 能無縫連線,需設定主機識別:

  1. 設定本機電腦名稱:
    sudo scutil --set HostName mac-mini-pro
    sudo scutil --set LocalHostName mac-mini-pro
    sudo scutil --set ComputerName mac-mini-pro
    
  2. Tailscale 重新登入並綁定:
    tailscale login
    # 於 Tailscale Admin Console 將此機器名稱設為 mac-mini-pro
    tailscale funnel 8089 on
    
  3. 路由器 IP 綁定(DHCP Reservation):
    • 進入家中路由器後台(UniFi / Asus 等),將新 Mac mini 的實體網路卡 MAC 位址指定為原舊機 IP(例如 192.168.88.x)。

步驟 4:啟動服務與全域健全檢查

  1. 啟動容器群組:
    zsh ~/Gemini/start-work-orbstack.sh
    
  2. 執行全域健康檢查 (驗證 35+ 個容器與原生 App):
    python3 ~/Gemini/scripts/check-all-services.py
    

    檢查項目包含:Nextcloud, Homarr, Authelia, Joplin, Immich, Paperless, Plex, Sonarr, Radarr, SABnzbd 等。


三、 日常維護與自動快照機制

您不需要手動手動維護備份,現有自動化排程已涵蓋:

排程項目 執行週期 備份目標與內容
nas-backup-central-orbstack.sh 每天清晨 05:07 (由 NAS1 喚醒腳本觸發) • 自動產出 system-snapshot (Brewfile, LaunchAgents, Crontab)
• 自動 dump Nextcloud, Immich, Joplin, Paperless, Miniflux, Wallabag, Wallos
• 打包 Native App DBs (Plex, Sonarr, Radarr, Prowlarr)
• 完整封裝 Google Drive 專案目錄 (gemini-workspace-code.tar.gz)
• 雙寫至 NAS1 (/volume1/Backup/) + 本機外接硬碟 (/Volumes/Samsung/gemini-media-stack-backup/)
nas1-on-orbstack.sh (Time Machine) 每週日清晨 (DB 備份完成後) • 自動觸發 Time Machine 增量備份至 NAS1 網路共用空間
• 內建 45 分鐘安全逾時防護,完成後安全關機 NAS1
env-encrypt.sh 每天 01:00 • 以 age 公鑰加密 .env.local 與 nas1_ed25519
• 同步儲存於 Google Drive 與本機
sync-env-local.sh 每 30 分鐘 • 同步 Google Drive 編輯版 .env.local 至本機 SSD 執行目錄

四、 關鍵應急指令速查表

⬅ 文件目錄