Home Assistant配置https访问
Home Assistant一般安装好之后都是需要通过公网来访问使用的,而公网访问一般都是走https协议这样最安全,
这里一般就是用反向代理来实现了。
这里只讲如何配置HA的反向代理,假设你已经有公网IP,域名,DDNS,端口映射这些东西了。
先讲一个最简单快捷的方法吧,就是HA内部的NGINX Home Assistant SSL proxy服务
首先在HA的加载项里面找到 NGINX Home Assistant SSL proxy 并安装
安装好之后到“配置”页面中,依次填入“你的域名”、“公钥文件名”、“私钥文件名” 三个东西,然后保存。第二项不用动。
再通过HA的smb服务进入HA的ssl文件夹,把你的公钥和私钥文件都拷贝进这个文件夹里面,
系统会根据你上面填写的公钥和私钥文件名自动去ssl文件夹里面去找对应的文件。
这里特别说一下smb
nginx所需的ssl文件夹是在HA的根目录下的,所以是建议用官方加载项商店Official add-ons 里面的 Samba share 服务来操作。
安装好 Samba share 服务后,在配置页面设置好smb的账号和密码。
然后回到电脑上,用常规连接smb服务的方式输入HA的ip地址进行连接。
这个时候根目录下看到一个ssl文件夹,把这个文件夹映射成盘符,然后把你的证书和秘钥拷贝进去,然后就可以断开连接了。
这个ssl文件夹用HA官方加载项里面的 “文件管理” 之类的插件是看不到的,这些插件只能看到HA系统config下的文件,
而这个ssl文件夹是在config文件夹之外的,所以暂时只发现用smb的方式来访问了。
回到NGINX的服务配置页面:
然后再往下翻,端口这里自己设置一个空闲端口,默认443的端口有些域名商好像是不开的,然后保存。
接着,通过smb服务,在HA的config文件夹下有一个configuration.yaml ,编辑这个文件,在文件内容后面加上下面几行:
(这个时候因为configuration.yaml文件是在config文件夹里面的,可以使用官方文件管理加载项去编辑这个文件,
用前面smb的方法也是可以的,只不过就是选config文件夹再映射一次就好了。)
http: use_x_forwarded_for: True trusted_proxies: - 172.30.33.0/24
这是因为HA的反向代理有白名单设置,而172.30.33.xxx是NGINX反向代理服务的网段(来自官方文档),所以要添加信任才能公网访问,
不然会出现 400 bad request 的错误。
全部配置完毕之后重启HA。然后记得路由器上端口映射啥的都弄好,你就能顺利的公网访问了。
接下来是另一种反向代理的解决办法,也是我一开始的方法,但是因为我的使用环境特殊,最终没有折腾出来,
但是普通用户是可以的,这里给多一种思路,
也看看有没有大手子能解答我的问题的hhhh
假设你有truenas,truenas上一般是用traefik做反向代理的。traefik除了反向代理truenas内部应用以外,
还可以反向代理局域网内其他设备上的外部应用,
具体教程可以参考sagit大佬的视频:BV1aQ4y1a7Dk,我跟着里面的方法全部操作成功了。
我们这里就是把HA当做外部应用,然后按traefik代理外部应用的方式操作就好了。
配置完traefik之后,一样也是要去修改HA的 configuration.yaml 文件的,不然也是400。
这时候添加的内容就是下面这样了
http:
use_x_forwarded_for: True
trusted_proxies:
- 192.168.1.0/24
这个 192.168.1.0/24 应该是要修改成 traefik (或者nas)所在ip的网段地址的,
因为这里是/24 所以对 192.168.1.xxx 范围内的地址都是生效的,
理论上来说直接给一个/32的地址直接指向 traefik 所在的地址应该也行吧,这个我没测试了。
端口映射,重启HA这些都不能少。
到这里第二种方法也算完成了。
之所以我用第二种方法操作不了,我现在的分析是因为我的HA是接在旁路由上的。因为如果我把HA接在主路由上
,按照第二种方法也能正常公网访问的,而旁路由就会有bug。
我的truenas和HA都连在旁路由上,这两个东西都可以正常通过旁路由上网,而且我的旁路由经过设置后,
主路由上的端口映射还是有效的,
还是能从公网访问到truenas上的服务,包括traefik反向代理其他外部应用都是正常的,唯
独反向代理HA的时候会出现 gateway timeout 的问题,看起来还是网络转发的问题吧。
但是我端口映射和反向代理别的应用都没问题,就HA有问题,不知道哪出错了。
一开始以为搞不动了,最后发现HA自带的有 NGINX ,那我就直接配置 NGINX 了,
这种方式即便是在我旁路由的场景下都能正常公网访问,而且还简单。
作者:Laser5252 https://www.bilibili.com/read/cv23643243/ 出处:bilibili