故障现象

第一次给树莓派安装 Home Assistant OS 时,系统能够启动,但初始化页面长时间停留在 Core 安装阶段。主网络访问普通网站没有明显问题,HAOS 却无法稳定拉取容器镜像;把设备接到具备代理出口的独立路由器后,安装能够继续。完成下载后再接回主网络,Home Assistant 又能正常运行。

另一个现象更容易误导排查:设备从代理子网换回主网后,我仍然访问旧地址,于是页面半开、WebSocket 失败,看起来像 Home Assistant 本身损坏。

这实际上是两个问题叠在一起:

1
2
首次初始化阶段:Supervisor 需要下载并创建 Core 容器
换网阶段:地址、网关、DNS 和浏览器中的旧 URL 可能没有同步变化

先区分“启动失败”和“还没安装完”

如果页面提示 Core installation in progress,不能只盯着 8123 端口。先在本机控制台检查:

1
2
3
ha supervisor logs
ha core info
ha network info

需要确认的不是一句笼统的“网络正常”,而是:

  • Supervisor 是否仍在拉取镜像。
  • Core 容器是否已经创建,状态是否为 running。
  • 当前接口拿到的地址、网关和 DNS 属于哪个网段。
  • 设备是否还保留上一次网络的静态设置。

本次故障中,代理网络解决的是镜像仓库可达性;它并没有自动解决设备长期应该放在哪个网段的问题。

HAOS 默认应从 DHCP 建立基线

Home Assistant 官方说明 HAOS 使用 NetworkManager 管理主机网络,默认连接处于 DHCP 状态。恢复默认 IPv4 自动配置的当前示例是:

1
ha network update default --ipv4-method auto

详见 Home Assistant OS Network Configuration

这里有两个容易踩坑的地方:

  1. 接口或连接配置名称不要靠猜,先看 ha network info
  2. 不要在一边拉取 Core 镜像时一边频繁换网、改静态地址和 DNS。

对于家庭基础设施,我更倾向于让 HAOS 使用 DHCP,再由主路由根据 MAC 地址分配固定租约。这样地址长期稳定,同时网关与 DNS 仍由同一个权威 DHCP 管理。

“代理网安装、主网运行”的正确流程

如果主网确实无法访问首次安装所需的镜像仓库,而独立代理网络可以,比较稳妥的流程是:

1
2
3
4
5
6
7
8
1. 烧录 HAOS,连接到可完成下载的网络
2. 等待 Supervisor 和 Core 完成初始化
3. 验证 ha core info 的状态
4. 正常关机
5. 接入长期运行的家庭主网
6. 从主路由客户端表查找新地址
7. 创建 DHCP 固定租约
8. 验证设备发现、备份和重启

不要把旧子网的地址手工写进长期配置,也不要换网后继续访问旧 URL。浏览器书签、反向代理和 Home Assistant App 中保存的地址都需要一起核对。

为什么 Home Assistant 更适合主网

Home Assistant 需要发现电视、音箱、网关、打印机和各类 IoT 设备。mDNS、SSDP 与局域网广播在二级 NAT 和独立子网之间未必会自动穿透。如果把 HA 长期放在代理路由器下级,它可能能访问互联网,却无法完整发现家里的设备。

我的最终职责划分是:

1
2
主网:NAS、电视、Home Assistant、打印机和稳定终端
代理网:需要独立出口的电脑、手机和测试设备

代理路由器故障时,Home Assistant 和家庭媒体服务仍然应该继续工作。

完成后的验收

1
2
3
4
5
6
7
[ ] ha core info 显示 Core 正常运行
[ ] ha supervisor logs 不再反复拉取同一镜像
[ ] ha network info 中地址、网关、DNS 属于主网
[ ] 主路由已创建 DHCP 固定租约
[ ] 重启后地址不变,8123 页面可访问
[ ] mDNS/SSDP 设备发现正常
[ ] 已创建 Home Assistant 完整备份

结语

这次最消耗时间的地方,是把“容器还没下载完成”“设备换了网段”和“浏览器仍在访问旧地址”当成了同一个问题。拆开以后,流程就很清楚:首次安装先保证依赖可达,完成后回到设备发现最完整的主网,再用 DHCP 固定租约收口。