Homeassistant利用FRP实现外网访问

Homeassistant利用FRP实现外网访问

参考自:https://blog.csdn.net/zuobianfy/article/details/111712872

一、下载frp

下载地址是https://github.com/fatedier/frp/releases ,根据自己的操作系统下载最新版本即可。

我的客户端是树莓派4B,cpu架构是arm的,所以选择frp_0.36.2_linux_arm.tar.gz。我的云服务器是CentOS7的是linux系统,通过uname -a命令可以看出,系统版本是64位的,所以选择frp_0.36.2_linux_amd64.tar.gz

二、服务端配置(云服务器)

云服务器的家目录下新建目录Others

mkdir Others

把下载好的frp_0.36.2_linux_amd64.tar.gz上传到Others目录下并解压

tar xvf  frp_0.36.2_linux_amd64.tar.gz

进入到解压目录下,这里我们只用到frpsfrps.ini两个文件,一个是frps服务端软件,一个是frps配置文件,其他的可以删除。

用nano来编辑配置文件

nano  frps.ini

配置文件内容如下:

[common]
bind_port = 7000
token = Admin@123
#下面设置为可选配置。设置上是可以web登录到frp,查看frp的运行状况。
dashboard_port = 7500  
# dashboard's username and password are both optional,if not set, default is admin.
dashboard_user = admin
dashboard_pwd = 123456

WEB管理页面如下,可用ip地址+端口号访问,这里使用的是0.35.1版本。

设置开机启动frpc服务端:

sudo nano /etc/systemd/system/frps.service

文件内容如下:

[Unit]
Description=Frp server
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/Others/frp_0.36.2_linux_amd64/frps -c /root/Others/frp_0.36.2_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

执行如下命令

# 开机自动运行
sudo systemctl  enable frps.service
# 现在就运行frps
sudo systemctl start frps.service

三、客户端配置(树莓派)

客户端(树莓派)家目录下新建目录Others

mkdir Others

把下载好的frp_0.36.2_linux_arm.tar.gz上传到Others目录下并解压

tar xvf  frp_0.36.2_linux_arm.tar.gz

进入到解压目录下,这里我们只用到frpcfrpc.ini两个文件,一个是frpc服务端软件,一个是frpc配置文件,其他的可以删除。

用nano来编辑配置文件

nano  frpc.ini

这里我配置了SSH和HA的两个会话,配置文件内容如下:

[common]
# 服务器公网地址
server_addr = x.x.x.x
server_port = 7000
token = Admin@123

[web8123]
type = tcp
# 内网客户端IP
local_ip = 192.168.x.x
# 内网客户端端口号
local_port = 8123
# 远端服务器端口号,可自行修改,访问时使用该端口号
remote_port = 8123

[ssh]
type = tcp
# 内网客户端IP
local_ip = 192.168.x.x
# 内网客户端端口号
local_port = 22
# 远端服务器端口号,可自行修改,访问时使用该端口号
remote_port = 8122

编辑homeassistant的配置文件configation.yaml 添加如下内容:

# 启动frp
shell_command:
  frpc: nohup /home/pi/Others/frp_0.36.2_linux_arm/frpc -c /home/pi/Others/frp_0.36.2_linux_arm/frpc.ini &

重启homeassistant。然后做一个自动化,让homeassistant启动后,执行这条命令。依次点“配置”,“自动化”,右下角“+ 添加自动化”

设置名称:

设置触发条件为homeassistant启动时:

设置动作为调用服务, 服务就是在configation.yaml中添加的shell_command命令。

设置完成后保存。

四、将涉及的端口号在服务器端放开

服务器端需放通服务器设置的bind_portdashboard_port、客户端设置的remote_port端口号,阿里云服务器可在“安全组”中设置

五、测试验证

客户端触发一次自动化任务后,在服务器端查看端口监听情况,可以查看到对应的端口处于监听状态:

[root@f-numen ~]# netstat -an | grep 8122
tcp6       0      0 :::8122                 :::*                    LISTEN     
[root@f-numen ~]# netstat -an | grep 8123
tcp6       0      0 :::8123                 :::*                    LISTEN

使用公网IP地址+8122端口号可SSH登录树莓派,使用公网IP地址+8123端口号访问Homeassistant的web页面。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:Homeassistant利用FRP实现外网访问

文章字数:915

本文作者:F_numen

发布时间:2021-04-03, 16:30:13

最后更新:2021-04-03, 17:33:43

原始链接:https://netheroone.cn/archives/800a8ecd.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/