智能家居系列(六):Home Assistant Green 壞掉怎麼辦?我的備份與復原計畫

目錄
智能家居系列(六):Home Assistant Green 故障後,從外部備份復原到替代主機的流程

前面幾篇文章裡,我把家裡不同品牌的設備接進 Home Assistant,也開始把儀表板、自動化與 AppDaemon 程式一點一點整理成自己習慣的樣子。

這些東西愈接近日常生活,我愈難再把 Home Assistant Green 當成一台壞了就重新設定的普通家電。

如果它突然無法開機,失去的不只是手機上的幾個開關。房間分類、entity、整合設定、自動化、料理模式和離家流程,都可能要重新建立。真正麻煩的也不是重新買一台主機,而是我能不能把原本的家恢復成可用狀態。

目前的專案裡已經留下 AppDaemon 的程式碼與設定,但我還沒有 Home Assistant 備份排程、外部儲存位置或復原演練紀錄。也就是說,程式碼有版本,整套系統卻還沒有一條經過確認的回家路線。

所以這篇不是故障實錄,也不會假裝我已經完成復原測試。 它要整理的是我現在準備建立的計畫:讓 Green 故障時,我手上仍有另一份拿得到、解得開,而且知道怎麼還原的備份。

我怕的不是硬體壞掉,而是只剩下硬體裡的備份

Home Assistant 已經有內建的備份功能。依照官方備份說明,備份預設會加密並存成 .tar 壓縮檔;在 Home Assistant OS 上,完整備份可以包含 config、share、手動安裝或建立的 apps、ssl 與 media 等資料。

這表示我不需要自己逐一打包每個資料夾,Home Assistant 已經能建立一份可以拿來復原或移機的系統備份。 但如果備份只放在 Green 裡面,它和原系統其實共用同一個故障點。當儲存空間損壞、主機無法啟動,或我根本進不了備份頁面時,那份檔案就算存在,也不一定拿得到。

這是我這份計畫的第一個原則:本機備份解決設定改壞或更新失敗;外部副本才處理整台 Green 無法使用。

三階段備份計畫:Home Assistant Green 建立加密備份、複製到外部裝置,再把復原金鑰分開保存
備份檔、原主機與解密金鑰不應該只存在同一個地方;其中任何一項拿不到,復原都可能停在半路。

我的第一版備份計畫,要處理三個不同問題

我不打算用一份備份同時解決所有風險,而是把它拆成三層。每一層負責一種失敗情境,也讓我比較容易看出目前還缺哪一塊。

第一層:讓 Green 自己定期建立備份

Home Assistant 可以在「設定 → 系統 → 備份」中設定自動備份。官方的建議設定會每天備份一次,保留最近三份,預設不包含 media、share 與本機 apps 資料夾;也可以改成自訂日期、時間、內容與保留數量。

我的第一版計畫會從每日自動備份開始,並保留多個最近版本,而不是永遠只留最後一份。這樣做主要是防止兩種情況:剛完成一項設定後才發現內容有問題,以及問題過了幾天才被注意到。如果只有最新備份,錯誤也可能已經跟著被保存。

我也會保留「重大變更前手動備份」這個動作。更新 Home Assistant、AppDaemon 或會改動大量 entity 的整合之前,先建立一份名稱清楚的手動備份。自動備份負責規律,手動備份則替高風險操作留下一個明確還原點。

第二層:至少有一份不在 Green 裡

Home Assistant 官方也明確建議,把副本放到 Home Assistant 以外的另一個系統,理想上還要有一份異地副本。現在備份位置可以是網路儲存空間,也可以由支援備份位置的整合提供,例如 Google Drive、Microsoft OneDrive、Synology DSM 或 Home Assistant Cloud。

我還沒有從現有資料確認最後要使用哪一個位置,所以這裡先不把某個服務寫成已經啟用。選擇時我會看三件事:Green 故障時能不能從另一台電腦取得檔案、是否能保留多個版本,以及帳號或 NAS 暫時不可用時還有沒有第二條路。

服務名稱不是這一層的重點。真正的門檻是:當 Green 已經關機,我還能不能在不依賴它的情況下拿到一份近期備份。

第三層:把 Emergency Kit 當成備份的一部分

Home Assistant 的自動備份預設會加密。第一次設定時,介面會要求下載 Emergency Kit,裡面包含復原所需的加密金鑰。

這個設計保護了備份裡的敏感設定,卻也帶來一個很容易忽略的條件:如果備份檔在雲端,金鑰卻只存在已經壞掉的主機或同一台無法使用的電腦,那份備份仍然救不了我。

