前言:最近生成图片的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 #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/
#docker-compose配置 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 ,输入账号密码后,应该就能看到这个页面了
如果是云服务器的话,记得开放7000,7500,8877这三个端口。
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
搞定!