HomeAssistant家庭自动化-安装-安装frp实现内网穿透远程使用HomeAssistant
HomeAssistant家庭自动化-安装-安装frp实现内网穿透远程使用HomeAssistant
说明:
- 介绍如何安装frp
- frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp工作原理:
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
服务端配置(云服务器)
- 下载frp, 进入https://github.com/fatedier/frp/releases ,下载对应系统版本
- 云服务器是CentOS7的是linux系统,通过uname -a命令可以看出,系统版本是64位的
- 所以选择frp_0.44.0_linux_amd64.tar.gz
mkdir ~/tools
cd ~/tools
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
tar xvf frp_0.44.0_linux_amd64.tar.gz
- 这里我们只用到frps和frps.ini两个文件,一个是frps服务端软件,一个是frps配置文件
- 配置frps.ini
vim 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地址+端口号访问
- 设置开机启动
sudo vim /etc/systemd/system/frps.service
- 内容如下:
[Unit]
Description=Frp server
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/xxx/tools/frp_0.44.0_linux_amd64/frps -c /home/ubuntu/tools/frp_0.44.0_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
- 开机自动运行
sudo systemctl enable frps.service
- 现在就运行frps
sudo systemctl start frps.service
客户端配置(树莓派)
- 下载frp, 进入https://github.com/fatedier/frp/releases ,下载对应系统版本
- 树莓派4B是ubuntu mate20.04,系统版本是64位的
- 所以选择frp_0.44.0_linux_arm64.tar.gz
mkdir ~/tools
cd ~/tools
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_arm64.tar.gz
tar xvf frp_0.44.0_linux_arm64.tar.gz
- 只用到frpc和frpc.ini两个文件,一个是frpc服务端软件,一个是frpc配置文件
- 编辑 frpc.ini
vim 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
vim ~/.homeassistant/configation.yaml
- 添加如下内容
# 启动frp
shell_command:
frpc: nohup /home/xxx/tools/frp_0.44.0_linux_arm64/frpc -c /home/xxx/tools/frp_0.44.0_linux_arm64/frpc.ini &
- 重启homeassistant
- 然后做一个自动化,让homeassistant启动后,执行这条命令。
- 依次点“配置”,“自动化”,右下角“+ 添加自动化”
- 设置触发条件为homeassistant启动时
- 设置动作为调用服务
- 服务就是在configation.yaml中添加的shell_command命令
- 将涉及的端口号在服务器端放开
- 测试验证
[root@xxx ~]# netstat -an | grep 8122
tcp6 0 0 :::8122 :::* LISTEN
[root@xxx ~]# netstat -an | grep 8123
tcp6 0 0 :::8123 :::* LISTEN
- 使用公网IP地址+8122端口号可SSH登录树莓派
- 使用公网IP地址+8123端口号访问Homeassistant的web页面。
参考:
- 官方项目地址:https://github.com/fatedier/frp
- https://netheroone.cn/archives/800a8ecd.html
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号