本帖最后由 hb123 于 2024-7-12 23:20 编辑
使用frp内网穿透从而实现脱离局域网控制homeassistant
需要一台有公网ip的服务器,我用的是阿里云esc云服务器。大家用什么服务器都可以,但是要有公网ip。
frp github地址,使用最新版本就行 使用systemd 控制frp服务
1. 服务端下载使用第一个链接根据自己的服务系统下载最新的frp包
2.上传下载好的包到服务端 /usr/local 路径下面(可放到其他目录)
3.解压后把frpc的都删掉,也可以不删,看你。frpc是客户端的文件,frps 是服务端的文件,所以frpc没用
4.创建frps.ini 文件,把下面的代码写入,端口以及token都可以自由更改,但一定要记住。
[common]
# 服务端绑定的端口,用于客户端连接
bind_port = 7000
# 客户端连接时需要的令牌,用于身份验证
token = xxxxxx
# 服务端控制面板访问端口(可选,用于监控和管理)
dashboard_port = 7500
# 服务端控制面板访问用户名(可选,默认admin)
dashboard_user = admin
# 服务端控制面板访问密码(可选,默认admin)
dashboard_pwd = admin
# 日志文件路径(可选,默认为frps所在目录下的frps.log)
log_file = ./frps.log
5.查看第二个链接里的文档,根据文档操作,然后启动frps服务,正常的话,使用你公网的ip加上 7500 就可以访问了。(这个/xx/xx是你自己放frp的地址,不要填错了 ExecStart=/xxx/xxx/frps -c /xx/xx/frps.ini)
注意: 要去服务器的管理页面放开 7000, 7500,跟一个web管理端口的限行不然无法访问。一共要放开3个端口,7000 是frp服务端口,7500是管理端口,另外一个是绑定域名做代理时的端口可以随便7510
客户端我用的是电视盒子,刷入的冬瓜os,所以我只介绍这种该如何操作
1.在加载项中添加frp
2.在加载项frp的配置里(根据图片里的填入,如果一切都正常的话此时你输入自己的公网ip加上第三个端口7510,就可以正常访问了)3.根据加载项文档,添加里面的代码到configuration.yaml里,然后重启ha (文件位置 /config/configuration.yaml 重启命令 ha host reboot)
最后一步就使用nginx反向代理一个域名,最后通过域名访问(如果你没有域名,上面通过ip加端口也正常的话,且感觉不用域名也行就不用往下看了)
在nginx的配置文件里,添加下面代码。然后重启下nginx,如果一切正常的话,就可以通过域名来管理homehassistant了
server {
listen 80;
listen [::]:80;
server_name xxxx.xxxx; # 把xxxx.xxxx替换成图片里填入的自定义域名
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:7510; # 这个看下自己的端口号是否一致。第三个端口号
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
# 以下配置是为了确保 WebSocket 正常工作
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
|