目录
最近自己搭建HomeAssistant智能家居平台,在家里的内网访问HomeAssistant没有问题,但因为使用的是电信的宽带没有分配公网IP,造成无法通过公网访问HomeAssistant,这也就意味着不能在外访问和控制家里的智能设备。考虑到花生壳等内网穿透工具不但限制链接数量,而且超过限定的流量就开始收钱,本着自己动手丰衣足食的创客精神,毅然决定使用方便好用的开源穿透工具frp。
安装条件
服务器端:公网云服务器1台并安装ubuntu20.04。
客户端:树莓派1台并安装ubuntu20.04。我的HomeAssistant运行在安装ubuntu的树莓派上,作为智能家居的控制中心。
软件:目前最新版本为v0.37.1,服务器端和客户端必须下载同一版本,避免不可预知的麻烦(这个在安装过程中踩过坑)。Releases · fatedier/frp · GitHubA fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. – Releases · fatedier/frphttps://github.com/fatedier/frp/releases
服务器端安装步骤
1.下载frp
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gzwget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gzwget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
根据需要选择相应的版本,我这里下载的是linux64位的版本。
2.解压缩
tar -xvf frp_0.37.1_linux_amd64.tar.gztar -xvf frp_0.37.1_linux_amd64.tar.gztar -xvf frp_0.37.1_linux_amd64.tar.gz
进入解压之后的文件夹
cd frp_0.37.1_linux_amd64/ ls -lcd frp_0.37.1_linux_amd64/ ls -lcd frp_0.37.1_linux_amd64/ ls -l
frpc、frpc_full.ini|、frpc.ini分别为客户端程序、全配置文件、自定义配置文件
frp3、frp3_full.ini|、frp3.ini分别为服务器端程序、全配置文件、自定义配置文件
进入systemd文件夹
cd systend ls -lcd systend ls -lcd systend ls -l
4个文件为分别为客户端和服务器端的系统服务配置
3.文件归位
一般情况下,在解压后的当前目录使用命令模式就可以使用。但考虑到管理方便,强烈建议将所有文件放到相应的目录中。
将服务器端可执行文件frps放到/usr/bin目录
sudo cp frps /usr/binsudo cp frps /usr/binsudo cp frps /usr/bin
将配置文件frps.ini放到/etc/frp/目录
sudo mkdir /etc/frp sudo cp frps.ini /etc/frpsudo mkdir /etc/frp sudo cp frps.ini /etc/frpsudo mkdir /etc/frp sudo cp frps.ini /etc/frp
将系统服务配置frps.service、frps@.service 放到/lib/systemd/system目录
sudo cp /systemd/{frps.service,frps@.service} /lib/systemd/systemsudo cp /systemd/{frps.service,frps@.service} /lib/systemd/systemsudo cp /systemd/{frps.service,frps@.service} /lib/systemd/system
4、配置
打开/etc/frp/frps.ini配置文件,输入如下内容并保存退出
[common] bind_port = 7000 bind_udp_port = 7001 kcp_bind_port = 7000 vhost_http_port = 80 vhost_https_port = 443 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = XXXXX(自定义) authentication_method = token token = XXXXXXXX(自定义)[common] bind_port = 7000 bind_udp_port = 7001 kcp_bind_port = 7000 vhost_http_port = 80 vhost_https_port = 443 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = XXXXX(自定义) authentication_method = token token = XXXXXXXX(自定义)[common] bind_port = 7000 bind_udp_port = 7001 kcp_bind_port = 7000 vhost_http_port = 80 vhost_https_port = 443 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = XXXXX(自定义) authentication_method = token token = XXXXXXXX(自定义)
5、启动服务器端
设置为开机启动
sudo systemctl enable frpssudo systemctl enable frpssudo systemctl enable frps
启动服务器端
sudo systemctl start frpssudo systemctl start frpssudo systemctl start frps
没有报错则基本安装成功,可以通过查看系统服务状态确定是否运行成功
sudo systemctl status frpssudo systemctl status frpssudo systemctl status frps
运行结果如果与下图一致则表示服务已成功启动
至此,服务器端安装成功。
可以通过http://你的IP:7500查看运行状态
客户端安装步骤
1.下载frp
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gzwget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gzwget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gz
因为树莓派是arm的CPU,因此我下载的是arm64位的客户端,大家可以根据客户端的情况现在相应的版本
2.解压缩
tar -xvf frp_0.37.1_linux_arm64.tar.gztar -xvf frp_0.37.1_linux_arm64.tar.gztar -xvf frp_0.37.1_linux_arm64.tar.gz
解压后的文件夹中各文件的作用与服务器端的一致。客户端文件名都包含frpc
3.文件归位
将客户端可执行文件frpc放到/usr/bin目录
sudo cp frpc /usr/binsudo cp frpc /usr/binsudo cp frpc /usr/bin
将配置文件frpc.ini放到/etc/frp/目录
sudo mkdir /etc/frp sudo cp frpc.ini /etc/frpsudo mkdir /etc/frp sudo cp frpc.ini /etc/frpsudo mkdir /etc/frp sudo cp frpc.ini /etc/frp
将系统服务配置frpc.service、frpc@.service 放到/lib/systemd/system目录
sudo cp /systemd/{frpc.service,frpc@.service} /lib/systemd/systemsudo cp /systemd/{frpc.service,frpc@.service} /lib/systemd/systemsudo cp /systemd/{frpc.service,frpc@.service} /lib/systemd/system
4、配置
打开/etc/frp/frpc.ini配置文件,输入如下内容并保存退出
[common] server_addr = X.X.X.X(安装frp服务气短的公网服务器地址) token = XXXXX(与服务器端配置文件一致) server_port = 7000 # vhost_http_port = 80 [http] type = tcp local_port = 8123 remote_port= 8123 custom_domains =XXX.XXX.com(需要域名访问的设置,不需要的可不设置)[common] server_addr = X.X.X.X(安装frp服务气短的公网服务器地址) token = XXXXX(与服务器端配置文件一致) server_port = 7000 # vhost_http_port = 80 [http] type = tcp local_port = 8123 remote_port= 8123 custom_domains =XXX.XXX.com(需要域名访问的设置,不需要的可不设置)[common] server_addr = X.X.X.X(安装frp服务气短的公网服务器地址) token = XXXXX(与服务器端配置文件一致) server_port = 7000 # vhost_http_port = 80 [http] type = tcp local_port = 8123 remote_port= 8123 custom_domains =XXX.XXX.com(需要域名访问的设置,不需要的可不设置)
5、启动服务器端
设置为开机启动
sudo systemctl enable frpcsudo systemctl enable frpcsudo systemctl enable frpc
启动服务器端
sudo systemctl start frpcsudo systemctl start frpcsudo systemctl start frpc
没有报错则基本安装成功,可以通过查看系统服务状态确定是否运行成功
sudo systemctl status frpcsudo systemctl status frpcsudo systemctl status frpc
运行结果如果与下图一致则表示客户端已启动并成功连接服务器端
说在最后
至此就可以通过http://你的IP:8123访问局域网内的HomeAssistant了
也可以设置你的域名解析到你的IP,而后通过http://你的域名:8123访问局域网内的HomeAssistant
看看我的效果
重要提醒
切记切记!公网云服务器记得放行配置文件中涉及到的所有端口,否则无法访问。
原文链接:https://blog.csdn.net/lhjjjj/article/details/120792040?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168449620216800213022817%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168449620216800213022817&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-10-120792040-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90