Home Assistant 外网访问(群晖反向代理)
群晖使用反向代理,有网友出现了400报错的问题。然后我就试了试我的Home Assistant 的外网连接。
果然华丽的400了。我的Home Assistant 是部署在黑群晖上面的,因为是个i3的主机,性能强一点,而且Home Assistant 本身经常升级,调试什么的,需要经常重启,所以稳定性和速度上,我选择速度。
网上找了一圈资料,都是很老旧的信息了,还有HASS安装NGINX Home Assistant SSL proxy插件的,可是这个插件早就下架了。以前安装证书的方法也不起作用了,现在都是用反向代理里的证书。后来结合各种教程,发现了解决办法。就是编辑configuration.yaml,添加字段如下。
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.16.100.0/24
- 192.168.5.0/24
特别注意红框里的编码,调整为你的局域网网段,我的是5。修改后保存,并重启容器,也就是重启下Home Assistant 。
然后去控制面板-应用程序门户-反向代理服务器。
新增一个Home Assistant 的反向代理。
规则如图,端口我统一成666了,然后路由器把666映射出去。因为43端口是被封的,所以只能带尾巴了。确定应用。
然后访问外网地址加端口号,就不会400了,出现了登录界面了。撒花。
但是,事实告诉我们,不要高兴的太早。在你填入用户名和密码后,会弹出这个界面,根本无法登录。惊不惊喜?意不意外?这是因为Home Assistant的登录需要websocke支持。所以继续看下去吧。
再去反向代理页面,编辑刚才建立的Home Assistant反向代理,在自定义标头那点击新增一个websocke标题,直接点击这个就可以了,底下会自动出来两个标头,不用修改,直接确定就可以了。
这次回退到登录界面,输入用户名和密码,就可以顺利登录了。
试试手机APP,添加一个外部链接,activate(应用)就可以了,可以顺利登录了,以后在外网也可以控制家里的智能设备了。也可以通过APP,来定位手机了。
最后来个题外话,威联通系统5.0带的反向代理是apache的,所以简单的添加标头是无法实现websocket协议代理的,我也无能为力了。看看有没有大佬能解决这个问题吧。