背景:家里windows本地部署stable diffusion,想在其他地方远程使用,但花生壳之类的工具收费。因此决定使用FRP工具实现内网穿透实现SD线上使用。 前提:有域名或者ECS服务器(本文使用阿里云ECS服务器)
tips:FRP是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
服务端配置:
- ECS服务器-远程连接,下载frp,并修改frps
#下载frp wget https://github.com/fatedier/frp/releases/download/v0.51.2/frp_0.51.2_linux_amd64.tar.gz #下载后解压 tar -zxvf frp_0.51.2_linux_amd64.tar.gz #进入frps cd frps #修改frps vim frps.ini
- 修改frps.ini:
[common] bind_port = 7000 vhost_http_port = 8080
- 进入实例-安全组添加8080和7000端口
- 启动服务端frps
./frps -c ./frps.ini
出现如上信息,说明启动frp服务成功!
客户端配置:
- 下载官方Git:https://github.com/fatedier/frp/releases,windows版本
- 解压文件(建议修改为短文件名)
- 修改frpc.ini并保存
[common] server_addr = x.x.x.x #服务器公网IP server_port = 7000 [ssh] type = http local_port = 7860 #使用SD默认端口 custom_domains = x.x.x.x #绑定域名或者服务器公网IP
- 通过CMD 启动本地frp客户端
#这一步是进入d盘,因为我把frp解压到D盘 C:\Users\pc>d: #这一步可以直接拖动frpc.EXE文件进来,然后输入-c,再拖动frpc.INI进来,按回车即可 D:\>D:\frpc\frpc.exe -c D:\frpc\frpc.ini
出现如下信息即本地部署frp成功:
同时服务端也会有反馈:
完成部署
- 最后浏览器输入HTTP://域名或者公网ip:8080,即可访问你的本地SD服务
X.X.X.X:8080 #公网ip参考 X.X.COM:8080 #域名参考
疑难杂症
- 假设显示如下,说明7000端口被占用,需要手动终结端口;
#输入命令查询进程,可以看到最后字段的数字为该进程PID netstat -tanlp
#确认占用端口的PID杀进程即可(如上图pid为17049) kill 17049 #杀死进程后,重新开启服务即可
- 使用过程中要保持客户端和服务端开启状态,如关闭后需重新开启
已经部署过,下次如何快捷开启?省流命令如下
#服务端开启frp服务 cd frps ./frps -c ./frps.ini #客户端开启frp服务 x:\frpc.EXE文件路径 -c frpc.ini文件路径 #完成,浏览器输入「HTTP://域名或者公网ip:8080」即可打开