Home » HomeAssistant自动化 » HomeAssistant家庭自动化-安装-安装frp实现内网穿透远程使用HomeAssistant

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

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: homeassistant家庭自动化