唠唠闲话

GitHub 项目地址:https://github.com/Chanzhaoyu/chatgpt-web.git

方案 优点 缺点
使用 RailWay 部署 无需服务器 若无绑卡,有使用限制
pnpm 部署 支持服务器/本地部署,改动方便 需配置反向代理,配置环境
使用 docker 部署 支持服务器/本地部署,操作简单 需配置反向代理,前端改动不方便

这里仅介绍方案3,反向代理的配置参考这篇:「API 代理转发 | ChatGPT 应用实战」。

配置教程

编写 docker-compose.yml 文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: '3'

services:
app:
container_name: chatgpt-web-gpt4
image: rexwzh/chatgpt-web:v0.0.2 # 总是使用latest,更新时重新pull该tag镜像即可
ports:
- 3002:3002
environment:
# 二选一
OPENAI_API_KEY: "${OPENAI_API_KEY}"
# 二选一
OPENAI_ACCESS_TOKEN: "${OPENAI_ACCESS_TOKEN}"
# API接口地址,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_BASE_URL: "${OPENAI_API_BASE_URL}"
# API模型,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_MODEL: "${OPENAI_API_MODEL}"
# 反向代理,可选
API_REVERSE_PROXY: "${API_REVERSE_PROXY}"
# 访问权限密钥,可选
AUTH_SECRET_KEY: "${AUTH_SECRET_KEY}"
# 每小时最大请求次数,可选,默认无限
MAX_REQUEST_PER_HOUR: "${MAX_REQUEST_PER_HOUR}"
# 超时,单位毫秒,可选
TIMEOUT_MS: "${TIMEOUT_MS}"
# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_HOST: "${SOCKS_PROXY_HOST}"
# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
SOCKS_PROXY_PORT: "${SOCKS_PROXY_PORT}"
# Socks代理用户名,可选,和 SOCKS_PROXY_HOST & SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_USERNAME: "${SOCKS_PROXY_USERNAME}"
# Socks代理密码,可选,和 SOCKS_PROXY_HOST & SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_PASSWORD: "${SOCKS_PROXY_PASSWORD}"
# HTTPS_PROXY 代理,可选
HTTPS_PROXY: "${HTTPS_PROXY}"
env_file:
- .env

简单说明:

  1. container_name:容器名称,可选
  2. image:镜像名,这里用个人重构的镜像,改了头像和简介,原始镜像为 chenzhaoyu94/chatgpt-web
  3. ports:左侧填实际访问端口,可根据需要修改,右侧为容器端口,通常保持默认
  4. environment:从文件读取环境变量

到这里,我们还需要编写环境变量,提供具体的配置参数,新建 .env 文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 二选一
OPENAI_API_KEY=
# 二选一
OPENAI_ACCESS_TOKEN=

# API接口地址,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_BASE_URL=
# API模型,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_MODEL=
# 反向代理,可选
API_REVERSE_PROXY=
# 访问权限密钥,可选
AUTH_SECRET_KEY=

# 每小时最大请求次数,可选,默认无限
MAX_REQUEST_PER_HOUR=0
# 超时,单位毫秒,可选
TIMEOUT_MS=0
# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_HOST=
# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
SOCKS_PROXY_PORT=
# Socks代理用户名,可选,和 SOCKS_PROXY_HOST & SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_USERNAME=
# Socks代理密码,可选,和 SOCKS_PROXY_HOST & SOCKS_PROXY_PORT 一起时生效
SOCKS_PROXY_PASSWORD=
# HTTPS_PROXY 代理,可选
HTTPS_PROXY=

简单说明:

  1. OPENAI_API_KEYOPENAI_ACCESS_TOKEN 二选一,其中 OPENAI_API_KEY 优先级更高,Access token 可以在 web 端登录后访问 https://beta.openai.com/api/auth/session 获取
  2. OPENAI_API_BASE_URL 填写反向代理地址,对应 api key 的方式
  3. OPENAI_API_MODEL 填写模型名称,选 api key 时生效,默认为 gpt-3.5-turbo
  4. API_REVERSE_PROXY 填写反向代理地址,对应 access token 的方式
  5. AUTH_SECRET_KEY 填写访问密钥,可选

部署

编写好这两个文件后,执行 docker-compose up -d ,访问服务器的 3004 端口即可。

修改镜像

修改图标,链接等,然后

1
2
3
4
5
6
7
docker build -t chatgpt-web:v0.0.1 .
# 登录账号,登录一次即可
docker login
# 创建标签
docker tag chatgpt-web:v0.0.1 rexwzh/chatgpt-web:v0.0.1
# 上传镜像
docker push rexwzh/chatgpt-web:v0.0.1