利用frp让homeassistant(hassos系统)外网访问

 

        我学过一段时间的网络,拿到过华为的网络证书,对于网络算是较为精通。因此对于有固定公网ip的用户,想要实现从外网访问内网中的电脑或者服务器,简直是易如反掌,只需要做下端口映射即可。而对于没有公网ip的,想内网穿透,以前的我还真是束手无策,直到遇到了frp。它的使用真是令人难以想象的简单。可能是我对内网穿透困惑了好久,一直没去着手了解这方面,从而觉得它应该挺难。大多数都有这个心理吧,对于不了解不熟悉的事物,往往会有点抗拒心理。记住,一回生二回熟,熟悉了,心理的这种抗拒心理,难受的心理便烟消云散,也就自然而然的会了。重要的是,要有那么一点点耐心,忍受一下前期的难受心理。

 

        frp的原理是,就拿我的使用场景作为例子,云服务器运行服务端frps,树莓派运行客户端frpc。当我们想从外面访问homassistant时,直接访问云服务器的ip地址加端口号即可(绑定域名的话,可以用域名访问),云服务器会把访问转发给家里的homeasistant。

 

        我的环境是,云服务器是腾讯云,homeassistant是树莓派安装了官方的系统hassos。

        云服务器的话找便宜的买。我买的时候正值双十一,华为云,有很大优惠的云服务器得限时抢。阿里云,我没刻意的去找它的活动,顺手看了下腾讯云。腾讯云不用抢就有优惠,直接购买。服务器我选择了ubuntu,因为我曾经把ubuntu作为主力机用了三年,所以对它较为熟悉。令人惊喜的是用腾讯云的web登录云服务器的时候异常的流畅,比好几年前用华为云时的丝丝卡顿,真是给人意外的惊喜。这里无意对比,那是好几年前的华为云和现在的腾讯云对比。

 

        homeassistant官方的系统hassos较为封闭,因为它意在让用户免去搭建homeassistant的繁琐,不用去理会复杂的linux系统,而是直接去使用homeassistant。即便frp是免安装的,在hassos上运行也令人头疼,因为必须要满足每次开机能够让frp自动运行。而我们平常用ssh工具登录的,其实是hassos的一个容器,每次关机这个容器都要被销毁,开机的时候再被重新建立。所以在这个容器手动安装运行的软件,一旦重启树莓派,便都没了。当然也可以获取hassos系统的超级权限,从而可以登陆到hassos系统中去,而不是容器中。但是因为hassos是精简过的,所以一时半会还摸不透它属于哪个派系,干脆放弃。

 

        莫慌,有了下面的这三个条件让在hassos开机自动运行frp不是难事。1,放homeassistant配置文件的目录/config,重启是不会消失的。2,homeassistant有一个组件叫shell_command,利用它可以执行一些命令。3,frp是免安装的。

 

下面让我们一一展开来讲。

 

1,下载frp。下载地址是https://github.com/fatedier/frp/releases  当你打开这个链接的时候,可能版本更新了,用更加新的版本就是。   

 

        上图显示如此之多的版本,如何做出选择呢?我的客户端是树莓派,cpu架构是arm的,所以选择frp_0.34.3_linux_arm.tar.gz。我的服务器是ubuntu的是linux系统,通过uname -a命令可以看出,系统版本是64位的,所以选择frp_0.34.3_linux_amd64.tar.gz。

 

2,在树莓派上操作

 

           把下载好的frp_0.34.3_linux_arm.tar.gz上传到/config这个目录。因为是hassos系统所以安装插件异常简单,可以使用Terminal&SSH插件打开命令行界面依次执行下面的命令

cd /config  # 切换到config目录
tar xvf frp_0.34.3_linux_arm.tar.gz  #把软件解压出来
mv frp_0.34.3_linux_arm  waiwang  #把刚刚解压的目录重新命名为waiwang,容易记住。
cd waiwang  #切换到waiwang这个目录中。
ls #查看当前目录下的文件。

 

