Share-plus-chatgpt 搭建及使用
Share-plus-chatgpt项目部署
1、创建应用目录并创建配置文件
cd ~
mkdir cws && cd cws
mkdir -p data/config
export MONGODB_PASSWORD=your_pass # MongoDB 密码
export INITIAL_ADMIN_PASSWORD=your_pass # 初始管理员密码
# 运行一次 Docker 容器,创建配置文件:
docker run -it --rm \
-v $PWD/data/config:/tmp/config \
ghcr.io/moeakwak/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/
2、编辑 docker-compose 文件
echo "TZ=Asia/Shanghai" > .env
echo "MONGO_INITDB_DATABASE=cws" >> .env
echo "MONGO_INITDB_ROOT_USERNAME=cws" >> .env
echo "MONGO_INITDB_ROOT_PASSWORD=your_pass" >> .env
docker-compose.yml
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 --disable-webui
ports:
- "7999:7999"
environment:
- TZ=Asia/Shanghai
volumes:
- "./har/gpt3:/root/.gpt3"
- "./har/gpt4:/root/.gpt4"
启动服务
docker-compose up -d
3、配置 ChatGPT 代理
Ninja 文档:https://github.com/gngpp/ninja/blob/main/doc/readme_zh.md
简单来说,你需要:
- 在 CWS 的配置中将 ChatGPT 代理地址设置为
http://ninja:7999/backend-api/。(这应当在上一步已经完成了)- 参考 ninja 的文档获取 HAR 文件,将 HAR 文件放在
cws/har/gpt3(假如 GPT 3.5 模型出现验证码) 和cws/har/gpt4下。你可以直接上传文件到相应目录,也可以使用 Ninja 提供的网页上传(访问http://<你的服务器 IP>:7999/har/upload)。- 访问
https://chat.openai.com/api/auth/session并复制其中的 access token 项内容,在 CWS 的后台设置中的 credentials 中填入。
ArkoseLabs
发送GPT-4/GPT-3.5/创建API-Key对话需要Arkose Token作为参数发送,支持的解决方案暂时只有两种
1、使用HAR 支持HAR特征池化,可同时上传多个HAR,使用轮训策略 ChatGPT 官网发送一次 GPT-4 会话消息,浏览器 F12 下载 https://tcr9i.chat.openai.com/fc/gt2/public_key/35536E1E-65B4-4D96-9D97-6ADB7EFF8147 接口的HAR日志记录文件,使用启动参数 --arkose-gpt4-har-dir 指定HAR目录路径使用(不指定路径则使用默认路径~/.gpt4,可直接上传更新HAR),同理GPT-3.5和其他类型也是一样方法。支持WebUI上传更新HAR,请求路径:/har/upload,可选上传身份验证参数:--arkose-har-upload-key
2、使用YesCaptcha / CapSolver 平台进行验证码解析,启动参数--arkose-solver选择平台(默认使用YesCaptcha),--arkose-solver-key 填写Client Key
两种方案都使用,优先级是:HAR > YesCaptcha / CapSolver YesCaptcha / CapSolver推荐搭配HAR使用,出验证码则调用解析器处理,验证后HAR使用更持久 目前OpenAI已经更新登录需要验证Arkose Token,解决方式同GPT-4,填写启动参数指定HAR文件--arkose-auth-har-dir。创建API-Key需要上传Platform相关的HAR特征文件,获取方式同上。
OpenAI取消对GPT-3.5进行Arkose验证,可以不上传HAR特征文件使用(已上传的不影响),兼容后续可能会再次开启Arkose验证,需要加上启动参数--arkose-gpt3-experiment 进行开启GPT-3.5模型Arkose验证处理,WebUI不受影响。如果遇到418 I'm a teapot,可以开启--arkose-gpt3-experiment,同时需要上传HAR特征,如果没有GPT-3.5的特征,GPT-4的特征也可以使用,如果还不行,则尝试开启--arkose-gpt3-experiment-solver,可能会使用第三方平台解决验证码。
4、接下来要做的事
到这里,CWS 已经部署完成。要继续使用,你可能需要:
- 在服务器上配置反向代理,配置域名和 https 加密
- 关闭 Ninja 对外的 7999 端口,比如在 docker compose 配置中注释掉它,或者使用防火墙限制访问
5、升级及维护
docker-compose pull && docker-compose up -d
# 在更新前,建议备份数据,并且确保设置中已经打开 run_migration 选项,以便在更新后自动执行数据库迁移。