About
用 Express 和 Vue3 搭建的同时支持 openAI Key 和 网页 accessToken 的 ChatGPT 演示网页
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值
修改配置文件
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的版本信息