快速上手
介绍
本教程将指导您快速部署一个 ChatGPT Web Share 站点和服务。您需要准备:
- 一个有效的 ChatGPT Plus 账号
- 请在设置中启用所有 beta features
- 一台 x64 Linux 服务器
- 系统:推荐 Ubuntu 20.04 LTS 以上或 Debian 10 以上
- 配置:推荐 2 核 2G RAM 以上;至少需要 1 核 1G
- 推荐使用支持 AVX 指令集的 CPU
VPS 推荐
如果你还没有 VPS 主机,可以考虑 Racknerd 的低价 VPS,目前正在促销中。推荐 Racknerd 的 2 核 3G 型号(年付仅 $27.98)或 2 核 4G 型号(年付仅 $37.38),性价比较高,完全满足 CWS 的性能要求。
如果你有兴趣,请移步 VPS 推荐,里面列举了一些低价的 VPS 服务器,可用于部署 CWS 项目。通过我提供的链接购买,我将获得一部分返利,这将是对本项目的很大支持,感谢!
关于现状
目前,为 CWS 提供 ChatGPT 反代的 ninja 项目已经删除镜像源,导致以下教程中关于 ninja 的部分可能无法正常工作。
你可以暂时使用 xyhelper 等反代,或是寻找一个 ninja 的历史版本镜像。
如果有更多需求,可以加入 项目群组 获取相关信息。
安装
1. 准备
在开始前,请检查服务器是否能够解锁 ChatGPT,否则需要使用代理或者 Warp。推荐使用能够解锁 ChatGPT 的 IP 质量较好的服务器。
登录你的 ChatGPT Plus 账号,在设置启用所有 beta features。
如果你还没有安装 Docker,请先参考 Docker 官方文档 安装 Docker。务必确保 Docker 是最新版本。
2. 创建应用目录并创建配置文件
为方便管理,数据和 docker compose 配置应该放在一个单独的文件夹(cws
)中。我们在 home 目录 ~
下创建 cws
文件夹(如果你不在 home 目录中执行下面的命令,以后的操作需要相应修改路径):
cd ~
mkdir cws && cd cws
mkdir -p data/config
我们先将密码写入环境变量,以便后续使用。这里你需要自行修改:
export MONGODB_PASSWORD=password # MongoDB 密码
export INITIAL_ADMIN_PASSWORD=password # 初始管理员密码
接下来,运行一次 Docker 容器,创建配置文件:
docker run -it --rm \
-v $PWD/data/config:/tmp/config \
ghcr.io/chatpire/chatgpt-web-share:latest \
python /app/backend/manage.py create_config -O /tmp/config --generate-secrets --mongodb-url "mongodb://cws:${MONGODB_PASSWORD}@mongo:27017" --initial-admin-password "${INITIAL_ADMIN_PASSWORD}" --chatgpt-base-url http://ninja:7999/backend-api/
配置文件创建成功后,你可以看到 ~/cws/data/config
下出现了两个文件:config.yaml
和 credentials.yaml
。
上述命令会修改配置文件,自动生成 secret (-G
)、配置 MongoDB (--mongodb-url
)、创建初始管理员账户 (--initial-admin-password
)、设置 ChatGPT 代理地址 (--chatgpt-base-url
)。你无需再手动编辑配置文件,就可以正常地启动 CWS。
手动编辑配置文件
你也可以运行如下命令创建一个简单的配置文件,然后手动编辑 data/config
下的配置文件:
docker run -it --rm \
-v $PWD/data/config:/tmp/config \
ghcr.io/chatpire/chatgpt-web-share:latest \
python /app/backend/manage.py create_config -O /tmp/config
或者,你可以从 这里 直接获取配置文件模板。
3. 编辑 Docker compose 配置文件
运行如下命令,创建 .env
文件:
echo "TZ=Asia/Shanghai" > .env
echo "MONGO_INITDB_DATABASE=cws" >> .env
echo "MONGO_INITDB_ROOT_USERNAME=cws" >> .env
echo "MONGO_INITDB_ROOT_PASSWORD=$MONGODB_PASSWORD" >> .env
接下来,在 cws
目录下创建如下的 Docker compose 配置文件 docker-compose.yml
,它包括了 CWS 和 Mongo DB;
创建另一个同级的 ninja
目录,用于存放 Ninja 的配置文件。Ninja 是 ChatGPT 代理,用于跨过 Cloudflare 验证以生成对话时的 Arkose 验证码。
cws
目录下:
version: "3"
services:
chatgpt-web-share:
image: ghcr.io/chatpire/chatgpt-web-share:latest
container_name: cws
restart: unless-stopped
ports:
- 5000:80
volumes:
- ./data:/app/backend/data
environment:
- TZ=${TZ}
- CWS_CONFIG_DIR=/app/backend/data/config
depends_on:
- mongo
networks:
- cwsnetwork
mongo:
container_name: mongo
image: mongo:6.0
restart: always
# ports:
# - 27017:27017
volumes:
- ./mongo_data:/data/db
environment:
MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
networks:
- cwsnetwork
networks:
cwsnetwork:
name: cwsnetwork
external: true
ninja
目录下:
关于 Ninja 的配置
version: '3'
services:
ninja:
image: ghcr.io/gngpp/ninja:latest
container_name: ninja
restart: unless-stopped
command: run --arkose-har-dir /root/.ninja
# command: run --arkose-endpoint=<your_ninja_domain> # <-- 如果你使用了 Arkose 验证
ports:
- "7999:7999"
environment:
- TZ=Asia/Shanghai
volumes:
- "./har:/root/.ninja"
networks:
- cwsnetwork
networks:
cwsnetwork:
name: cwsnetwork
external: true
另一种 all in one 的做法
version: "3"
services:
chatgpt-web-share:
image: ghcr.io/chatpire/chatgpt-web-share:latest
container_name: cws
restart: unless-stopped
ports:
- 5000:80
volumes:
- ./data:/app/backend/data
environment:
- TZ=${TZ}
- CWS_CONFIG_DIR=/app/backend/data/config
depends_on:
- mongo
mongo:
container_name: mongo
image: mongo:6.0
restart: always
# ports:
# - 27017:27017
volumes:
- ./mongo_data:/data/db
environment:
MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
ninja:
image: ghcr.io/gngpp/ninja:latest
container_name: ninja
restart: unless-stopped
command: run --arkose-har-dir /root/.ninja
ports:
- "7999:7999"
environment:
- TZ=Asia/Shanghai
volumes:
- "./har:/root/.ninja"
一切就绪,运行 docker-compose up -d
启动 CWS。你可以使用 docker logs cws -f
查看日志。
如果你是在 NAS 上使用 mongodb,CPU 不支持 AVX 指令集,可以使用 groundhog2k/mongo:6.0.9
镜像代替 mongo:6.0
。
若一切正常,你可以打开 http://<你的服务器 IP>:5000
访问 CWS,用 admin
以及刚刚设定的密码登录。登录后,你可以进一步在设置页面修改配置。
3. 配置 ChatGPT 代理
现在,你需要参考 Ninja 文档 的说明来配置 Ninja。
配置 Ninja
简单来说,你需要:
- 在 CWS 的配置中将 ChatGPT 代理地址设置为
http://ninja:7999/backend-api/
。(这应当在上一步已经完成了) - 二选一:
- 参考 ninja 的文档获取 HAR 并上传给 Ninja;
- 参考 使用手册 启用 Arkose 验证功能。
- 访问
https://chat.openai.com/api/auth/session
并复制其中的 access token 项内容,在 CWS 的后台设置中的 credentials 中填入。
完成配置后,你可以进入 CWS 的对话管理页,点击上方的同步对话按钮。如果一切正常,你应该可以看到对话列表中出现了你的 ChatGPT Plus 账号中的旧对话。
接下来,进入对话页,尝试新建一个 GPT-4 对话并发送消息。如果一切正常,你可以收到 ChatGPT 的回复;否则,你可能需要检查配置。
4. 接下来要做的事
到这里,CWS 已经部署完成。要继续使用,你可能需要:
- 在服务器上配置反向代理,配置域名和 https 加密
- 关闭 Ninja 对外的 7999 端口,比如在 docker compose 配置中注释掉它,或者使用防火墙限制访问
请继续阅读 使用手册 和 进阶指南 中的内容。
Enjoy!