前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务。
获取frp的压缩包
访问下面这个网页Releases · fatedier/frp (github.com),这里下载最新版的v0.50.0的包。

可以看到这里有很多版,我服务器的CPU是x86_64架构(linux可以使用uname -a 这个命令查看CPU架构),选择的frpServer是frp_0.50.0_linux_amd64.tar.gz这个版本, 客户端是Windows系统所以frpClient 是frp_0.50.0_windows_amd64.zip这个版本。
Server端部署
1.发送到服务器上
使用以下命令将服务端需要的包发到远程服务器上
scp C:\Users\admin\Downloads\frp_0.50.0_linux_amd64.tar.gz root@ip:/home/docker/frp
2.创建指定文件
#创建frps.ini文件 cd /home/docker/frp && vim frps.ini #编写配置 [common] 也需要保留 [common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # http服务需要使用 vhost_http_port = 8877 # 授权码,请改成更复杂的 # 这个token之后在客户端会用到 token = 123456 # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = admin dashboard_pwd = admin enable_prometheus = true # frp日志配置 log_file = ./frps.log log_level = info log_max_days = 3
3.创建dockerfile
vi dockerfile
FROM ubuntu
MAINTAINER zzy <358343917@qq.com>
ARG VERSION=0.50.0
WORKDIR /tmp
COPY ./frp_${VERSION}_linux_amd64.tar.gz frp_${VERSION}_linux_amd64.tar.gz
RUN set -x \
&& tar -zxvf frp_${VERSION}_linux_amd64.tar.gz \
&& mv frp_${VERSION}_linux_amd64 /var/frps \
&& mkdir -p /var/frps/conf
COPY ./frps.ini /var/frps/conf/frps.ini
VOLUME /var/frps/conf
WORKDIR /var/frps
ENTRYPOINT ./frps -c ./conf/frps.ini
解释一下上面的意思 从 /home/docker/frp文件夹下复制frp文件到docker容器中/tmp目录下,在容器内解压该文件并且移动到/var/frps路径下,在容器内创建文件夹/var/frps/conf,将/home/docker/frp/frps.ini文件复制到容器内 /var/frps/conf/frps.ini 这个文件。挂载一个卷,容器启动时默认执行 /var/frps/frps -c /var/frps/conf/frps.ini
4.构建dockerimage
#注意 name = 名称 tag = 版本号 name:tag后面有个. 代表当前目录, 也可以修改成 /home/docker/frp docker build -t name:tag . #示例 docker build -t zzy/frp:0.50.0 .
5.编写docker-compose
因为要将conf目录挂载在/home/docker/frps/conf/目录下,所以首先将/home/docker/frp下的frps.ini复制到 /home/docker/frps/conf/目录下
mv /home/docker/frp/frps.ini /home/docker/frps/conf/
version: '3.1'
services:
frp:
image: zzy/frp:0.50.0
container_name: frp
volumes:
- /home/docker/frps/conf:/var/frps/conf
ports:
- 7000:7000
- 7500:7500
- 8877:8877
restart: always
启动
docker-compose up -d frp
这个时候访问 ip:7500 ,输入账号密码后,应该就能看到这个页面了

如果是云服务器的话,记得开放7500端口
Client端部署
client就很简单了, 复制下下面的配置到frpc.ini文件中然后使用 cmd转到对应文件夹 输入 frpc.exe 启动。
[common] server_addr = 云服务器地址 server_port = 7000 token = 123456 log_file = ./frpc.log log_level = info [home] #连接方式 http type = http #内网服务器地址 local_ip = 127.0.0.1 #内网服务器端口 local_port = 8080 #外网HTTP端口 remote_port = 8877 #外网的域名 通过访问这个域名和端口找到这个服务 custom_domains = www.zzy1blog.cn
启动成功的话,我们登录管理页面,就能看到连接的服务了。如下:

编写本地服务测试类
@Slf4j
@Controller
@RequestMapping(value = "/test")
@ResponseBody
public class TestController {
@GetMapping("/message")
public void testNoneIntercept(HttpServletRequest httpServletRequest, HttpServletResponse response,String message) throws Exception {
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("来自本地服务器"+message);
}
}
application.yaml配置
server: port: 8080
访问: www.zzy1blog.cn:8877/frp/servers?message=访问本地服务器

反代成功
配置nginx反代frp
nginx配置
http {
server {
listen 80;
#请填写绑定证书的域名
server_name zzy1blog.cn;
location /frp/servers {
proxy_pass http://localhost:8877;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启nginx容器
docker-compose stop nginx docker-compose up -d nginx
访问 http://www.zzy1blog.cn/frp/servers?message=访问本地服务器2

搞定!
文章源地址 :使用docker搭建frp在云服务器上调用本地服务器的代码 – 我觉得大阳很强的blog








![[RSIC-V]Milk-V开发板 i2c测试oled及波形输出](https://img-blog.csdnimg.cn/041b873d9a2c415a99d21a57dfdbc327.png)










![[abc周赛复盘] AtCoder Beginner Contest 308 20230701](https://img-blog.csdnimg.cn/c6c1afc761364f739b443d4dca22b0b9.png)