利用加载项Nginx咯悝滩镞ProxyManager快速配置,可以实现通过域名HTTPS隐藏端口方式访问HomeAssistant管理系统,默认配置后直接访问会提示晗稍噔猷:400:BadRequest错误信息,本文将介绍如何正确设置HomeAssistant去实现通过域名正常访问。
工具/原料
树莓派3B
HASSOS10.1
supervisor2023.04.1
方法/步骤
1、HomeAssistant是一个基于Python3开发的开源自动化设备控制平台。可以跟踪和控制网络中的所有设备,并实现自动化控制。系统默认使用8123端口进行管理,带端口访问既不方便也不安全。
2、如果系统只在内部运行,相对还安全些,如果需要对互联网提供服务或需要映射后对互联网提供服务,使用http端口访问时容易被中间人截获数据,拿到API的KEY后就可以远程控制,存在安全风险。
3、要实现域名访问的方式有多种,如直接在HomeAssistant控制台,配置-系统-网络中,配置HomeAssistantURL选项即可(访问时带端口)
4、或者使用加载项Let'sEncrypt和NGINXHomeAssistantSSLproxy来实现https的访问,但配置相对复杂,本文不做介绍。
5、本文主要介绍使用NginxProxyManager加载项进行域名访问设置。首先在配置-加载项-加载项商店里找到NginxProxyManager,安装后启动服务,查看日志如果启动错误,报DB类的错误,可以先安装下加载项MariaDB并进行参数配置。
6、再重新启动NginxProxyManager,查看运行日志,如图为正常启动信息。
7、NginxProxyManager的默认管理地址是81端口,直接访问你的服务器ip:81即可访问管理登录界面,输入初始账号admin@example.com,密码changeme(进入后可在后上角用户头像位置点击修改密码)即可登录。
8、在Host菜单下点击proxyhost进入域名管理项,点击右侧Addproxy咯悝滩镞 host添加域名项。域名是需要对外提供服务(需要提前解析到该服务器IP或是映璨阑瑭萄射服务前端IP);ForwardHostname/ IP可以直接填写:homeassistant或者是你访问管理台的IP,端口为系统的8123,开启websocket support支持。先不要配置ssl证书,点保存,生效服务后进行http访问测试。
9、直接浏览器访问刚才填写的域名,如果配置正常茧盯璜阝就可以直接出现登录界面,说明配置正常,可以到NginxProxyManager中开启SSL证书配置了。如果访问时出现【桃轾庾殇400:BadRequest】错误提示,需要在HomeAssistant设置中开启反向代功能并设置白名单。
10、在HomeAssistant的配置中设置启用反代功能,并设置IP白名单功能步骤如蛴蛩钔淞下:首先到系统日志中查看请求错误信息,酴兑镗笄查找到实际请求的IP。如:Arequestfromareverseproxywasreceivedfrom172.30.33.6,这条日志中的172.30.33.6为实际请求IP,可以添加到白名单中
11、然后在文件编辑器中打开:/config/configuration.yaml添加:http:use_x_forwarded_for:truetrusted_proxies:-127.0.0.1-172.30.33.6-::1保存后,重启
12、重启后就可以直接使用域名不带端口的方式访问了。然后就可以在NginxProxyManager的域名配置中,修改配置SSL证书(自动模式),以启用HTTPS访问模式。
13、也可以提前先准备好证书,设置SSL时选择已有证书:进入SSLcertificates证书管理,右侧的AddSSLcertificates可以选择申请Let'sEncrypt免费证书和Custom自定义证书(导入现有域名证书)。
14、证书配置完成后,可以直接使用https模式访问控制台了,包括使用API接口时也可以使用安全模式传输了,增加了系统的安全性。