About

用 Express 和 Vue3 搭建的同时支持 openAI Key 和 网页 accessToken 的 ChatGPT 演示网页
c1-2.8.0
c2-2.8.0

Docker

Docker 参数示例

  • OPENAI_API_KEY 二选一
  • OPENAI_ACCESS_TOKEN 二选一,同时存在时,OPENAI_API_KEY 优先
  • OPENAI_API_BASE_URL 可选,设置 OPENAI_API_KEY 时可用
  • OPENAI_API_MODEL 可选,设置 OPENAI_API_KEY 时可用
  • API_REVERSE_PROXY 可选,设置 OPENAI_ACCESS_TOKEN 时可用
  • AUTH_SECRET_KEY 访问权限密钥,可选
  • TIMEOUT_MS 超时,单位毫秒,可选
  • SOCKS_PROXY_HOST 可选,和 SOCKS_PROXY_PORT 一起时生效
  • SOCKS_PROXY_PORT 可选,和 SOCKS_PROXY_HOST 一起时生效

搭建

Docker compose

创建文件夹

mkdir -p chatgpt && cd /root/chatgpt

编辑Docker compose.yml

touch docker-compose.yml
vim docker-compose.yml

以下是配置文件,自行修改

version: '3'

services:
  app:
    image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
    ports:
      - 3002:3002
    environment:
      # 二选一
      OPENAI_API_KEY: xxxxxx
      # 二选一
      OPENAI_ACCESS_TOKEN: xxxxxx
      # API接口地址,可选,设置 OPENAI_API_KEY 时可用
      OPENAI_API_BASE_URL: xxxx
      # API模型,可选,设置 OPENAI_API_KEY 时可用
      OPENAI_API_MODEL: xxxx
      # 反向代理,可选
      API_REVERSE_PROXY: xxx
      # 访问权限密钥,可选
      AUTH_SECRET_KEY: xxx
      # 超时,单位毫秒,可选
      TIMEOUT_MS: 60000
      # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
      SOCKS_PROXY_HOST: xxxx
      # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
      SOCKS_PROXY_PORT: xxxx

启动

docker-compose up -d

浏览器网页地址

http://ip:3002

更新

docker-compose down
docker-compose pull
docker-compose up -d

反代

安装caddy

安装依赖

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

安装完成后,添加官方 Caddy GPG 密钥

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

更新apt

sudo apt update

最后,使用以下命令安装 Caddy

sudo apt install caddy -y

密码验证

考虑到这个服务没有账户密码,那就用caddy做一个简单的密码验证(2.10.0版本以上已加入身份验证)

首先创建一个密码的hash值

caddy hash-password

密码输入不会显示,输入两次即可,完成后会得到一串hash值
屏幕截图 2023-03-05 193444

修改配置文件

vim /etc/caddy/Caddyfile

chat.web.service改成自己域名,username自己改,“basicauth *” 为所有请求(即所有路径和主机名)启用基本身份验证。

chat.web.service {
    encode gzip
    basicauth * {
       username $hash-password #$hash-password改为上面生成的hash值
   }
    reverse_proxy 127.0.0.1:3002
}

如果docker-compose设置了AUTH_SECRET_KEY: xxx,再设置caddy的密码验证会冲突,则用以下配置。

chat.web.service {
    encode gzip
    reverse_proxy 127.0.0.1:3002
}

完成后启动,启动后等带几分钟,caddy会配置ssl证书。

systemctl reload caddy # 重载配置文件
systemctl daemon-reload # 重载服务
systemctl enable caddy # 开机启动
systemctl start caddy # 启动
systemctl stop caddy # 停止
systemctl restart caddy  # 重启
systemctl status caddy   # 查看状态
caddy version #查看caddy的版本信息