『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 758|回复: 5

[经验分享] frp脱离局域网控制homeassistant

[复制链接]

4

主题

11

帖子

94

积分

注册会员

Rank: 2

积分
94
金钱
83
HASS币
0
发表于 2024-7-12 23:22:36 | 显示全部楼层 |阅读模式
本帖最后由 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 {
        }
    }




1720796323198.jpg
回复

使用道具 举报

9

主题

65

帖子

1228

积分

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1163
HASS币
0
发表于 2024-7-13 13:34:37 | 显示全部楼层
我也是这种方案在用,不过我直接是群晖NAS,感觉很稳定
回复

使用道具 举报

3

主题

79

帖子

617

积分

高级会员

Rank: 4

积分
617
金钱
538
HASS币
0
发表于 2024-7-13 14:24:33 | 显示全部楼层
楼主你好,我现在使用你的教程,遇到一个问题,通过域名访问时,卡在初始化页面,只显示logo,不知道你部署的时候有没有遇到过这种问题。 微信截图_20240713142058.png
我是腾讯云,使用的宝塔面板管理网站。新建一个网站,修改站点的配置文件,增加反向代理到frp的端口,现在通过frp可以正常实现内网穿透,但是设定域名后,无法通过域名访问。
回复

使用道具 举报

3

主题

79

帖子

617

积分

高级会员

Rank: 4

积分
617
金钱
538
HASS币
0
发表于 2024-7-13 14:36:58 | 显示全部楼层
郑小贤 发表于 2024-7-13 14:24
楼主你好,我现在使用你的教程,遇到一个问题,通过域名访问时,卡在初始化页面,只显示logo,不知道你部署 ...

找到解决办法了。增加一个反向代理。
#解决js css 访问不到的问题
location ~ .* {
   proxy_pass http://localhost:9001;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forw $proxy_add_x_forwarded_for;
}
回复

使用道具 举报

0

主题

18

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
金钱
224
HASS币
0
发表于 2024-7-14 23:08:28 | 显示全部楼层
我是直接ipv6 DDNS域名
回复

使用道具 举报

2

主题

240

帖子

1761

积分

金牌会员

Rank: 6Rank: 6

积分
1761
金钱
1521
HASS币
0
发表于 2024-9-6 08:56:33 | 显示全部楼层
这个客户端的加载项链接是哪个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 03:27 , Processed in 0.763451 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表