记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Docker快速部署一个简单的网页版ChatGPT

Docker快速部署一个简单的网页版ChatGPT
1.注册openai账号
需要可以访问openai的代理ip,和一个可以接收短信的接码平台,比如 https://5sim.net/zh  https://sms-activate.org(收费)
https://openai.com/
2、获取accessToken
直接访问以下网址可以获取accessToken
https://chat.openai.com/api/auth/session
或者安装ChatGPT Auth Helper插件访问下面网址直接获取
https://ai.fakeopen.com/auth
3、部署ChatGPT Web直接使用
Github:https://github.com/Chanzhaoyu/chatgpt-web
Dockerhub:https://hub.docker.com/r/chenzhaoyu94/chatgpt-web
在服务器建立docker-compose.yml,输入以下内容
XML/HTML代码
  1. version: '3'
  2.   
  3. services:
  4.   app:
  5.     container_name: chatgpt-web
  6.     image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
  7.     ports:
  8.       - 3002:3002
  9.     environment:
  10.       # 二选一
  11.       OPENAI_API_KEY:
  12.       # 二选一
  13.       OPENAI_ACCESS_TOKEN:
  14.       # API接口地址,可选,设置 OPENAI_API_KEY 时可用
  15.       OPENAI_API_BASE_URL:
  16.       # API模型,可选,设置 OPENAI_API_KEY 时可用
  17.       OPENAI_API_MODEL:
  18.       # 反向代理,可选
  19.       API_REVERSE_PROXY:
  20.       # 访问权限密钥,可选
  21.       AUTH_SECRET_KEY:
  22.       # 每小时最大请求次数,可选,默认无限
  23.       MAX_REQUEST_PER_HOUR: 0
  24.       # 超时,单位毫秒,可选
  25.       TIMEOUT_MS: 60000
  26.       # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
  27.       SOCKS_PROXY_HOST:
  28.       # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
  29.       SOCKS_PROXY_PORT:
OPENAI_ACCESS_TOKEN: 填入获取的 accessToken  AUTH_SECRET_KEY:可以设置一个密码,防止外人访问。
启动容器: 
XML/HTML代码
  1. docker-compose up -d
也可以使用命令直接启动
XML/HTML代码
  1. docker run -it \
  2. --name=chatgpt-web \
  3. -e OPENAI_ACCESS_TOKEN= \
  4. -e AUTH_SECRET_KEY=admin \
  5. -p 3002:3002 \
  6. --restart unless-stopped \
  7. chenzhaoyu94/chatgpt-web
然后打开浏览器:http://ip:3002 即可使用。
其他的也有很多docker可以快速搭建功能更强大的ChatGPT个人网站,方便访问。使用accessToken可以不受官方IP限制,在任意服务器任意地方使用,免费,不需要考虑代理问题,和官方网页效果一样,使用api的话需要代理,容易被封,accessToken一般有效期十几天,到期修改就可以。
其他的搭建反代什么的可以参考网站,很多资料,个人自用就无所谓了。
 
PandoraNext,Pandora的升级版
GitHub:https://github.com/pandora-next/deploy
Dockerhub:https://hub.docker.com/r/pengzhile/pandora-next
XML/HTML代码
  1. git clone https://github.com/pandora-next/deploy.git /opt/pandora
  2.   
  3. docker run -d --restart always --name PandoraNext --net=bridge \
  4.     -p 8181:8181 \
  5.     -v /opt/pandora/data:/data \
  6.     -v /opt/pandora/sessions:/root/.cache/PandoraNext \
  7.     pengzhile/pandora-next
license_id获取:https://dash.pandoranext.com
复制License Id:后的内容,填写在config.json的license_id字段,然后启动PandoraNext,否则无法启动。
config.json配置说明:
XML/HTML代码
  1. {  
  2.   "bind": "127.0.0.1:8181",  
  3.   "tls": {  
  4.     "enabled": false,  
  5.     "cert_file": "",  
  6.     "key_file": ""  
  7.   },  
  8.   "timeout": 600,  
  9.   "proxy_url": "",  
  10.   "license_id": "",  
  11.   "public_share": false,  
  12.   "site_password": "",  
  13.   "setup_password": "",  
  14.   "server_tokens": true,  
  15.   "proxy_api_prefix": "",  
  16.   "isolated_conv_title": "*",  
  17.   "captcha": {  
  18.     "provider": "",  
  19.     "site_key": "",  
  20.     "site_secret": "",  
  21.     "site_login": false,  
  22.     "setup_login": false,  
  23.     "oai_username": false,  
  24.     "oai_password": false  
  25.   },  
  26.   "whitelist": null  
  27. }  
