系統架構 & 單點故障分析

人機工作站 + Homelab 全景圖 · 單點故障(SPOF)盤點 · Tapo P110M 智慧插座評估

COO 製作 · 2026-06-05 · 觸發:HA Pi 離線事件
為什麼做這頁:今天 12:45 Home Assistant 的 Raspberry Pi 整台掛掉,遠端 SSH 進不去(卡 banner exchange),只能跑去現場拔電重開。這暴露了系統的單點故障。下面把整套系統畫出來、標出哪裡是 SPOF,並評估「裝智慧插座做遠端電源控制」值不值得。

一、系統架構圖

紅框 = 單點故障(壞了就一整塊倒)。灰框 = 有冗餘或可快速恢復。
邊緣 / 網路
🌐 家用網路FETnet(特定海外 host IPv4 不通 → Claude API/TG 走 IPv6)+ 路由器
☁️ Cloudflare Tunnelcommit.lalalachuck.com
📨 Telegramcoo/cto/sa/cio/notify bots
運算核心(全部跑在這一台)
⚠ MEGA-SPOF
🖥 Mac mini「chuck-macmini」— 整個 agent 系統的承載基座

bus 訊息匯流排

dispatcher(單一 daemon) inbox / outbox frontends tg_* bus_reply MCP

角色 session(tmux + runtime profile)

coo · claude cto · codex cio · codex sa · claude

本地運算

Ollama(gemma4) llm_helper shim

自動化 / 服務

cron / launchd CIO daily/weekly watchdog · health_check commit API
⚠ 依賴:claude 走 Keychain OAuth,只在 GUI 登入才解鎖 → reboot 後 tmux 起來但 agent「Not logged in」,需人工 SSH 跑 wake 才恢復(非無人值守)。
▼   LAN   ▼
外部節點
🍓 HA Pi「piHome」.108RPi 4B + SD 卡 · HA in Docker
今天掛掉的就是它
🗄 NAS Synology .189備份 / 資料層(SSH :10022)
🤖 Claude / Codex 雲端角色 backend(可切換)
單點故障 有冗餘 / 可快速恢復

二、單點故障盤點(依嚴重度)

「壞了會怎樣」+「現在有什麼緩解」+「建議」

🖥 Mac mini 主機

CRITICAL

bus、四個角色、Ollama、所有 cron、commit API 全跑在這一台。它一倒 = COO/CTO/CIO/SA 全停 + 所有自動化停。這是最大的單點。

緩解:目前幾乎沒有——它就是基座。recovery 靠 wake.sh(SSH 一鍵)。真要去 SPOF 需第二台節點(成本/複雜度高,現階段不划算,先承認風險)。短期:確保 Time Machine / 設定備份到 NAS。

🍓 HA Pi + SD 卡(今天的事故)

CRITICAL

家庭自動化全靠這台 RPi。今天症狀:ping 通、port 開,但 sshd 連登入都完成不了(banner exchange timeout)= 主機資源/IO 卡死,SD 卡故障最可能。而且沒有遠端電源控制 → 只能現場拔電。config 也只在那張可能要壞的卡上。

緩解(建議全做):Tapo P110M 智慧插座做遠端 power-cycle(見第三節);② config 定期備份到 NAS;③ 根治把 HA 從 SD 卡移到 USB SSD(RPi 長期穩定常見升級)。

📡 bus dispatcher(單一 daemon)

HIGH

所有角色訊息都靠這一支 daemon 路由(inbox → tmux)。它掛了 = 沒人收得到訊息。

緩解(已相當好):launchd KeepAlive 自動重啟 + 近期加的 roles.yaml hot-reload(切換 backend 免重啟)。watchdog 每 5 分監控 state=running。

🔑 GUI 登入 / Keychain 依賴

HIGH

claude 的 OAuth token 走 macOS Keychain,只在使用者 GUI session 解鎖。reboot 後 tmux session 起得來,但裡面的 claude 顯示「Not logged in」→ 無人值守時不會自己恢復。

緩解:SSH 進來跑 wake 一鍵同步 credentials + respawn(已是 profile-aware)。屬已知 trade-off,非自動。

