跳至主要內容

快速上手


介绍

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

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

VPS 推荐

如果你还没有 VPS 主机,可以考虑 Racknerdopen in new window 的低价 VPS,目前正在促销中。推荐 Racknerd 的 2 核 3G 型号open in new window(年付仅 $27.98)或 2 核 4G 型号open in new window(年付仅 $37.38),性价比较高,完全满足 CWS 的性能要求。

如果你有兴趣,请移步 VPS 推荐,里面列举了一些低价的 VPS 服务器,可用于部署 CWS 项目。通过我提供的链接购买,我将获得一部分返利,这将是对本项目的很大支持,感谢!

关于现状

目前,为 CWS 提供 ChatGPT 反代的 ninja 项目已经删除镜像源,导致以下教程中关于 ninja 的部分可能无法正常工作。

你可以暂时使用 xyhelper 等反代,或是寻找一个 ninja 的历史版本镜像。

如果有更多需求,可以加入 项目群组 获取相关信息。

安装

1. 准备

在开始前,请检查服务器是否能够解锁 ChatGPT,否则需要使用代理或者 Warp。推荐使用能够解锁 ChatGPT 的 IP 质量较好的服务器。

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

如果你还没有安装 Docker,请先参考 Docker 官方文档open in new window 安装 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.yamlcredentials.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

或者,你可以从 这里open in new window 直接获取配置文件模板。

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 的配置文件。Ninjaopen in new window 是 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 的配置

  1. 自 v0.4.8 版本起,支持不用 har 文件的 Arkose 验证。这也是目前推荐的做法,详见 使用手册。如果使用此方法,则下面的配置中的 ninja 部分需要参考文档进行相应的修改。
  2. Ninja 的启动参数和配置方法可能会有变更。如果在启动时或升级后遇到任何错误,则上面的配置可能已经过时。此时请自行查阅 Ninja 文档open in new window
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 文档open in new window 的说明来配置 Ninja。

配置 Ninja

简单来说,你需要:

  1. 在 CWS 的配置中将 ChatGPT 代理地址设置为 http://ninja:7999/backend-api/。(这应当在上一步已经完成了)
  2. 二选一:
    • 参考 ninja 的文档获取 HAR 并上传给 Ninja;
    • 参考 使用手册 启用 Arkose 验证功能。
  3. 访问 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!