前言

最近雨晴发现一个好玩的东西 chatgpt-web-mj-proxy

它可以通过简单的设定,快速部署一个专属于你的AI在线工具集,支持对话,绘图,生成音乐/视频等实用功能,下面就是如何使用docker部署它的教程啦( •̀ ω •́ )✧

如果你还没有安装docker的话,可以看这篇文章

1.编写docker-compose.yml文件

该项目官方是支持使用vercel部署的,只不过那样的话会缺失一些功能(例如隐藏服务端配置,文件上传,设置访问密码等),所以我们选择功能更全面的docker部署

这是一个示例 docker-compose.yml 文件,可以根据自己的需求进行修改喵~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
services:
chatgpt-web-midjourney-proxy:
image: ydlhero/chatgpt-web-midjourney-proxy
container_name: chatgpt-web-midjourney-proxy
ports:
- "127.0.0.1:6015:3002" #只监听本地,配合nginx反代,防止端口直接暴露喵~
environment:
- OPENAI_API_KEY= #修改为你的OpenAI API 密钥
- OPENAI_API_BASE_URL= #修改为你的baseURL
- OPENAI_API_MODEL=gpt-3.5-turbo-1106 #这个是对话时默认使用的模型
- MJ_SERVER= #mj接口地址
- MJ_API_SECRET=
- LUMA_SERVER= #LUMA接口地址
- LUMA_KEY=
- SUNO_SERVER= #SUNO接口地址
- SUNO_KEY=
- AUTH_SECRET_KEY= #访问密码(强烈建议设置喵,防止未授权访问)
- AUTH_SECRET_ERROR_COUNT=3 #密码输错三次就阻止该用户继续尝试,nginx要设置proxy_set_header X-Forwarded-For $remote_addr
- AUTH_SECRET_ERROR_TIME=3 #3分钟内禁止输入密码
- HIDE_SERVER=1 #隐藏服务器配置,建议也打开喵
- UPLOAD_IMG_SIZE=2 #图片上传大小限制(单位M)
- MENU_DISABLE= #(禁用某些菜单项,比如gpts,draws,gallery,music,video,dance,realtime)
- VISION_MODEL=gpt-4o #当用户发送图片时,默认的视觉理解模型
restart: unless-stopped
networks:
- app-network

networks:
app-network:
driver: bridge

还有更多设置可以到项目的GitHub页面进行查看捏 = ̄ω ̄=

2.启动服务

修改完配置文件后,运行 docker compose up -d,配置好nginx反代就可以访问啦,下面是一个nginx配置文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
server {
listen 80;
server_name 你的域名喵;

# 强制跳转到 HTTPS(推荐喵)
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name aitool.domain.xyz;

# SSL 证书配置(使用 Let's Encrypt 或其他证书捏)
ssl_certificate pem证书路径;
ssl_certificate_key 密钥路径;

# SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

# 日志
access_log /var/log/nginx/aitool.domain.xyz.access.log;
error_log /var/log/nginx/aitool.domain.xyz.error.log;

# 反向代理配置
location / {
proxy_pass http://127.0.0.1:6015;

# 传递必要的请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

# 缓冲区设置(适合 AI 工具长响应)
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}

结语

是不是非常简单喵ヾ(≧▽≦*)o 喜欢的话记得给雨晴点一个赞哦~

谢谢你的浏览喵~