一直就想试试把本地电脑公开到公网实现自己做服务器的感觉,有了树莓派后更有这种想法。于是就动手试试。听说目前两种方法比较流行:ngrok和frp。但是ngrok是收费的且复杂,frp则完全开源免费且简单易用,所以这里来尝试下。大概思路就是:自己先有一台公网的服务器(我是在AWS或DigitalOcean租的),然后让本地的树莓派与公网服务器通过frp程序达成一种映射连接,这样别人访问公网服务器ip的某个端口时,就会自动转向来访问本地的树莓派了。做法是:分别在服务器和本地树莓派上下载frp程序,当然要根据两者自己的系统平台下载不同版本。然后在服务器运行frps,即frp-server,在本地运行frpc,即frp-client。并且在配置文件里约定好,服务器的哪个端口映射到本地的哪个端口。双方都运行后,就可以正常通过外网访问了。难度这个服务的环境、启动、安装等简单到让人发指,唯一的难度就在于服务器上和本地上两个.ini配置文件。配置文件搞明白了,就什么都明白了。有一点不明白,就全不明白。。。参考文章。官方下载地址。其中,服务器如果是Ubuntu或Debian系的,就选择linux_amd64.tar.gz和linux_386.tar.gz结尾的,一个是64位一个是32位。本地树莓派如果是树莓派系统,则选择linux_arm.tar.gz结尾的。第一:服务器上安装配置frp#下载frp:wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_amd64.tar.gz#解压:tar -xzvf frp_0.16.0_linux_amd64.tar.gz#进入目录:cd frp_0.16.0_linux_amd64#修改服务器端配置文件:vim frps.ini#将内容全部替换为如下:# frps.ini[common]bind_addr = 0.0.0.0bind_port = 7000vhost_http_port = 8000vhost_https_port = 8001dashboard_port = 7500privilege_token = 123456dashboard_user = ubuntudashboard_pwd = 123log_file = ./frps.loglog_level = infolog_max_days = 3max_pool_count = 5authentication_timeout = 900tcp_mux = true保存退出后,就可以在当前目录通过sudo ./frps -c frps.ini启动服务器端的这项服务了。测试:随便找个浏览器,输入服务器的IP和刚刚设置的后台管理端口号,就可以访问了。比如我的服务器IP是13.250.64.172,那么就输入:http://13.250.64.172:7500然后就可以看到如下:然后按照刚才设置的账号密码:admin, admin就能登录到,显示如下图:第二:本地树莓派装frp本地配置要比服务器配置难很多,经常出问题。尤其是我的机器只要一设置ssh,就会出错。基本配置如下:[common]server_addr = 服务器IP地址server_port = 7000privilege_token = 123456log_file = ./frpc.loglog_level = infolog_max_days = 3pool_count = 5tcp_mux = true[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 2200[web]type = httplocal_port = 80custom_domains = 服务器IP地址或服务器的域名(仔细填写,这是连接的主要方式)保存退出后,在frp的文件夹执行:sudo ./frp -c frpc.ini,就能启动了。现在,保证服务器端和客户端的两个服务都在同时运行时,我们就可以使用了。连接好后,用这个命令连接ssh:$ ssh ClientUser@ServerIP -p 2200