启用network_mode=host后无法访问Home Assistant端口,求解决方法
检查端口占用情况
切换到host模式后,Home Assistant会直接使用宿主机的8123端口,先确认该端口是否被其他进程占用。执行命令:sudo lsof -i :8123或者sudo netstat -tulpn | grep 8123
如果有其他进程占用,要么停止该进程,要么修改Home Assistant配置文件里的端口号。验证宿主机防火墙规则
Linux防火墙(比如ufw、firewalld)可能阻止了8123端口的访问:- 对于ufw:执行
sudo ufw allow 8123/tcp开放端口,然后重启防火墙sudo ufw reload - 对于firewalld:执行
sudo firewall-cmd --add-port=8123/tcp --permanent,再执行sudo firewall-cmd --reload
- 对于ufw:执行
确认Home Assistant配置中的网络设置
检查Home Assistant的configuration.yaml文件,确保没有限制访问的配置。比如是否设置了http:下的server_host为特定IP,导致只能从指定IP访问。如果有,注释掉该配置或者改为0.0.0.0允许所有IP访问:http: server_host: 0.0.0.0检查Docker容器启动日志
查看Home Assistant容器的启动日志,确认是否有网络相关的错误。执行命令:docker logs <your-home-assistant-container-name>
日志里如果有绑定端口失败、权限不足等信息,针对性解决。验证宿主机网络接口监听情况
执行sudo ss -tulpn | grep 8123,确认Home Assistant是否在宿主机的所有网络接口(0.0.0.0)上监听,而不是仅localhost(127.0.0.1)。如果只监听localhost,需要调整配置让其监听所有接口。检查SELinux状态(如果启用)
如果系统开启了SELinux,可能会阻止Docker容器访问宿主机网络端口。可以临时关闭SELinux测试:sudo setenforce 0,如果能访问了,再配置SELinux规则允许相关访问(不推荐永久关闭)。
内容的提问来源于stack exchange,提问作者Aobies59

