Docker快速部署一个简单的网页版ChatGPT
1.注册openai账号
2、获取accessToken
直接访问以下网址可以获取accessToken
或者安装ChatGPT Auth Helper插件访问下面网址直接获取
3、部署ChatGPT Web直接使用
在服务器建立docker-compose.yml,输入以下内容
XML/HTML代码
- version: '3'
- services:
- app:
- container_name: chatgpt-web
- image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
- ports:
- - 3002:3002
- environment:
- # 二选一
- 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: 60000
- # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
- SOCKS_PROXY_HOST:
- # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
- SOCKS_PROXY_PORT:
OPENAI_ACCESS_TOKEN: 填入获取的 accessToken AUTH_SECRET_KEY:可以设置一个密码,防止外人访问。
启动容器:
XML/HTML代码
- docker-compose up -d
也可以使用命令直接启动
XML/HTML代码
- docker run -it \
- --name=chatgpt-web \
- -e OPENAI_ACCESS_TOKEN= \
- -e AUTH_SECRET_KEY=admin \
- -p 3002:3002 \
- --restart unless-stopped \
- chenzhaoyu94/chatgpt-web
然后打开浏览器:http://ip:3002 即可使用。
其他的也有很多docker可以快速搭建功能更强大的ChatGPT个人网站,方便访问。使用accessToken可以不受官方IP限制,在任意服务器任意地方使用,免费,不需要考虑代理问题,和官方网页效果一样,使用api的话需要代理,容易被封,accessToken一般有效期十几天,到期修改就可以。
其他的搭建反代什么的可以参考网站,很多资料,个人自用就无所谓了。
PandoraNext,Pandora的升级版
XML/HTML代码
- git clone https://github.com/pandora-next/deploy.git /opt/pandora
- docker run -d --restart always --name PandoraNext --net=bridge \
- -p 8181:8181 \
- -v /opt/pandora/data:/data \
- -v /opt/pandora/sessions:/root/.cache/PandoraNext \
- pengzhile/pandora-next
license_id获取:https://dash.pandoranext.com
复制License Id:后的内容,填写在config.json的license_id字段,然后启动PandoraNext,否则无法启动。
config.json配置说明:
XML/HTML代码
- {
- "bind": "127.0.0.1:8181",
- "tls": {
- "enabled": false,
- "cert_file": "",
- "key_file": ""
- },
- "timeout": 600,
- "proxy_url": "",
- "license_id": "",
- "public_share": false,
- "site_password": "",
- "setup_password": "",
- "server_tokens": true,
- "proxy_api_prefix": "",
- "isolated_conv_title": "*",
- "captcha": {
- "provider": "",
- "site_key": "",
- "site_secret": "",
- "site_login": false,
- "setup_login": false,
- "oai_username": false,
- "oai_password": false
- },
- "whitelist": null
- }
XML/HTML代码
- bind指定绑定IP和端口,在docker内,IP只能用0.0.0.0,否则映射不出来。
- 如果你不打算套nginx等反代,bind参数的IP请使用0.0.0.0!!!
- tls配置PandoraNext直接以https启动。
- enabled 是否启用,true或false。启用时必须配置证书和密钥文件路径。
- cert_file 证书文件路径。
- key_file 密钥文件路径。
- timeout是请求的超时时间,单位为秒。
- proxy_url指定部署服务流量走代理,如:http://127.0.0.1:8888、socks5://127.0.0.1:7980
- license_id指定你的License Id,可以在这里获取。
- public_share对于GPT中创建的对话分享,是否需要登录才能查看。为true则无需登录即可查看。
- site_password设置整站密码,需要先输入这个密码,正确才能进行后续步骤。充分保障私密性。
- setup_password定义一个设置密码,用于调用/setup/开头的设置接口,为空则不可调用。
- server_tokens设置是否在响应头中显示版本号,true显示,false则不显示。
- proxy_api_prefix可以给你的proxy模式接口地址添加前缀,让人意想不到。注意设置的字符应该是url中允许的字符。包括:a-z A-Z 0-9 - _ . ~
- proxy_api_prefix 你必须设置一个不少于8位,且同时包含数字和字母的前缀才能开启proxy模式!
- /backend-api/conversation proxy模式比例 1:4
- /v1/chat/completions 3.5模型比例 1:4
- /v1/chat/completions 4模型比例 1:10, 无需打码
- /api/auth/login 登录接口比例 1:100,无需打码
- isolated_conv_title现在隔离会话可以设置标题了,而不再是千篇一律的*号。
- captcha配置一些关键页面的验证码。
- provider验证码提供商,支持:recaptcha_v2、recaptcha_enterprise、hcaptcha、turnstile、friendly_captcha。
- site_key验证码供应商后台获取的网站参数,是可以公布的信息。
- site_secret验证码供应商后台获取的秘密参数,不要公布出来。有些供应商也称作API Key。
- site_login是否在全站密码登录界面显示验证码,true或false。
- setup_login是否在设置入口登录界面显示验证码,true或false。
- oai_username是否输入用户名界面显示验证码,true或false。
- oai_password是否在输入登录密码界面显示验证码,true或false。
- whitelist邮箱数组指定哪些用户可以登录使用,用户名/密码登录受限制,各种Token登录受限。内置tokens不受限。
- whitelist为null则不限制,为空数组[]则限制所有账号,内置tokens不受限。
- 一个whitelist的例子:"whitelist": ["mail2@test.com", "mail2@test.com"]
XML/HTML代码
- {
- "test-1": {
- "token": "access token / session token / refresh token",
- "shared": true,
- "show_user_info": false
- },
- "test-2": {
- "token": "access token / session token / refresh token",
- "shared": true,
- "show_user_info": true,
- "plus": true
- },
- "test2": {
- "token": "access token / session token / refresh token / share token",
- "password": "12345"
- }
- }
XML/HTML代码
- token支持示例文件中所写的所有类型。session token和refresh token可自动刷新。
- 每个key被称为token key,可在登录框作用户名输入。如上:test-1、test-2等,随意更改。
- 如果设置了password则输入完token key进入输入密码页面输入匹配。
- 如果设置shared为true,则这个账号会出现在/shared.html中,登录页面会出现它的链接。
- 如果设置shared为true,则这个账号不能再在用户名登录框进行登录。
- /shared.html中的账号和共享站功能相同,可以自行设置隔离密码进行会话隔离。
- plus用来标识/shared.html上账号是否有金光,没有其他作用。
- show_user_info表示/shared.html共享时是否显示账号邮箱信息,GPTs建议开启。
浏览器打开:<Base URL>/setup,其中<Base URL>是你部署服务的地址。
然后打开 http://ip:8181 直接访问。
物理机部署 ChatGPT Next Web :
Docker部署命令:
XML/HTML代码
- docker run -d -p 3000:3000 \
- -e OPENAI_API_KEY="sk-xxxx" \
- -e CODE="页面访问密码" \
- --net=host \
- -e PROXY_URL="http://127.0.0.1:7890" \
- yidadaa/chatgpt-next-web
物理机部署命令:
XML/HTML代码
- bash <(curl -sL http://js.kengro.cn/onekey-cn-ChatGPT-Next-Web.sh)
一键安装ChatGPT,无需API秘钥、无需ChatGPT账户,即装即用
XML/HTML代码
- #拉取镜像(目前只支持X86)
- docker pull ramonvc/freegpt-webui
- #运行freegpt
- docker run -p 1338:1338 ramonvc/freegpt-webui
或者一键命令
XML/HTML代码
- docker run -it --name=freegpt -p 1338:1338 --restart=always ramonvc/freegpt-webui
访问地址:http://ip:1338
调用ChatGPT账户资源来自GPT4Free
go-proxy-bing 微软Bing AI
基于微软 New Bing 用 Vue3 和 Go 简单定制的微软 New Bing 演示站点,拥有一致的 UI 体验,支持 ChatGPT 提示词,国内可用,基本兼容微软 Bing AI 所有功能,无需登录即可畅聊。
环境变量:
XML/HTML代码
- # 运行端口 默认 8080 可选
- PORT=8080
- # Socks 环境变量 示例 可选
- Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
- # Socks 账号、密码 可选
- Go_Proxy_BingAI_SOCKS_USER=xxx
- Go_Proxy_BingAI_SOCKS_PWD=xxx
- # 默认用户 Cookie 设置,可选,不推荐使用,固定前缀 Go_Proxy_BingAI_USER_TOKEN 可设置多个,未登录用户将随机使用,多人共用将很快触发图形验证,并很快达到该账号的24小时限制
- Go_Proxy_BingAI_USER_TOKEN_1=xxx
- Go_Proxy_BingAI_USER_TOKEN_2=xxx
- Go_Proxy_BingAI_USER_TOKEN_3=xxx ...
- # 简单授权认证密码,可选
- Go_Proxy_BingAI_AUTH_KEY=xxx
部署:
需 https 域名 (自行配置 nginx 等) (前后端都有限制 只有在HTTPS的情况下,浏览器 Accept-Encoding 才会包含 br , localhost 除外),支持 Linux (amd64 / arm64)、Windows (amd64 / arm64),国内机器部署可配置 socks 环境变量。
docker 示例:
XML/HTML代码
- #快速Docker运行容器,监听8080 端口
- docker run -d -p 8080:8080 --name go-proxy-bingai --restart=always adams549659584/go-proxy-bingai
- #设置密码保护的Docker
- docker run -d -p 8080:8080 --name go-proxy-bingai -e Go_Proxy_BingAI_AUTH_KEY=password --restart=unless-stopped adams549659584/go-proxy-bingai
- # 配置 socks 环境变量
- docker run -e Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070 -e Go_Proxy_BingAI_SOCKS_USER=xxx -e Go_Proxy_BingAI_SOCKS_PWD=xxx -d -p 8080:8080 --name go-proxy-bingai --restart=unless-stopped adams549659584/go-proxy-bingai
其他参数详见上面环境变量,自行添加,国内服务器可以设置Socks代理,上面演示就是以clash等代理为例。
设置用户:
访问 https://www.bing.com/ 或 https://cn.bing.com/ ,登录,F12 或 Ctrl + Shift + I 打开控制台,拿到 Cookie 中 _U 的值 后,在网站设置 => 设置用户 中填入即可。
注意:必须使用https才可以打开,否则页面无法显示,可以使用 Nginx Proxy Manager 反代,或者直接 Nginx 反代。
chatbot-ui
XML/HTML代码
- docker run -e OPENAI_API_KEY=xxxxxxxx -p 3000:3000 ghcr.io/mckaywrigley/chatbot-ui:main
ais-ninja 是一个基于 chatgpt 的 Web 应用程序。它基于 ChatGpt-Web.
支持多用户收费,重构了后端代码,多语言支持,支持插件系统。
docker-compose
创建文件夹 ais_ninja 创建 docker-compose.yml 文件.
mkdir ais.ninja && cd ais.ninja
touch docker-compose.yml
复制 docker-compose.yml 到 docker-compose.yml 文件中
或者直接下载docker-compose.yml
wget https://github.com/jarvis2f/ais-ninja/blob/main/deploy/docker-compose.yml
修改 docker-compose.yml 中的环境变量
运行 docker-compose up -d 启动服务
运行 docker logs ais-ninja-app 查看日志。如果看到如下日志,则说明服务启动成功。首次启动会生成默认管理员帐户和密码。
后台地址:http://localhost:6789/admin
openai的api host地址
https://api.openai.com(官方地址,需要代理或者国外服务器)
https://tmp-openai-api.imak.top (openai代理,免代理,国内服务器可以直接使用)
更新:
由于ChatGPT Web内置的OPENAI API 代理失效,造成不能使用,故需要更换代理,教程如下:
使用除大陆和香港的代理可以登录OPENAI官网,比如台湾代理,注册openai账号,无需国外手机验证,获取openai的api key
没有国外手机验证看不到也无法申请api key,但是可以使用隐藏的api key ,浏览器按照以下操作获取api key
f12-网络-全部-{login}-响应-sensitive_id-sess-xxx
OPENAI API 代理:
https://openai.wndbac.cn/v1/chat/completions
https://api.openai-proxy.com/v1/chat/completions
自建代理:
https://tmp-openai-api.imak.top
https://ai.wan8.eu.org/v1/chat/completions
搭建ChatGpt-Web教程:
XML/HTML代码
- git clone https://github.com/Chanzhaoyu/chatgpt-web.git
- cd chatgpt-web/docker-compose/
- docker-compose up -d
XML/HTML代码
- API_REVERSE_PROXY OPENAI API 代理,可以使用上面的公共代理或者cf自建
- AUTH_SECRET_KEY 网页密码验证,防止别人使用
- OPENAI_API_KEY OPENAI APIKEY可以网页获取,无需电话验证
- OPENAI_ACCESS_TOKEN ACCESS_TOKEN网页获取
搭建OpenAI的API代理服务(未测试)
可以部署到docker和云函数的OpenAI API代理
NodeJS部署
你可以把 ./app.js 部署到所有支持 nodejs 14+ 的环境,比如云函数和边缘计算平台。
复制 app.js 和 package.json 到目录
yarn install 安装依赖
node app.js 启动服务
Docker 部署:
XML/HTML代码
- docker run -p 9000:9000 easychen/ai.level06.com:latest
XML/HTML代码
- PORT: 内部服务端口
- PROXY_KEY: 代理访问KEY,用于限制访问. (例如 ss111adad)
- TIMEOUT:请求超时时间,默认30000毫秒。(建议配置为 300000)
- TENCENT_CLOUD_SID:腾讯云secret_id (不在腾讯云不需要)
- TENCENT_CLOUD_SKEY:腾讯云secret_key (不在腾讯云不需要)
- TENCENT_CLOUD_AP:腾讯云区域(如:ap-singapore 新加坡) (不在腾讯云不需要)
接口使用方法:
将原来项目中 openai 的请求地址( 比如 https://api.openai.com )中的域名变更为本 proxy 的域名/IP(注意带上端口号)
如果设置了PROXY_KEY,在 openai 的 key 后加上 :<PROXY_KEY>,如果没有设置,则不需修改。(以冒号凭借)
moderation:true 开启审核,false 关闭审核
moderation_level:high 中断所有审核结果不为 Pass 的句子,low 只中断审核结果为 Block 的句子
说明:
只支持 GET 和 POST 方法的接口,不支持文件相关接口
当前不支持SSE,因此需要关掉 stream 相关的选项 已支持
客户端使用实例:
以 https://www.npmjs.com/package/chatgpt 为例
XML/HTML代码
- chatApi= new gpt.ChatGPTAPI({
- apiKey: 'sk.....:<proxy_key写这里>',
- apiBaseUrl: "http://localhost:9001/v1", // 替换代理域名/IP
- });
XML/HTML代码
- curl https://openai.example.com/v1/chat/completions \
- -H "Content-Type: application/json" \
- -H "Authorization: Bearer sk-key21312:aXmTOTELm0TnWPxdO7g" \
- -d '{
- "model": "gpt-3.5-turbo",
- "messages": [{"role": "user", "content": "Hello!"}]
- }'
sk-key21312 为Open AI的密钥
aXmTOTELm0TnWPxdO7g 为你自己部署代理的密钥
HTTPS
可以考虑使用Caddy 套SSL 加密访问。