方块糖的工坊
方块糖的工坊

搭建ChatGPT共享服务

介绍

出于学习的目的,开通了GPT4,开通方式见我之前的文章开通ChatGPT plus,一个人用有点浪费,发现Github上有个现成的账号共享方案,即chatgpt-web-share

本教程将指导您快速部署一个 ChatGPT Web Share 站点和服务。您需要准备:

  • 一个有效的 ChatGPT Plus 账号
  • 请在设置中启用所有 beta features
  • 一台 x64 Linux 服务器
  • 系统:推荐 Ubuntu 20.04 LTS 以上或 Debian 10 以上
  • 配置:推荐 2 核 2G RAM 以上;至少需要 1 核 1G
  • 推荐使用支持 AVX 指令集的 CPU

安装

1.准备

确保你的服务器能够访问ChatGPT,国外主机或者国内主机+代理。

登录你的 ChatGPT Plus 账号,在设置启用所有 beta features。

如果你还没有安装 Docker,请先参考 Docker 官方文档 安装 Docker。

2. 创建应用目录并创建配置文件

为方便管理,数据和 docker compose 配置应该放在一个单独的文件夹(cws)中。我们在 home 目录下创建 cws 文件夹:

cd /home
mkdir cws
cd cws/
mkdir -p /home/cws/data/config

密码配置,本文中统一使用如下密码

MONGODB_PASSWORD=password
INITIAL_ADMIN_PASSWORD=password

接下来,运行一次 Docker 容器,创建配置文件:

docker run -it --rm \
  -v /home/cws/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:password@mongo:27017" --initial-admin-password "password" --chatgpt-base-url http://ninja:7999/backend-api/

配置文件创建成功后,你可以看到 ./cws/data/config 下出现了两个文件:config.yamlcredentials.yaml

上述命令会修改配置文件,自动生成 secret (-G)、配置 MongoDB (--mongodb-url)、创建初始管理员账户 (--initial-admin-password)、设置 ChatGPT 代理地址 (--chatgpt-base-url)。你无需再手动编辑配置文件,就可以正常地启动 CWS。

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=password" >> .env

接下来,在 cws 目录下创建如下的 Docker compose 配置文件 docker-compose.yml,它包括了 CWS 本身、Mongo DB、Ninja。其中,Ninja 是 ChatGPT 代理,用于跨过 Cloudflare 验证以及对话时的 Arkose 验证码。

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
    environment:
      - TZ=Asia/Shanghai
      - PROXIES=http://主机IP:7890
    command: run
    ports:
      - 7999:7999

一切就绪,运行 docker-compose up -d 启动 CWS。你可以使用 docker logs cws -f 查看日志。

ninja容器的environment中配置了PROXIES,即代理,不了解怎么开通的可以查看我之前的文章Linux科学上网(CentOS 7)

若一切正常,你可以打开 http://<服务器 IP>:5000 访问 CWS,用 admin 以及刚刚设定的密码登录。登录后,你可以进一步在设置页面修改配置。

3. 配置 ChatGPT 代理

现在,你需要参考 Ninja 文档 的说明来配置 Ninja。

为了使用GPT4,需要上传HAR文件,ChatGPT 官网发送一次 GPT-4 会话消息,浏览器 F12 下载 https://tcr9i.chat.openai.com/fc/gt2/public_key/35536E1E-65B4-4D96-9D97-6ADB7EFF8147 接口的HAR日志记录文件,支持WebUI上传更新HAR,请求路径/har/upload。

得到HAR文件:

chatgpt_get_har

通过webui上传HAR文件:

image-20240110213938091

4. 后台配置

访问 https://chat.openai.com/api/auth/session 并复制其中的 access token 项内容,在 CWS 的后台设置中的 credentials 中填入。

image-20240110215041161

来到CWS 的后台,会话管理,点击下图按钮触发会话同步,如果一切正常,你应该可以看到对话列表中出现了你的 ChatGPT Plus 账号中的旧对话。

image-20240110215140354

接下来,进入对话页,尝试新建一个 GPT-4 对话并发送消息。如果一切正常,你可以收到 ChatGPT 的回复;否则,你可能需要检查配置。

cws_recording

发表回复

textsms
account_circle
email

方块糖的工坊

搭建ChatGPT共享服务
介绍 出于学习的目的,开通了GPT4,开通方式见我之前的文章开通ChatGPT plus,一个人用有点浪费,发现Github上有个现成的账号共享方案,即chatgpt-web-share。 本教程将指导您快速…
扫描二维码继续阅读
2024-01-10