【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署

这篇具有很好参考价值的文章主要介绍了【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近买了ChatGPT PLUS服务,想通过web服务将它共享给其他人使用,搜了一下目前GitHub上比较热门的服务有

  • ChatGPT-Next-Web
  • chatgpt-web-share

其中chatgpt-web-share支持API和PLUS账号分享两种方式,且架构为Python+JS+Docker,相对比较熟悉一些。而ChatGPT-Next-Web使用纯JS开发,且使用方式更为“傻瓜”,导致灵活性不足。所以我选择chatgpt-web-share。
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows

准备

运行环境

  • Windows11
    • WSL2
      • Docker
    • 小猫咪
    • 无线网卡DHCP(互联网)
    • 有线网卡10.8.15.50(公司内网)

版本

我这里使用chatgpt-web-share的最新版本0.4.0-alpha4.4

配置文件

最终的目录结构如下,需要先创建docker-compose.yml、data目录、config目录、config目录下的config.yaml、credentials.yaml,绿框中的是自动生成的目录及文件。
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows

# docker-compose.yml
services:
  chatgpt-web-share:
    image: ghcr.io/moeakwak/chatgpt-web-share:0.4.0-alpha4.4
    container_name: cws
    restart: always
    ports:
      - 8092:80  #端口可调整
    volumes:
      - ./data:/app/backend/data
    environment:
      - TZ=Asia/Shanghai
      - CWS_CONFIG_DIR=/app/backend/data/config
      - CHATGPT_BASE_URL=http://go-chatgpt-api:8080/chatgpt/
    depends_on:
      - mongo
      - go-chatgpt-api

  mongo:
    image: mongo:6.0
    restart: always
    volumes:
      - ./mongo_data:/data/db
    environment:
      MONGO_INITDB_DATABASE: cws
      MONGO_INITDB_ROOT_USERNAME: cws
      MONGO_INITDB_ROOT_PASSWORD: password

  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api:latest
    environment:
      - GIN_MODE=release
      - PROXY=http://10.30.48.245:7890 #宿主机IP端口
    restart: unless-stopped
# config.yaml
openai_web:
  is_plus_account: true
  chatgpt_base_url: http://go-chatgpt-api:8080/chatgpt/backend-api/
  proxy:
  common_timeout: 10
  ask_timeout: 600
openai_api:
  openai_base_url: https://api.openai.com/v1/
  proxy:
  connect_timeout: 10
  read_timeout: 20
common:
  print_sql: false
  create_initial_admin_user: true
  initial_admin_user_username: admin
  initial_admin_user_password: password
  sync_conversations_on_startup: true
  sync_conversations_regularly: false
http:
  host: 127.0.0.1
  port: 8000
  cors_allow_origins:
    - http://localhost
    - http://127.0.0.1
    - http://0.0.0.0
data:
  data_dir: ./data
  database_url: sqlite+aiosqlite:///data/database.db
  mongodb_url: mongodb://cws:password@mongo:27017
  run_migration: false
auth:
  jwt_secret: MODIFY_THIS_TO_RANDOM_SECRET
  jwt_lifetime_seconds: 86400
  cookie_max_age: 86400
  cookie_name: user_auth
  user_secret: MODIFY_THIS_TO_RANDOM_SECRET
stats:
  ask_stats_ttl: 7776000
  request_stats_ttl: 2592000
  request_stats_filter_keywords:
    - /status
log:
  console_log_level: INFO
# credentials.yaml
openai_web_access_token: "eyJhbGcxxxxxxxxxxx"
openai_api_key: "sk-POxxxxxxxx"

access_token获取链接:https://chat.openai.com/api/auth/session
api_key生成链接:https://platform.openai.com/account/api-keys
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows

ladder

众所周知的原因docker pull官方镜像源非常慢,需要加速,方式见我另一篇
除此之外,容器内也需要ladder,可以通过修改docker-compose.yml文件,使go-chatgpt-api服务使用宿主机的代理