参数说明:
XML/HTML代码
  1. bind指定绑定IP和端口,在docker内,IP只能用0.0.0.0,否则映射不出来。  
  2. 如果你不打算套nginx等反代,bind参数的IP请使用0.0.0.0!!!  
  3. tls配置PandoraNext直接以https启动。  
  4. enabled 是否启用,true或false。启用时必须配置证书和密钥文件路径。  
  5. cert_file 证书文件路径。  
  6. key_file 密钥文件路径。  
  7. timeout是请求的超时时间,单位为秒。  
  8. proxy_url指定部署服务流量走代理,如:http://127.0.0.1:8888、socks5://127.0.0.1:7980  
  9. license_id指定你的License Id,可以在这里获取。  
  10. public_share对于GPT中创建的对话分享,是否需要登录才能查看。为true则无需登录即可查看。  
  11. site_password设置整站密码,需要先输入这个密码,正确才能进行后续步骤。充分保障私密性。  
  12. setup_password定义一个设置密码,用于调用/setup/开头的设置接口,为空则不可调用。  
  13. server_tokens设置是否在响应头中显示版本号,true显示,false则不显示。  
  14. proxy_api_prefix可以给你的proxy模式接口地址添加前缀,让人意想不到。注意设置的字符应该是url中允许的字符。包括:a-z A-Z 0-9 - _ . ~  
  15. proxy_api_prefix 你必须设置一个不少于8位,且同时包含数字和字母的前缀才能开启proxy模式!  
  16. /backend-api/conversation proxy模式比例 1:4  
  17. /v1/chat/completions 3.5模型比例 1:4  
  18. /v1/chat/completions 4模型比例 1:10, 无需打码  
  19. /api/auth/login 登录接口比例 1:100,无需打码  
  20. isolated_conv_title现在隔离会话可以设置标题了,而不再是千篇一律的*号。  
  21. captcha配置一些关键页面的验证码。  
  22. provider验证码提供商,支持:recaptcha_v2、recaptcha_enterprise、hcaptcha、turnstile、friendly_captcha。  
  23. site_key验证码供应商后台获取的网站参数,是可以公布的信息。  
  24. site_secret验证码供应商后台获取的秘密参数,不要公布出来。有些供应商也称作API Key。  
  25. site_login是否在全站密码登录界面显示验证码,true或false。  
  26. setup_login是否在设置入口登录界面显示验证码,true或false。  
  27. oai_username是否输入用户名界面显示验证码,true或false。  
  28. oai_password是否在输入登录密码界面显示验证码,true或false。  
  29. whitelist邮箱数组指定哪些用户可以登录使用,用户名/密码登录受限制,各种Token登录受限。内置tokens不受限。  
  30. whitelist为null则不限制,为空数组[]则限制所有账号,内置tokens不受限。  
  31. 一个whitelist的例子:"whitelist": ["mail2@test.com", "mail2@test.com"]  
tokens 配置
XML/HTML代码
  1. {  
  2.   "test-1": {  
  3.     "token": "access token / session token / refresh token",  
  4.     "shared": true,  
  5.     "show_user_info": false  
  6.   },  
  7.   "test-2": {  
  8.     "token": "access token / session token / refresh token",  
  9.     "shared": true,  
  10.     "show_user_info": true,  
  11.     "plus": true  
  12.   },  
  13.   "test2": {  
  14.     "token": "access token / session token / refresh token / share token",  
  15.     "password": "12345"  
  16.   }  
  17. }  
配置说明:
XML/HTML代码
  1. token支持示例文件中所写的所有类型。session token和refresh token可自动刷新。  
  2. 每个key被称为token key,可在登录框作用户名输入。如上:test-1、test-2等,随意更改。  
  3. 如果设置了password则输入完token key进入输入密码页面输入匹配。  
  4. 如果设置shared为true,则这个账号会出现在/shared.html中,登录页面会出现它的链接。  
  5. 如果设置shared为true,则这个账号不能再在用户名登录框进行登录。  
  6. /shared.html中的账号和共享站功能相同,可以自行设置隔离密码进行会话隔离。  
  7. plus用来标识/shared.html上账号是否有金光,没有其他作用。  
  8. show_user_info表示/shared.html共享时是否显示账号邮箱信息,GPTs建议开启。  
设置界面 必须先在config.json中设置setup_password为非空! 
浏览器打开:<Base URL>/setup,其中<Base URL>是你部署服务的地址。
然后打开 http://ip:8181 直接访问。
物理机部署 ChatGPT Next Web :
GitHub:https://github.com/Yidadaa/ChatGPT-Next-Web
GitHub教程 快速部署教程
Docker部署命令:
XML/HTML代码
  1. docker run -d -p 3000:3000 \
  2.    -e OPENAI_API_KEY="sk-xxxx" \
  3.    -e CODE="页面访问密码" \
  4.    --net=host \
  5.    -e PROXY_URL="http://127.0.0.1:7890" \
  6.    yidadaa/chatgpt-next-web
