Docker建站(十八)ChatGPT-Web:搭建专属 OpenAI 镜像站

0、前言

ChatGPT 发布已经好几个月了,热度依然不减,然而由于网络原因一开始我并没有找到合适的服务器访问,后面又卡在了短信验证码,SMS Activate提供的印度、马来西亚、印尼等手机号完全接不到码,于是我只好求助万能的群友,用他们搭建的镜像站玩玩。

后来由于他们额度用尽,镜像站都关了或者不对外开放了。这时 @IURT 和我说他想搞台服务器专门用来上 GPT,正好我会,于是我们一拍即合,搞了ChatGPT-WebChatGPT-Next-Web两个镜像站用于访问GPT。

1、介绍

有两个最火的 Docker 镜像:ChatGPT-WebChatGPT-Next-Web

介绍可以自行去 GitHub 看。

2、安装

默认使用 API Key 调用,如需使用 Access Token 翻到本文 3.2 配置部分。

2.1、Web

执行:

Bash
1
2
3
4
5
6
7
docker run -d \
    --name chatgpt-web \
    -p 3002:3002 \
    --env OPENAI_API_KEY=sk-xxxxxx \
    --env OPENAI_API_BASE_URL=https://api.openai.com \
    --env AUTH_SECRET_KEY=ChatGPTWebPassword \
chenzhaoyu94/chatgpt-web

OPENAI_API_KEY:必选,替换为自己的密钥,GPT 3.5 调用收费但是有 5 美元限额。
OPENAI_API_BASE_URL:可选,替换为自建或社区的反代官方 API 接口,适合无法访问官方 API 的服务器使用。
AUTH_SECRET_KEY:可选,如果不想自己的镜像站被发现然后滥用,最好设置一下,改成自己想要设的密码,可以多个:密码1,密码2,密码3

启动后反向代理127.0.0.1:3002

2.2、NextWeb

执行:

Bash
1
2
3
4
5
6
docker run -d \
    --name chatgpt-next-web \
    -p 3000:3000 \
    -e OPENAI_API_KEY="sk-xxxxxx" \
    -e CODE="ChatGPTWebPassword" \ 
yidadaa/chatgpt-next-web

OPENAI_API_KEY替换为自己的密钥,CODE改成自己想要设的密码。

启动后反向代理127.0.0.1:3000

3、配置

3.1、屏蔽爬虫

按理来说安装完之后就可以 Enjoy it!,但是为了防止被发现然后刷量还是配置一下规则吧。

在 Nginx 配置文件中加入:

此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

如果用域名访问,并且使用 DNSPod 等支持分地域解析的,可以添加默认主机为0.0.0.0,境内主机为实际 IP,直接杜绝境外访问。

使用了宝塔防火墙等可以设置禁止境外、禁止爬虫等。

3.2、使用非官方 API

ChatGPT-Web 支持使用非官方反代 API + Access Token 访问,会比官方 API 更加聪明,理论上和直接使用浏览器登录聊天无区别。

对比:

比较项目官方 APIAccess Token(非 Plus)
基本要求OpenAI帐号
绑定国外的虚拟信用卡
仅OpenAI帐号
收费情况使用收费免费
基础Prompt支持不支持
超参数支持Temprature
Top_p
不支持
单位时间请求数较高,适合多人使用较低,适合个人使用
响应速度较快(gpt-3.5-turbo)较慢(gpt-3.5)
Token 长度较长较短
绕过Cloudflare的反向代理不需要需要
稳定性较高较低(社区代理)
较高(自建代理)

3.2.1、使用社区代理

Bash
1
2
3
4
5
6
7
docker run -d \
    --name chatgpt-web \
    -p 3002:3002 \
    --env OPENAI_ACCESS_TOKEN=eyJxxxx \
    --env API_REVERSE_PROXY=https://ai.fakeopen.com/api/conversation \
    --env AUTH_SECRET_KEY=ChatGPTWebPassword \
chenzhaoyu94/chatgpt-web

OPENAI_ACCESS_TOKEN:必选,浏览器登录chat.openai.com后访问

https://chat.openai.com/api/auth/session

即可获得,但是隔一段时间会过期,推荐搭配此项目使用:

https://github.com/acheong08/OpenAIAuth

API_REVERSE_PROXY:可选,如果不知道可以删去此项或保持默认。

3.2.2、使用自建代理

首先使用服务器执行

Bash
1
curl -v https://chat.openai.com

看看是否被屏蔽,如果被屏蔽可以使用如下方法,连接至 Warp+ 解锁。

如果访问正常,新建docker-compose.yml

此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

如果被屏蔽,改为如下配置文件:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

network_mode: host:如果启用该参数,之后的 ChatGPT-Web 设置反代地址时,可以使用127.0.0.1:8080,否则要使用Docker 网络宿主机 IP:映射端口,例如默认情况下是172.17.0.1:8080。但是启用后使用的端口就是 8080 且无法自定义

填写完配置文件后,在该目录下执行:

Bash
1
docker-compose up -d

即可启动容器。

之后,启动 ChatGPT-Web:

Bash
1
2
3
4
5
6
7
8
docker run -d \
    --name chatgpt-web \
    -p 3002:3002 \
    --env OPENAI_ACCESS_TOKEN=eyJxxxx \
    --env API_REVERSE_PROXY=http://127.0.0.1:8080/api/conversation \
    --env AUTH_SECRET_KEY=ChatGPTWebPassword \
    #--network=host \
chenzhaoyu94/chatgpt-web

network=host:如果在反代 API 的配置文件中未启用network_mode: host,在此处使用network=host同样可以将反代地址设置为127.0.0.1,否则为 Docker 宿主机 IP。但是这样映射出来的端口就是 3002 且无法自定义,注意更改 Nginx 反向代理配置文件。

到这里就完成了自建 API 的搭建和对接。

Docker建站(十八)ChatGPT-Web:搭建专属 OpenAI 镜像站

https://blog.tsinbei.com/archives/1243/

文章作者
Hsukqi Lee
发布于

2023-05-02

修改于

2023-06-22

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
4 条

Tony

Tony

感谢分享,看看能否搭建成功

  回复

coco

coco

感谢大佬

  回复

看透一切的匿名人士

看透一切的匿名人士

谢谢大佬分享

  回复

ven2s

ven2s

找了好久的教程,谢谢大佬分享

  回复