...
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api:latest
    environment:
      - GIN_MODE=release
      - PROXY=http://10.30.48.245:7890 #宿主机IP端口
    restart: unless-stopped

部署

docker compose up -d

部署成功后可以看到日志如下:
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
浏览器打开127.0.0.1:8092、0.0.0.0:8092、172.23.192.1:8092就能看到登录页面,账号密码为配置文件中的admin和password

外部访问

上面正常就说明基本完成部署了,但如果想让其他用户从外部访问就需要进行端口映射,因为你通过本机ip:8092会发现无法打开,需要进行端口映射。

不建议使用如下方式

【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
之后一路下一页就行了。
再用管理员权限打开powershell

netsh interface portproxy add v4tov4 listenport=8092 listenaddress=0.0.0.0 connectport=8092 connectaddress=localhost 

通过以上命令,就将0.0.0.0:8092映射给了localhost:8092,所以如果电脑有多块网卡,则通过任一网卡ip:8092就能访问到localhost:8092了,所以就实现外部访问了。具体可以参考:https://zhuanlan.zhihu.com/p/425312804

20230801更新

通过上述方式出现:重启后,8092端口无法访问,需要通过如下命令删除映射

>>> netsh interface portproxy delete v4tov4 listenport=8092 listenaddress=0.0.0.0

更建议使用wsl2-auto-portproxy
在/mnt/c/Users/microfat 目录下创建.wslpp目录,在.wslpp目录下创建config.json

{
  "onlyPredefined": true,
  "predefined": {
    "tcp": [
      "8092:8092"
    ]
  },
  "ignore": {
    "tcp": [
      445
    ]
  }
}

【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows

注意:如果ladder怎么也进不去wsl2,则可以试试打开小猫咪的TUN Mode
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署,chatgpt,docker,容器,wsl,windows
如果出现上面的错误,尝试重启一下服务

>>> docker compose down --rmi local
>>> docker compose up -d

优化

现在能够做到重启机器后,服务自动启动。但前提是无线网卡的IP地址不发生变化,因为代理地址被写死到/etc/systemd/system/docker.service.d/proxy.conf、/etc/default/docker和docker-compose.yml中,如果IP地址发生变化就需要更新文件并重启docker以及重新构建镜像。为了减少这部分工作,可以考虑在wsl启动时自动更新那两个文件。
首先要解决的问题是wsl中获取宿主电脑的ip地址

>>> NEW_IP=$(powershell.exe -Command 'Get-NetIPAddress -InterfaceAlias WLAN | Where-Object { $_.AddressFamily -match "IPv4" } | Select-Object -ExpandProperty IPAddress' | tr -d '\r')
>>> echo $NEW_IP
10.30.48.222

随后可以通过sed命令修改上述文件

sudo sed -i -E "s/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/${NEW_IP}/g" /etc/default/docker

将修改命令添加到/etc/wsl.conf中,就可以以实现在启动docker前配置文件修改完成,注意:不要放在.bashrc中,因为bashrc的执行在/etc/wsl.conf后。

未完待续…文章来源地址https://www.toymoban.com/news/detail-621950.html

