Home Assistant配置https訪問
Home Assistant一般安裝好之后都是需要通過公網(wǎng)來訪問使用的,而公網(wǎng)訪問一般都是走https協(xié)議這樣最安全,這里一般就是用反向代理來實現(xiàn)了。
這里只講如何配置HA的反向代理,假設(shè)你已經(jīng)有公網(wǎng)IP,域名,DDNS,端口映射這些東西了。
先講一個最簡單快捷的方法吧,就是HA內(nèi)部的NGINX Home Assistant SSL proxy服務(wù)?

首先在HA的加載項里面找到 NGINX Home Assistant SSL proxy 并安裝

安裝好之后到“配置”頁面中,依次填入“你的域名”、“公鑰文件名”、“私鑰文件名” 三個東西,然后保存。第二項不用動。
再通過HA的smb服務(wù)進入HA的ssl文件夾,把你的公鑰和私鑰文件都拷貝進這個文件夾里面,系統(tǒng)會根據(jù)你上面填寫的公鑰和私鑰文件名自動去ssl文件夾里面去找對應(yīng)的文件。

這里特別說一下smb
nginx所需的ssl文件夾是在HA的根目錄下的,所以是建議用官方加載項商店Official add-ons 里面的?Samba share 服務(wù)來操作。

安裝好 Samba share 服務(wù)后,在配置頁面設(shè)置好smb的賬號和密碼。
然后回到電腦上,用常規(guī)連接smb服務(wù)的方式輸入HA的ip地址進行連接。

這個時候根目錄下看到一個ssl文件夾,把這個文件夾映射成盤符,然后把你的證書和秘鑰拷貝進去,然后就可以斷開連接了。
這個ssl文件夾用HA官方加載項里面的 “文件管理” 之類的插件是看不到的,這些插件只能看到HA系統(tǒng)config下的文件,而這個ssl文件夾是在config文件夾之外的,所以暫時只發(fā)現(xiàn)用smb的方式來訪問了。

回到NGINX的服務(wù)配置頁面:

然后再往下翻,端口這里自己設(shè)置一個空閑端口,默認443的端口有些域名商好像是不開的,然后保存。
接著,通過smb服務(wù),在HA的config文件夾下有一個configuration.yaml?,編輯這個文件,在文件內(nèi)容后面加上下面幾行:
(這個時候因為configuration.yaml文件是在config文件夾里面的,可以使用官方文件管理加載項去編輯這個文件,用前面smb的方法也是可以的,只不過就是選config文件夾再映射一次就好了。)
這是因為HA的反向代理有白名單設(shè)置,而172.30.33.xxx是NGINX反向代理服務(wù)的網(wǎng)段(來自官方文檔),所以要添加信任才能公網(wǎng)訪問,不然會出現(xiàn) 400 bad request 的錯誤。
全部配置完畢之后重啟HA。然后記得路由器上端口映射啥的都弄好,你就能順利的公網(wǎng)訪問了。

接下來是另一種反向代理的解決辦法,也是我一開始的方法,但是因為我的使用環(huán)境特殊,最終沒有折騰出來,但是普通用戶是可以的,這里給多一種思路,也看看有沒有大手子能解答我的問題的hhhh
假設(shè)你有truenas,truenas上一般是用traefik做反向代理的。traefik除了反向代理truenas內(nèi)部應(yīng)用以外,還可以反向代理局域網(wǎng)內(nèi)其他設(shè)備上的外部應(yīng)用,具體教程可以參考sagit大佬的視頻:BV1aQ4y1a7Dk,我跟著里面的方法全部操作成功了。
我們這里就是把HA當做外部應(yīng)用,然后按traefik代理外部應(yīng)用的方式操作就好了。
配置完traefik之后,一樣也是要去修改HA的 configuration.yaml 文件的,不然也是400。
這時候添加的內(nèi)容就是下面這樣了
這個?192.168.1.0/24?應(yīng)該是要修改成 traefik (或者nas)所在ip的網(wǎng)段地址的,因為這里是/24 所以對 192.168.1.xxx 范圍內(nèi)的地址都是生效的,理論上來說直接給一個/32的地址直接指向 traefik 所在的地址應(yīng)該也行吧,這個我沒測試了。
端口映射,重啟HA這些都不能少。
到這里第二種方法也算完成了。

之所以我用第二種方法操作不了,我現(xiàn)在的分析是因為我的HA是接在旁路由上的。因為如果我把HA接在主路由上,按照第二種方法也能正常公網(wǎng)訪問的,而旁路由就會有bug。
我的truenas和HA都連在旁路由上,這兩個東西都可以正常通過旁路由上網(wǎng),而且我的旁路由經(jīng)過設(shè)置后,主路由上的端口映射還是有效的,還是能從公網(wǎng)訪問到truenas上的服務(wù),包括traefik反向代理其他外部應(yīng)用都是正常的,唯獨反向代理HA的時候會出現(xiàn) gateway timeout 的問題,看起來還是網(wǎng)絡(luò)轉(zhuǎn)發(fā)的問題吧。
但是我端口映射和反向代理別的應(yīng)用都沒問題,就HA有問題,不知道哪出錯了。
一開始以為搞不動了,最后發(fā)現(xiàn)HA自帶的有?NGINX ,那我就直接配置?NGINX 了,這種方式即便是在我旁路由的場景下都能正常公網(wǎng)訪問,而且還簡單。