不需要代理可以将倒数第二行的 PROXY_URL 这行全部删掉。api可以在官方申请。
物理机部署命令:
XML/HTML代码
  1. bash <(curl -sL http://js.kengro.cn/onekey-cn-ChatGPT-Next-Web.sh)
按照说明直接部署物理机或者容器都可以。
一键安装ChatGPT,无需API秘钥、无需ChatGPT账户,即装即用
XML/HTML代码
  1. #拉取镜像(目前只支持X86) 
  2. docker pull ramonvc/freegpt-webui
  3. #运行freegpt
  4. docker run -p 1338:1338 ramonvc/freegpt-webui
或者一键命令
XML/HTML代码
  1. 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代码
  1. # 运行端口 默认 8080 可选
  2. PORT=8080
  3. # Socks 环境变量 示例 可选
  4. Go_Proxy_BingAI_SOCKS_URL=192.168.0.88:1070
  5. # Socks 账号、密码 可选
  6. Go_Proxy_BingAI_SOCKS_USER=xxx
  7. Go_Proxy_BingAI_SOCKS_PWD=xxx
  8. # 默认用户 Cookie 设置,可选,不推荐使用,固定前缀 Go_Proxy_BingAI_USER_TOKEN 可设置多个,未登录用户将随机使用,多人共用将很快触发图形验证,并很快达到该账号的24小时限制
  9. Go_Proxy_BingAI_USER_TOKEN_1=xxx
  10. Go_Proxy_BingAI_USER_TOKEN_2=xxx
  11. Go_Proxy_BingAI_USER_TOKEN_3=xxx ...
  12. # 简单授权认证密码,可选
  13. Go_Proxy_BingAI_AUTH_KEY=xxx
部署:
需 https 域名 (自行配置 nginx 等) (前后端都有限制 只有在HTTPS的情况下,浏览器 Accept-Encoding 才会包含 br , localhost 除外),支持 Linux (amd64 / arm64)、Windows (amd64 / arm64),国内机器部署可配置 socks 环境变量。
docker 示例:
XML/HTML代码
  1. #快速Docker运行容器,监听8080 端口
  2. docker run -d -p 8080:8080 --name go-proxy-bingai --restart=always adams549659584/go-proxy-bingai
  3. #设置密码保护的Docker
  4. docker run -d -p 8080:8080 --name go-proxy-bingai -e Go_Proxy_BingAI_AUTH_KEY=password --restart=unless-stopped adams549659584/go-proxy-bingai
  5. # 配置 socks 环境变量
  6. 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
https://github.com/mckaywrigley/chatbot-ui
XML/HTML代码
  1. docker run -e OPENAI_API_KEY=xxxxxxxx -p 3000:3000 ghcr.io/mckaywrigley/chatbot-ui:main
使用官方API对接,没有网页密码保护,一键命令搞定,国内服务器可用。
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代码
  1. git clone https://github.com/Chanzhaoyu/chatgpt-web.git
  2. cd chatgpt-web/docker-compose/
  3. docker-compose up -d
XML/HTML代码
  1. API_REVERSE_PROXY         OPENAI API 代理,可以使用上面的公共代理或者cf自建
  2. AUTH_SECRET_KEY           网页密码验证,防止别人使用
  3. OPENAI_API_KEY            OPENAI APIKEY可以网页获取,无需电话验证
  4. OPENAI_ACCESS_TOKEN       ACCESS_TOKEN网页获取
在docker-compose up -d之前,可以修改docker-compose.yml,填写上面必要信息,如果自用,不需要反代或者用其他反代程序,也可以删除后面nginx部分信息。如果使用量比较大,需要多个api key轮换使用,也可以使用ChatGPT-Next-Web或者其他程序搭建。
搭建OpenAI的API代理服务(未测试)
可以部署到docker和云函数的OpenAI API代理
NodeJS部署
你可以把 ./app.js 部署到所有支持 nodejs 14+ 的环境,比如云函数和边缘计算平台。
复制 app.js 和 package.json 到目录
yarn install 安装依赖
node app.js 启动服务
Docker 部署:
XML/HTML代码
  1. docker run -p 9000:9000 easychen/ai.level06.com:latest
Docker 可用环境变量:
XML/HTML代码
  1. PORT: 内部服务端口
  2. PROXY_KEY: 代理访问KEY,用于限制访问. (例如 ss111adad)
  3. TIMEOUT:请求超时时间,默认30000毫秒。(建议配置为 300000)
  4.  
  5. TENCENT_CLOUD_SID:腾讯云secret_id  (不在腾讯云不需要)
  6. TENCENT_CLOUD_SKEY:腾讯云secret_key (不在腾讯云不需要)
  7. 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代码
  1. chatApinew gpt.ChatGPTAPI({
  2.     apiKey: 'sk.....:<proxy_key写这里>',
  3.     apiBaseUrl: "http://localhost:9001/v1", // 替换代理域名/IP
  4. });
curl 示例:
XML/HTML代码
  1. curl https://openai.example.com/v1/chat/completions \
  2.   -H "Content-Type: application/json" \
  3.   -H "Authorization: Bearer sk-key21312:aXmTOTELm0TnWPxdO7g" \
  4.   -d '{
  5.     "model": "gpt-3.5-turbo",
  6.     "messages": [{"role": "user", "content": "Hello!"}]
  7.   }'
sk-key21312 为Open AI的密钥
aXmTOTELm0TnWPxdO7g 为你自己部署代理的密钥
HTTPS
可以考虑使用Caddy 套SSL 加密访问。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):