安裝 Stable 2.0.55
比較 Home Assistant OS Add-on、Docker 與 global npm,選出適合你維運能力的 Stable 2.0.55 部署。這章涵蓋持久化、升級、HA URL/token 的安全處理、pinned Add-on 能力、全部 Stable start options 與低資源主機指引。
先選安裝方式,不要預設人人都該手動部署
上游安裝文件把 Home Assistant OS Add-on 列為偏好的方式。若你已使用 Home Assistant OS,通常先選 Add-on:Supervisor 管理啟停與 Ingress,且 Add-on 透過 Home Assistant API 取得必要連線資訊。Docker 與 global npm 是給能自行維護容器或 Node.js 服務、資料目錄、網路與秘密注入方式的讀者,不是「功能比較完整」的必然升級。
| 方式 | 適用情境 | 你要自行負責 |
|---|---|---|
| Stable Add-on 2.0.55 | Home Assistant OS;希望透過 Supervisor 與 Ingress 管理 | 加入正確 repository、確認 add-on 設定、備份 addon_config、網路與版本升級 |
| Docker image | 已有容器維運、能使用 host network 並管理持久 volume | HA URL/token 注入、映像版本、重啟策略、/data、IPv6/mDNS、Web UI 存取控制 |
| global npm | 能管理相容 Node.js、system service、權限與日誌的進階環境 | 套件版本、程序常駐、storage location、更新回復與所有 start options |
共同前置條件:HA、IPv6、mDNS 與資料目錄
三種方式都需要可用的 Home Assistant、正確的時間、可持久化儲存,以及 Controller 能抵達的 LAN。Matter 依賴 IPv6、mDNS 與 UDP;若有 VLAN,必須正確處理 multicast 與回程路由。Web UI 能載入不等於 commissioning 所需網路已通。
- Home Assistant 本身可用,且你有權建立一組專供此服務使用的 long-lived access token;不要把 token 貼進版本庫、聊天或截圖。
- Controller/Home Hub 與 Matter Hub 所在主機有可用的 IPv6 與 mDNS 路徑;AP/client isolation 關閉。
- Docker 使用 host network;Add-on pinned config 也啟用
host_network: true。 - 預先決定持久化位置與備份方式。Docker 固定掛載容器
/data;npm 預設使用使用者家目錄下的應用資料夾,或以 start option 指定。 - Web UI 不應直接暴露到不受信任網路。需要反向代理、Basic Auth 或 IP allowlist 時,先讀第 20 章;Basic Auth 不是多帳號、RBAC 或 SSO。
<HA_BASE_URL>、<HA_LONG_LIVED_ACCESS_TOKEN>、<PERSISTENT_DATA_PATH> 等 placeholder。執行時在受控的 secret/environment 機制填值,不把 shell history、compose 檔或診斷輸出公開。安裝 pinned Stable 2.0.55 Add-on
本指南的 Add-on 事實固定於 WOOWTECH mirror commit a68dc435da8eb206e9efd51388d5d1ce798aefe0。其中 hamh/config.yaml 宣告版本 2.0.55、slug hamh、最低 Home Assistant 2024.1.0,支援 aarch64 與 amd64。它啟用 Home Assistant API、host network 與 Ingress,Ingress port 為動態值,並將 addon_config 以讀寫方式掛載。
| pinned config 欄位 | 值/意義 |
|---|---|
version | 2.0.55,本章指定 Stable 版本 |
homeassistant_api | true,Add-on 可使用 Supervisor 提供的 HA API 能力 |
host_network | true,讓 Matter/mDNS 使用主機網路;仍須 LAN 設定正確 |
ingress / ingress_port | 啟用 Ingress,port 由平台安排;通常從 Add-on 的「開啟 Web UI」進入 |
arch | 只列 aarch64、amd64;不要推論其他架構也受此 mirror 支援 |
map | addon_config:rw,資料可持久化且應納入備份 |
| 可見 options | app_log_level、disable_log_colors、mdns_network_interface、mdns_strip_global_ipv6 |
加入 Stable repository
在 Home Assistant 依序開啟「設定 → 附加元件 → 附加元件商店」,從右上角 repository 管理加入你核准的 Stable Add-on repository。確認顯示的是 Stable
hamh,不要誤選 Alpha 或 Testing slug。核對版本與架構
在安裝卡片先確認版本為 2.0.55,主機架構是 pinned config 列出的
aarch64或amd64。若不符,停止安裝,不以未知映像替代。安裝並檢視設定
按「安裝」後,到「設定」分頁保留
infolog level;只有 Network Diagnostics 指出介面問題時才填mdns_network_interface。不要任意選 Docker 或 Thread 介面。啟動並從 Ingress 開啟
按「啟動」,先看 Add-on log 是否完成服務初始化,再按「開啟 Web UI」。成功畫面應顯示 Dashboard,且 HA connection 為 Online。
先備份再建立 Bridge
確認 Supervisor 備份包含 Add-on 資料,才前往下一章建立 Bridge。不要把「可開 UI」當成備份已完成。
Docker:鎖定映像、host network 與 /data
Docker 適合已有容器維運能力的讀者。Stable 2.0.55 需要 host network 以避開 Matter/mDNS 受一般 bridge network 限制;資料寫入容器 /data,必須掛載持久 volume。為可重現性,本章使用明確版本 tag,而不是會移動的 latest。
docker run -d --name home-assistant-matter-hub --restart unless-stopped --network host -v <PERSISTENT_DATA_PATH>:/data -e HAMH_HOME_ASSISTANT_URL="<HA_BASE_URL>" -e HAMH_HOME_ASSISTANT_ACCESS_TOKEN="<HA_LONG_LIVED_ACCESS_TOKEN>" -e HAMH_LOG_LEVEL="info" ghcr.io/riddix/home-assistant-matter-hub:2.0.55
不要把實際 token 寫進可提交的 Compose 檔;改用受權限保護的 env file、container secret 或部署平台的 secret store。<HA_BASE_URL> 應是容器可抵達的 Home Assistant HTTP(S) base URL,不要照抄別人的主機名稱或私有位址。
建立受限資料目錄
在主機建立
<PERSISTENT_DATA_PATH>,設定只有執行服務所需帳號可讀寫,並將它加入備份。不要把該目錄同步到公開空間。準備秘密注入
在 secret store 建立 HA URL 與 long-lived token 變數。若只能用 env file,將檔案設為最小權限並排除版本控制。
啟動固定版本容器
執行上方命令;確認使用
--network host、版本2.0.55與/data掛載。不要為了「容器啟得來」移除持久 volume。驗證 health 與日誌
先看容器狀態與啟動日誌,再從受控網路開啟 Web UI。只分享已遮蔽的錯誤摘要,不分享環境變數列表或完整設定。
測試重建持久性
在建立正式 Bridge 前,記錄版本與備份位置;更新演練應能以同一
/data重建容器。不要用刪除 volume 測試。
Global npm:只給能管理常駐服務的環境
global npm 安裝不提供 Supervisor 或容器層的常駐、網路隔離與資料掛載。你要自行維護相容 Node.js、服務帳號、systemd 或其他 process manager、重啟策略、日誌輪替及 storage location。若這些責任不熟悉,回到 Add-on 或 Docker。
npm install -g @riddix/[email protected]
home-assistant-matter-hub start --home-assistant-url="<HA_BASE_URL>" --home-assistant-access-token="<HA_LONG_LIVED_ACCESS_TOKEN>" --storage-location="<PERSISTENT_DATA_PATH>" --log-level=info
v2.0.55 同版安裝文件仍使用舊 package 名稱,但 release workflow 在發布時改寫為 @riddix/hamh;以上游 release workflow 與已發布 package 為準。安裝後的 executable 仍是 home-assistant-matter-hub。命令列參數可能出現在 shell history 或 process listing,因此實際長期服務建議以 HAMH_HOME_ASSISTANT_ACCESS_TOKEN 從受保護的 service environment/secret file 注入,而不是把 token 直接留在命令列。環境變數規則為把 option 轉成大寫底線並加 HAMH_ 前綴,例如 --storage-location 對應 HAMH_STORAGE_LOCATION。
Stable 2.0.55 全部 yargs CLI/environment start options
以下逐項來自 exact commit 的 start-options-builder.ts,是完整的 yargs CLI/environment 清單。這些環境變數由 yargs .env("HAMH") 產生:長 option 轉大寫、連字號轉底線並加前綴。Boolean、number 與 array 仍要符合型別;其中 IP allowlist 在環境變數形式只能提供一個值。
| CLI option | Environment | 用途與預設 |
|---|---|---|
--config | HAMH_CONFIG | JSON 設定檔路徑,可用 kebabcase 或 camelcase key;空字串等同無檔案,路徑不存在或 JSON 無效會失敗 |
--log-level | HAMH_LOG_LEVEL | 應用程式等級:silly/debug/info/notice/warn/error/fatal;預設 info |
--protocol-log-level | HAMH_PROTOCOL_LOG_LEVEL | matter.js MessageChannel/Exchange 等級,同一組選項;預設 info,只有協定排錯才降低 |
--disable-log-colors | HAMH_DISABLE_LOG_COLORS | 停用 ANSI 顏色;boolean,預設 false |
--json-logs | HAMH_JSON_LOGS | 輸出結構化 JSON log;boolean,預設 false |
--storage-location | HAMH_STORAGE_LOCATION | 資料目錄;npm 預設使用者家目錄的應用資料夾,容器應持久化 /data |
--http-port | HAMH_HTTP_PORT | Web 應用 port,預設 8482;--web-port 是已棄用 alias |
--http-ip-whitelist | HAMH_HTTP_IP_WHITELIST | 允許 IPv4、IPv6 或 CIDR;CLI 可重複,ENV 只能一個;未設定時允許所有 IP |
--mdns-disable-ipv4 | HAMH_MDNS_DISABLE_IPV4 | 停用 mDNS IPv4、只用 IPv6;預設 false,不等於停用 IPv6 |
--mdns-network-interface | HAMH_MDNS_NETWORK_INTERFACE | 限制 mDNS 到指定 LAN 介面;不要猜名稱,先看 Network Diagnostics |
--mdns-strip-global-ipv6 | HAMH_MDNS_STRIP_GLOBAL_IPV6 | 從 mDNS 移除 GUA,避免 Controller 選不可回程位址;預設 false |
--home-assistant-url | HAMH_HOME_ASSISTANT_URL | HA HTTP(S) URL;manual deployment 必填 |
--home-assistant-access-token | HAMH_HOME_ASSISTANT_ACCESS_TOKEN | HA long-lived access token;manual deployment 必填且屬秘密 |
--home-assistant-refresh-interval | HAMH_HOME_ASSISTANT_REFRESH_INTERVAL | 偵測新裝置、實體與設定的刷新秒數;預設 60 |
--ha-message-timeout | HAMH_HA_MESSAGE_TIMEOUT | 單次 HA WebSocket registry/action request timeout,毫秒;預設 60000 |
--http-auth-username | HAMH_HTTP_AUTH_USERNAME | 可選 HTTP Basic Auth 使用者名稱;不是多帳號系統 |
--http-auth-password | HAMH_HTTP_AUTH_PASSWORD | 可選 HTTP Basic Auth 密碼;用 secret 注入並與 username 一起規劃 |
--http-base-path | HAMH_HTTP_BASE_PATH | 反向代理子路徑 base path,預設 /;需與代理 WebSocket/API 路徑一致 |
| 無 CLI 對應 | HAMH_MATTER_SESSION_MAX_AGE_HOURS | Bridge runtime 直接讀取,不經 yargs;0 停用,非零值夾在 1–168。未設定時標準 Bridge 預設 0(停用),Server Mode 預設 4 小時 |
HAMH_MATTER_SESSION_MAX_AGE_HOURS 是 runtime-only 例外,不是 yargs option,也沒有 CLI 對應。--http-port 的舊 alias --web-port 仍可到達,但 exact source 明確標示 deprecated,新的部署應使用 http-port。啟動選項不等於 Add-on 設定頁全部可見;pinned Add-on 只暴露其 schema 中列出的 options,其餘由 Add-on entrypoint、Supervisor 或固定封裝管理。
備份、升級與回復順序
Bridge configuration、Matter operational state、映射與其他應用資料必須跟版本一起管理。只備份 compose 或 Add-on 設定頁不夠;真正的 storage/addon_config 才是回復關鍵。任何升級前先保存一致性備份,再記錄目前映像或套件版本,最後才停止服務。
建立一致性備份
Add-on 使用 Home Assistant 備份並確認包含該 Add-on;Docker/npm 先停止寫入或停止服務,再備份完整持久資料目錄。備份本身要加密並限制存取。
記錄可回退版本
記錄 Stable 2.0.55 與部署方式,不記錄 token。Docker 保留可拉回的明確 tag;npm 記錄 package version;Add-on 記錄 repository 與版本。
只變更一個層次
升級映像/套件時先不改 Bridge Filter、port、網路介面或 HA token,以免故障時無法判斷來源。
啟動後做四層驗證
依序確認程序、HA connection、Bridge running、既有 Controller 狀態。不要為了版本顯示未更新就重建 Bridge;先處理前端版本 mismatch。
失敗時回復資料與版本
先停止失敗版本,再恢復相符資料備份與原版本。不要把新版本已寫入的資料目錄直接交給更舊版本,除非固定版本文件明確支援。
2–4 GB 主機的保守配置
上游 low-resource guide 估計:Node.js 與 Matter cluster definitions 約 200–300 MB;HA registry 約 50–150 MB 且隨實體數增加;每個 Matter Endpoint 約 1–3 MB;中等安裝的典型 steady state 約 400–600 MB。這是估計值,不是保證或硬性最低規格。
| 可用 RAM 情境 | 上游建議起點 | 觀察重點 |
|---|---|---|
| 2 GB | 1–2 座 Bridge、總計不超過約 50 個 entity;非必要先停用 autoComposedDevices | swap、OOM/exit 137、啟動低記憶體警告 |
| 4 GB | 2–4 座 Bridge、約 100–200 entities 的指引範圍 | memory pressure log、與其他大型 Add-on 競爭 |
| 8 GB 以上 | 文件稱通常不需特殊配置,但仍應監控實際 Endpoint 與工作負載 | 不要把 RAM 足夠誤解成 Controller 或網路沒有規模限制 |
自 v2.0.25 起,應用會以可用記憶體 25% 動態設定 Node heap,並限制在 256–1024 MB。Add-on entrypoint 自動處理,不能從 Add-on 設定頁直接覆寫;Docker/npm 可用 NODE_OPTIONS 調整,但必須留足系統與 HA 空間。若最後一行是 Killed、容器 exit 137 或 OOMKilled,先減少實體與停用高負載 Add-on,再評估 RAM/swap,不要靠無限制提高 heap。
安裝與首次啟動排錯
Add-on 商店找不到 Stable
確認 repository URL、重新整理商店,並辨識 slug
hamh;不要以hamh-alpha或hamh-testing代替。再核對主機是 HA OS 與支援架構。HA authentication failed
不要把 token 貼到 log 或工單。檢查 secret 是否完整、URL 是否為服務可抵達的 base URL、token 是否被撤銷;必要時建立新 token 並安全替換,舊 token 隨即撤銷。
Docker 重建後 Bridge 消失
停止容器,檢查
<PERSISTENT_DATA_PATH>:/data是否仍指向原資料且權限正確。不要初始化空 volume 後繼續配對;先從備份回復。UI 可開但配對找不到
確認 host network、IPv6、mDNS 與 Controller 網路路徑。到 Health 的 Network Diagnostics 看實際綁定介面;不要只改 HTTP port。
程序反覆被終止
查容器狀態、exit code 與主機 OOM 記錄。若為低記憶體,減少 Endpoint、停用非必要自動組合或其他高負載服務,並依平台策略處理 swap/RAM。
變更 start option 沒生效
核對名稱、型別、
HAMH_前綴與服務是否完整重啟。Add-on 只能使用 pinned schema 暴露的欄位,不能假設所有 CLI option 都能直接貼入 Add-on 設定。
常見問題
Home Assistant OS 使用者應優先選哪一種?
Docker 可以不用 host network 嗎?
Add-on 需要手動填 HA URL 與 token 嗎?
homeassistant_api: true,其公開 schema 沒有 URL/token 欄位。手動部署才要求這兩個 start options。可以把 token 寫在 Compose 檔嗎?
--web-port 還能用嗎?
--http-port alias,但 exact source 已標示 deprecated。新設定應使用 --http-port/HAMH_HTTP_PORT。升級時是否要重新配對?
固定版本官方與原始碼來源
- v2.0.55 release workflow:npm 發布 package 改名為 @riddix/hamh
- v2.0.55 官方 Installation 文件(npm package 名稱已由 release workflow 覆蓋)
- v2.0.55 全部 yargs start options 原始碼
- v2.0.55 runtime-only session age parser、clamp 與 Server Mode default
- v2.0.55 低資源裝置指南
- v2.0.55 README:Stable 發行與 Docker 入口
- Pinned Add-on Stable config.yaml
- Pinned Add-on Stable changelog