前期准备
- 云服务器一台
- ssh连接工具(这里我用finalshell)
- 家中设备(这里我用群晖NAS)
服务端
安装管理面板
-
目的是可以可视化操作docker(不用敲代码)
-
这里我使用1panel,当然也可以用其他的,能安装docker的面板都行,注意如果不是全新服务器不能安装宝塔面板,因为会被清除数据
-
使用ssh连接工具连接云服务器
-
运行下面的1panel面板一键安装命令
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
-
若报错:"curl:command not found " ,如何解决?
-
根据提示一步一步设置访问面板的端口和账号密码
-
云服务器Web防火墙放行设置好的端口
-
面板安装成功后没有显示面板的登录网址?
关闭当前ssh连接再重新连接
运行下面的命令即可获取面板登录网址1pctl user-info
- 用浏览器登录面板
安装frps
- 添加这两行代码,表示设置连接这台服务器的密码,客户端必须有token才能连接,123123替换成自己的密码
auth.method = "token" auth.token = "123123"
- 每次修改完配置文件都需要重启服务
设置防火墙(重要*)
设置系统防火墙
- 必须开启系统防火墙才能正常使用frp
- 部分云服务器默认不带系统防火墙,需要手动安装 如何安装?
- 开启系统防火墙
- 开启防火墙后立即放行 “7000” 、“7500” 端口也就是frp服务端所需要用到的端口,根据 “frps.toml” 里设置的端口来放行,不要照抄
- 上面只演示了放行 “7000” 端口,使用同样的步骤再放行 “7500” 端口,根据 “frps.toml” 里设置的端口来放行,不要照抄
设置云服务器Web防火墙
-
在云服务器网页界面的防火墙(安全组策略)里也同样立即放行 “7000” 、“7500” 端口,根据 “frps.toml” 里设置的端口来放行,不要照抄
-
下面以腾讯云为例
- 上面只演示了放行 “7000” 端口,使用同样的步骤再放行 “7500” 端口,根据 “frps.toml” 里设置的端口来放行,不要照抄
客户端
安装docker
安装frpc
- 下面以群晖系统为例,其他平台也都大同小异
- 启用docker镜像下载加速(国内网络下载慢)
网易云镜像源:https://hub-mirror.c.163.com
百度云镜像源:https://mirror.baidubce.com
-
配置frpc.toml文件(重要*)
- 根据下面的拓扑图可以知道frp服务器就相当于一台有了公网IP的 “路由器” ,通过编辑frpc配置文件可以让连接到这台 “路由器” 的客户端的内网服务的端口暴露到公网,从而可以用公网访问
- 下载frpc.toml配置文件模板 点击下载
- 编辑frpc.toml配置文件
- 注意:“name” 项、“remotePort” 项不能重复
- 特别说明:“localIP” 可以换成局域网内的其他设备,从而实现穿透没有安装frp客户端的设备,也就是说局域网内只需要有一台设备安装了frp客户端就行了
-
编辑完frpc.toml配置文件后先别急,根据上上面的拓扑图可以知道,必须放行所有的 “remotePort” 端口,内网服务才能正常被访问,所以此刻立即回到1Panel面板和云服务器网页界面放行所需端口
-
放行完端口后将frpc.toml配置文件放到一个能找到的目录里,最好新建一个frp文件夹
-
下面以群晖系统为例
- 装载路径:
/etc/frp/frpc.toml
- 镜像网址的网页里也可以找到装载路径,理论上不会变
- 此时已经能用公网访问内网服务了
验证是否穿透成功
- 使用云服务器的IP地址加上英文冒号加上端口号( 例如:149.28.80.154:12346 )
- 可以看到成功用公网访问了群晖NAS,说明穿透成功,这样无论在天涯海角只要有网,就可以访问家里的这台NAS了(前提是服务器公网IP没被墙)
注意事项
- 若后续修改了frpc.toml配置文件,则需要重启服务
- 再次强调需要在 “1panl” 面板和云服务器网页界面放行所有客户端所需要用到的 “remotePort” 端口以及服务端需要用到的 “7000” 、 “7500” 端口,根据 “frps.toml” 里设置的端口来放行,不要照抄
常见报错
- 进入容器的日志界面查看是否报错
未报错
- 下面这样没有报错,表示成功连接了服务端
报错
- 下面这样报错说明没有放行相应端口或 “frpc.toml” 里的IP地址填错了
- 下面这样报错说明端口被其他服务占用,"frpc.toml"里的 “remotePort” 改为其他端口即可,如果明明没有其他服务占用端口,那试一试重启frp服务端,注意客户端也要重启
- 下面这样报错说明当前客户端的网络有问题,暂时的解决方法是换一台设备,我的Nas在远程操作就会报这个错,然后我用OpenWrt就没问题,有知道原因的大佬可以在评论区留言一下,感谢!