到了这里,关于【ChatGPT】基于WSL+Docker的ChatGPT PLUS共享服务部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT-PLUS:基于多平台大语言模型的 AI 助手全套开源解决方案

    ChatGPT-PLUS是一个基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,集成了多个平台的大语言模型,包括 OpenAI、Azure、ChatGLM、讯飞星火、文心一言等。该项目采用 Go + Vue3 + element-plus 实现,提供完整的开源系统,支持各种预训练角色应用、绘画功能集成、支付功能、插件 API 功能等特性。详细功能截图和体验地址可在文章中找到。

    2024年02月03日
    浏览(42)
  • 使用docker 部署自己的chatgpt

    ChatGPT 的应用场景非常广泛,以下是一些常见的应用场景: 客户服务和支持 :ChatGPT 可以用于提供即时的客户服务和支持,回答常见问题、解决问题和提供指导。它可以与用户进行对话,并提供有关产品、服务和政策的信息。 虚拟助手 :ChatGPT 可以作为虚拟助手,帮助用户执

    2024年02月16日
    浏览(27)
  • 基于Docker的深度学习环境NVIDIA和CUDA部署以及WSL和linux镜像问题

    docker的介绍网上有很多,对于深度学习的认来讲,docker的好处就是直接把环境分享给他人,他人不需要再配置环境了。 比如我有一个目标检测的项目,我想分享给朋友,那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN,在拿到我的项目后,还需要安装各种依赖库,

    2024年02月05日
    浏览(33)
  • 【Docker教程(二)】Docker安装和chatgpt私有化部署

    1. Docker基本介绍 2. Docker和Docker Compose安装 3. Docker启动容器 4. chatgpt私有化部署 5. docker-compose.yml文件模板 6. 结合tg的chatgpt私有化部署 1. Docker基本介绍 Docker 是一款开源的容器化引擎,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何 Linux、Windows 或

    2024年02月07日
    浏览(39)
  • Win Docker Desktop + WSL2 部署PyTorch-CUDA服务至k8s算力集群

    首先根据你的操作系统版本 安装WSL ,记得切换WSL2,其次 安装Docker Desktop,如果Docker安装后一直无法加载WSL,卸载后重新安装时不要勾选WSL,安装后去设置里面勾上WSL即可。 Windows中运行以上代码,WSL中安装Ubuntu是为了方便在docker容器中挂载数据。 去WSL-Ubuntu系统中运行以上命

    2024年01月21日
    浏览(39)
  • 【Docker】快速部署 ChatGPT Next Web,一键免费部署你的私人 ChatGPT 网页应用,支持 GPT3, GPT4 & Gemini Pro 模型。

    ChatGPT Next Web 可以一键免费部署你的私人 ChatGPT 网页应用,支持 GPT3, GPT4 Gemini Pro 模型。你无需任何复杂的配置,只需几行命令就可以完成部署。我们将通过 Docker 来部署这个应用。 下载 Docker 镜像 首先,我们需要从 Docker Hub 下载 ChatGPT 应用的 Docker 镜像。 Docker 版本需要在

    2024年03月10日
    浏览(50)
  • Docker系列 基于OpenAI API自建ChatGPT

    转自我的博客文章https://blognas.hwb0307.com/linux/docker/4201,内容更新仅在个人博客可见。欢迎关注! 我用帐号/密码使用chatGPT已经有一段时间。但是,我有几个私交较密的朋友,他们并不具备使用chatGPT的条件;但又想体验一下这个神奇的工具。因此,最近我专门去了解自建ChatG

    2024年02月07日
    浏览(34)
  • 自建类ChatGPT服务:本地化部署与远程访问教程

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月14日
    浏览(30)
  • ChatGPT API调用+服务器部署【附Git地址】

    运行对话效果图 Git地址: https://gitee.com/cotmier/chat.git 需要海外服务器一台 安装Java环境: yum install -y java-1.8.0-openjdk.x86_64 启动项目: java -jar chat.jar 这是一个最简单的openai调用案例

    2024年02月12日
    浏览(31)
  • 免费1年服务器,部署个ChatGPT专属网页版!

    白皮袄个免费1年服务器,部署个ChatGPT专属网页版! 无需梯子国内镜像版:https://chat.shandianfk.com/?rec_user_key=VFZkRmVGNU5EVTVNR1UyWTJRNE9UWXdNalZrTnpkaVlqWTJaRGN5T0RrMk5XRXpOR1U9  api.openai.com port 443: Connection timed out 你是不在调用 ChatGPT 接口的时候报错 443 了,哈哈哈,我的也是。当小傅哥发现

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包