在树莓派上我们运行客户端,所以用到的软件是frpc, frpc.ini是运行frpc所需要的配置文件。只用到这个两个文件,其他的可以删除,以免受到影响。

在frpc.ini配置文件,改动添加如下内容。关于如何打开这个文件,可以用file edit这个插件,也可以用命令行nano frpc.ini        

[common]

server_addr = 1.1.1.1  #改成你的云服务器的地址

server_port = 7000

token = password    #为了安全这里设个密码,和云服务上的一致。

[web8123]  #这里这个名字随便设,设个一看自己便明白的

type = tcp

local_ip = 192.168.2.15  #这里改成你树莓派的ip地址

local_port = 8123

remote_port = 8123   #这里可以改成别的端口号,到时访问的时候,用这个端口号访问。

改完之后保存。

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

shell_command:

  frpc: nohup ./waiwang/frpc -c ./waiwang/frpc.ini &     

 

上面的frpc是执行这个命令的名字,可以改成自己一看就明白的名字。   

重启homeassistant。然后做一个自动化,让homeassistant启动后,执行这条命令。

依次点“配置”,“自动化”,右下角“+ 添加自动化”

 

随便命名一个一看即明白的名字。

 

 

触发条件是home assistant启动

动作是调用服务, 服务就是在configation.yaml中添加的shell_command

 

最后保存。到此,树莓派上的所有的就都设置完了。

 

3,云服务器上设置

把下载好的frp_0.34.3_linux_amd64.tar.gz 上传到云服务器的家目录。

在云服务器中依次执行以下命令

tar xvf  frp_0.34.3_linux_amd64.tar.gz   #解压这个文件

mv  frp_0.34.3_linux_amd64.tar.gz  waiwang  #重命名刚刚解压出来的目录,

cd waiwang   #切换到waiwang目录

这里用到的也是两个文件,一个是frps服务端软件,一个是frps.ini配置文件,其他的可以删除,以免受到影响。

用nano来编辑配置文件

nano  frps.ini  #用nano编辑器打开

[common]

bind_port = 7000

#authentication_method = token

token = password   #这里的密码和客户端的一致。

#下面的也可以不用设。设置上是可以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

 

配置文件就设置完了。下面设置让frpc服务端,开机自动运行。

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

把下面的复制进去。

[Unit]

Description=Frp server

After=network.target

Wants=network.target



[Service]

Type=simple

ExecStart=/home/ubuntu/waiwang/frps -c /home/ubuntu/waiwang/frps.ini



[Install]

WantedBy=multi-user.target

保存

执行如下命令

sudo systemctl  enable frps.service  #开机自动运行

sudo systemctl start frps.service  #现在就运行frps

还有一点,登录云服务器,点开控制台,点开安全组,把端口8123放开,不然的话,也是无法访问。具体可以百度。我用过的腾讯云,华为云,阿里云,更改的方式是一样的。其他的云应该也是一样,因为这个不应该是谁抄谁,这节省了学习成本。

 

至此服务端的全部设置完毕。

 

  1. 测试,树莓派的frp客户端frpc还没运行,我们手动运行一下。

homeassistant界面依次点开,“配置”,“自动化”

 

点下“触发”,frp客户端便运行了。下次开机会自动运行的。也可以把它放到概览里面,方便使用。

 

这时候从浏览器输入你的云服务器ip地址加端口号便能访问homeassistant了。比如

1.1.1.1:8123 。

如果出现homeassistant的登录界面,恭喜你,成功了。

可以买个域名,才几块钱,然后绑定云服务器的ip地址,之后访问就用比较容易让人记住的域名访问了。

 

如果你的homeassistant是其他方式搭建的,那会更加的简单。当然这个方法也一样用。

买树莓派安装homeassistant的朋友可以到我的淘宝店铺"尚恩树莓派电子"购买

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值