Foreword
单个ChatGPT Plus 账号共享合租,各自会话独立分割,就好像一个人使用一样,方便给一个组织或者多人使用。
CWS
源于chatgpt-web-share项目,适用于个人、组织或团队的 ChatGPT 共享方案。共享一个 ChatGPT Plus 账号给多人使用,提供完善的管理和限制功能。
https://github.com/chatpire/chatgpt-web-share
部署
新建目录
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/
设置mongodb的属性
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
新建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 --arkose-endpoint https://你的ninjia独立访问页面.com
ports:
- "7999:7999"
environment:
- TZ=Asia/Shanghai
启动
docker-compose up -d
查看log
docker logs cws -f
没有问题的话,此时以及可以登录cws了
http://<你的服务器 IP>:5000
登录管理员账号,和前面设置的宏密码
admin
ninja
ninja主要用来处理多人时会出现会话验证码等问题的,是必须的
由于token和HAR大概是10天过期一次,所以需要频繁操作HAR和token,还是有点烦的
获取HAR
此方法已经被废弃了
参考 ninja 的文档获取 HAR 文件
https://github.com/gngpp/ninja/blob/main/doc/readme_zh.md
F12捕捉,在GPT官网发送一次会话(GPT4或者3.5)
https://tcr9i.chat.openai.com/fc/gt2/public_key/35536E1E-65B4-4D96-9D97-6ADB7EFF8147
将HAR的log文件下载下来
将 HAR 文件上传到新搭建的ninja中,传入到对应的版本中即可
http://你服务器的ip:7999/har/upload
注意这里的删除不生效,还是需要去目录下har中进行删除
Arkose Endpoint
2024年3月18日后,此方法也失效了
具体参考
https://cws-docs.pages.dev/zh/guide/manual.html
需要整个docker更新到0.4.8版本,然后启用Arkose
简单说给ninja一个独立域名,让系统里可以独立访问ninja,反代的话对应也要给出来
然后docker-compose中增加arkose的配置,并且取消掉HAR的配置即可
services:
ninja:
image: ghcr.io/gngpp/ninja:latest
container_name: ninja
restart: unless-stopped
command: run --arkose-endpoint https://ninja.yourdomain.com
ports:
- "7999:7999"
environment:
- TZ=Asia/Shanghai
#volumes:
# - "./har:/root/.ninja" # <--- 已经不再需要
networks:
- cwsnetwork
在 CWS 的设置页面中,勾选“启用前端 Arkose 验证”,并在下方 Arkose Endpoint Base 处填入
https://你的ninja域名/v2/
- 注意,这个地址必须是前端可以访问到的地址
测试Arkose按钮,正确的话,就能看到成功的提示了
获取token
访问openai获取access token
https://chat.openai.com/api/auth/session
在 CWS 的后台设置中的 credentials 中的选项一中填入
- 如果更换了账号或者access token,可能会在会话界面报错,建议直接重启docker服务
go-chatgpt-api
2024.4.16 此方案也出现接口错误,使用下面的始皇接口解决问题
由于ninja方案失效了,所以这里替换一个后端即可继续使用,不过go-chatgpt-api也得使用老方法,需要获取har
F12捕捉,在GPT官网发送一次会话(GPT4)
将HAR的log文件下载下来
将 HAR 文件上传到cws/harPool
中即可
修改doker-compose内容,用go-chatgpt-api取代原来的ninja
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}
go-chatgpt-api:
container_name: go-chatgpt-api
image: maxduke/go-chatgpt-api
ports:
- 127.0.0.1:8080:8080
environment:
- PORT=
- TZ=Asia/Shanghai
- PROXY=
- OPENAI_EMAIL=
- OPENAI_PASSWORD=
- CONTINUE_SIGNAL=
- ENABLE_HISTORY=
- IMITATE_ACCESS_TOKEN=
volumes:
- ./harPool:/app/harPool
restart: unless-stopped
修改后端API,将原本的ninja7999改为http://go-chatgpt-api:8080/chatgpt/backend-api/
关闭Arkose验证
token的获取还是和之前一样,保存,重启一下,gpt就可以使用了
始皇接口
base url修改为始皇的接口,接口请求有限制,每10s10次
https://chat.oaifree.com/dad04481-fa3f-494e-b90c-b822128073e5/backend-api/
测试
然后就可以在会话管理这里进行消息同步,把所有对话同步过来,然后就可以分配给各个用户了
正常对话
更新
这个项目更新还是比较快的,各种问题还是比较多
docker-compose pull && docker-compose up -d
数据库更新的话,记得打卡运行迁移
常见问题
类似的问题基本都是token有问题或者是HAR有问题,还有就是项目更新了,接口变了,ninja不支持HAR的方式了,等等
OpenAI 授权失败 (403 错误),请联系管理员处理
OpenAI 服务器错误 (500 错误),可能是 OpenAI 服务故障或者模型接口发生变更,请告知管理员
Caddy
安装Caddy 隐藏各种端口
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
修改caddy配置
vi /etc/caddy/Caddyfile
你的cws域名 {
reverse_proxy 127.0.0.1:5000
}
import sites/*
重启caddy
systemctl restart caddy
Summary
企微的gpt机器人和这个多人分享gpt同时在一个机器上跑,内存消耗的也很少
分享多人使用,还是挺不错的
Quote
https://cws-docs.pages.dev/zh/guide/quick-start.html