🌐 家用網路 / 路由器 / FETnet

HIGH

對外連線全靠這條。FETnet 對特定海外 host 的 IPv4 路由不通(已知 Claude API、Telegram),已用 /etc/hosts 強制這些 host 走 IPv6;其他海外服務(Cloudflare、Google)IPv4 正常。路由器或這條對外網路一掛 = 遠端全斷、雲端 API 也斷。

緩解:IPv6 workaround 已穩定;Tailscale 提供另一條進站路徑(NAS 已用)。

🤖 雲端 LLM provider(Claude / Codex)

MEDIUM

角色 backend 依賴雲端 API。provider 當機或網路通但 API 掛 = 角色不能對話。

緩解(最近剛做):runtime switcher —— /runtime switch 可把角色在 claude↔codex 間切;Phase 2 規劃 local Ollama 降級 profile 當 provider 全掛時的最低限度續命。這塊 SPOF 已主動在收斂。

🗄 NAS(備份單點)

MEDIUM

備份 / 資料層集中在一台 Synology。它掛了不影響即時運作,但備份還原能力受影響。

緩解:NAS 本身可設 RAID / 快照;關鍵 vault 同時在 Mac + git。

👤 單一操作者(CEO)

MEDIUM

所有實體介入(拔電、接螢幕、換卡)都需要 CEO 本人在場。今天就是卡在這 —— 人不在現場就只能等。

緩解:遠端電源(Tapo)、遠端 console、把「需要到場」的場景降到最少。

三、Tapo P110M 智慧插座評估

問題:要不要掛?答案先講 —— 要,而且優先給 HA Pi 用。

✅ 建議:買,第一顆裝在 HA Pi 上

今天的痛點是「只能跑去拔電」。一顆 ~NT$300-400 的智慧插座就把它變成「手機 App 點一下遠端重開」。投報率極高,直接消掉一個 CRITICAL SPOF 的「人必須到場」部分。

  • 遠端 power-cycle:Pi 卡死(像今天)時,用 Tapo App 關→開,就遠端硬重開,不用回家。
  • 能耗監控:P110M 量到 0.001 kWh。可盯 Pi 的功耗 → 抓供電不穩 / undervoltage(今天疑似原因之一)。
  • 本地控制:開關走 LAN(Matter / HA 整合),低延遲;初次設定需上線。
關鍵坑(chicken-and-egg):控制這顆插座的路徑不能依賴被它切的那台 Pi。如果只透過「跑在 Pi 上的 HA」去控制插座,Pi 掛了你也控制不了插座 → 等於沒用。
解法:Tapo 手機 App(走雲端,獨立於 HA)當主控路徑 —— Pi 掛了照樣能從 App 重開它。HA 整合當輔助(順手在 dashboard 控別的電器)。Matter 則需要一個不在那台 Pi 上的 controller(如 Apple Home / 另一台)。
型號Tapo P110M(mini 智慧插座 + 能耗監控 + Matter)
連線2.4G Wi-Fi;Matter over Wi-Fi(本地 LAN 控制、低延遲)
控制路徑Tapo App(雲端,獨立於 HA)/ Matter(Alexa·Google·Apple Home·SmartThings)/ HA 整合(on-off 本地)
能耗監控精度 0.001 kWh;目前能耗數據在 Tapo App(Matter 能耗支援「coming soon」,on-off 本地可用)
對本案用途遠端硬重開 HA Pi + 監控 Pi 功耗抓供電問題
注意智慧插座是「硬切電」非乾淨關機 —— 對 SD 卡不理想;當 Pi 已 hang 才用(反正也只剩這招),不要拿來當日常重啟。長期仍建議移到 USB SSD。
  • 下一步建議:先買 1 顆裝 HA Pi(解今天的痛)。若要更廣(量測各電器耗電、自動化),再加幾顆。

四、一句話總結

最大風險是 Mac mini 單機承載一切(暫時接受、做好備份);最划算的即刻修補是 HA Pi 加 Tapo 智慧插座(遠端重開)+ 移到 SSD;provider SPOF 已靠 runtime switcher 在收斂。今天的事件是這整張圖的活教材。