我的做法會是把 Emergency Kit 和備份檔分開保存,而且至少確認其中一份不依賴 Home Assistant 本身。這裡要保護的不只是「不要弄丟」,也包括不要把金鑰和加密備份放在完全相同、同時可能失效的位置。

有備份檔,還不能證明我復原得回來

備份頁面顯示成功,很容易讓人覺得事情已經完成。但一套沒有走過復原流程的備份,只能證明檔案曾經被建立,不能證明我在緊張的情況下找得到它、解得開它,也不能證明還原後真正重要的功能可以運作。

官方流程允許在新裝置的初始設定畫面上傳備份,這不只用於故障,也可以把系統移到不同類型的硬體。還原時間會依安裝內容而變化;官方提醒,大型安裝可能需要約 45 分鐘,因為 Core 與 apps 都要重新安裝。

因此我的復原演練不會只停在「看到登入畫面」。我會用下面這份最小驗證清單確認家真的回來了:

  • 能以原本帳號登入,房間與儀表板仍然存在;
  • 關鍵整合載入成功,重要設備不會大量顯示 unavailable;
  • 一個簡單的燈光或窗簾控制可以正常執行;
  • 所需的 AppDaemon 程式和設定仍然存在;
  • 自動備份排程、外部位置與 Emergency Kit 對應到復原後的系統;
  • 手機 App、通知或外部服務如果需要重新授權,已經被列入復原步驟。
復原演練流程:關閉原本主機、用備份與金鑰還原替代主機,再檢查燈光、窗簾與自動化
復原完成的判準不是畫面能開,而是最重要的控制與自動化經過逐項驗證。

我目前還沒有材料能證明這場演練已經完成,所以不能把這張圖描述成測試結果。它是我要照著執行的復原路線,也是之後補上日期、耗時與異常紀錄的位置。

Green 真的壞掉時,我會照這個順序處理

主機無法開機時,第一步不是立刻重設或反覆拔插,而是先確認故障範圍。如果只是網路或電源問題,恢復連線就可能解決;如果確定需要更換硬體,接下來才進入復原流程。

我的處理順序會是:

  1. 從外部位置下載最近一份已知可用的備份,保留原檔,不直接覆寫。
  2. 找到對應的 Emergency Kit,確認加密金鑰可讀取。
  3. 準備新的 Home Assistant 裝置或完成原裝置的重新安裝,停在初始設定畫面。
  4. 上傳備份並輸入加密金鑰,等待系統完成還原。
  5. 先驗證登入、整合與儀表板,再測試少量關鍵控制與 AppDaemon 流程。
  6. 確認系統穩定後,才處理手機連線、外部服務重新授權,以及新的備份排程。

這個順序刻意把「拿到備份」和「修改現場」分開。只要原始備份還在,我就能重新判斷;如果一開始就把唯一檔案移動、解壓或覆寫,復原失敗時反而少一條退路。

我能接受的取捨,是多留幾份;不能接受的是完全沒驗證

備份愈完整、保留愈久,會占用更多空間,也需要更長時間建立和還原。media、share 或大型 apps 是否納入,應該看裡面的內容能不能重新取得,而不是一律全部打包。官方也建議在不需要時排除這些資料,縮小備份並加快復原。

我不打算為了追求一個看起來完整的數字,就把所有歷史資料永遠留下。真正重要的是設定、關鍵 apps 與那些無法靠重新登入就自動回來的內容。保留策略也要定期查看,避免空間滿了之後,自動備份在我沒有注意時停止。

另一個取捨是演練成本。準備替代硬體、等待還原,再逐項驗證,確實比按下「建立備份」麻煩得多。但如果完全不演練,所有時間壓力都會被推到真正故障的那一天。

所以我會把第一次完整復原測試當成這份計畫尚未完成的最後一步,而不是可有可無的加分題。

備份的目的,是讓這個家有辦法重新開始

我當初選擇 Home Assistant Green,是因為它讓我跳過安裝環境的準備,把時間放在設備整合與生活流程上。現在系統愈來愈重要,我也必須補上當初被簡化掉的另一面:如果這台主機不在了,我要怎麼繼續。

程式碼放進版本控制很重要,但它只涵蓋整個 Home Assistant 系統的一部分。本機自動備份讓我能回到最近狀態,外部副本讓備份不會和 Green 一起消失,Emergency Kit 讓加密檔案真正可用,復原演練則確認這些準備能接回日常生活。

對我來說,備份完成的標準不再是頁面上出現一個綠色勾勾。真正的標準是:當 Home Assistant Green 壞掉,我知道備份在哪裡、知道怎麼解開,也知道恢復後要先檢查什麼。

留言討論