chatgpt-next-web部署教程
本文最后更新于57 天前,如有错误请在评论区中留言。

macos

日志

2025-8-30
记录部署chatgpt-nextweb的过程

前言

在24年初博主第一次尝试部署了ChatGPTNextWeb这个项目,当时DeepSeek的网页端以及app还未发布,而博主对AI的需求又很大。恰好当时还可以白嫖的gpt免费的5刀api额度,这个项目可以使用vercel的方案部署,无需梯子使用~

DeepSeek问世后,其性能堪比ChatGPT。其实这个项目现在确实有点过时了,日常的AI使用需求完全可使用DeepSeek足矣(但是为什么问几句就卡了)。很快啊,恰好又赶上前段时间GPT5发布,其性能很能打,所以现在又跑回来重新部署这个项目,这样两个AI直接来回切换,DeepSeek卡了就换GPT使用。

关于AI模型的评测对比,点击传送

准备

  • 注册好的vercel账号
  • 注册好的github账号
  • 准备好openai api key
  • 部署好openlist或其他支持webdav功能的平台,用于云端存储(可选)
  • 域名(可选,使用vercel部署理论上甚至不需要服务器和域名)

部署

fork项目

根据官方文档,第一步需要fork该项目到本地仓库,项目地址:ChatGPTNextWeb

vercel部署

第二步使用vercel部署你刚刚fork到本地的项目,这一步参考官方教程:NextChat/docs/vercel-cn.md

开启自动更新

完成vercel部署后,需要在github开启自动更新,这样会自动拉取最新的代码,让你fork的项目与上游代码同步。具体自动更新操作步骤见官方连接:NextChat/README_CN.md

步骤大致如下:

由于 Github 的限制,需要手动去你 fork 后的项目的 Actions 页面启用 Workflows,并启用 Upstream Sync Action,启用之后即可开启每小时定时自动更新。

开启云端同步(可选)

配置到这里,已经可以基本使用大部分功能了,如果需要配置云端同步的话,需要部署好openlist或其他支持webdav功能的平台。

这里我以openlist为例,关于openlist的部署很简单,这里直接给出compose文件:

services:
  openlist:
    image: 'openlistteam/openlist:latest'
    container_name: openlist
    user: '0:0' 
    volumes:
      - '/root/opt/openlist:/opt/openlist/data' #自定义挂在路径,建议修改
    ports:
      - '127.0.0.1:50001:5244'  #自定义端口映射,自行修改
    environment:
      - UMASK=022
    restart: unless-stopped

继续配置云端同步功能,进入openlist后台用户页面,确保用户最少开启webdav读取webdav管理创建目录或上传这三个选项,如图:

image-20250830022838616

然后,挂载一个网盘或者本地存储,具体过程见openlist文档:快速开始 - OpenList 文档

注意

openlist的根目录不能用作webdav来使用,这一级目录没有改写的权限,只能用来挂载存储。

所以这里必须要提前挂载一个网盘或者本地存储,并将这个存储的目录,也就是一级目录作为ChatGPT-nextweb的webdav云端存储。

另外提一嘴,ChatGPT-nextweb的云端存方法是,在你的webdav路径下,创建一个名为chatgpt-next-web的文件夹来存储聊天记录。但是难绷的一点是,他的存储逻辑仅是简单拉取云端存储内容做同步。这样就会出现,你删除聊天记录后,点击同步,聊天记录又回来了的情况...

填写你的webdav信息到ChatGPT-nextweb的设置页面:

image-20250830030229694

这里webdav的地址格式为https://your openlist domain/dav/你的网盘路径,用户名密码与openlist相同。

还需要到vercel部署页面,添加环境变量WHITE_WEBDAV_ENDPOINTS,赋值为上述webdav地址,这样nextweb才能识别到你的webdav地址。

完成后,可以点击检测可用性,出现,说明可用,这样就完成了云端存储的配置。

补充

到目前,已经可以基本正常使用了。但是,测试发现,不能使用GPT-5GPT-5-mini等模型,因为这两个模型需要认证组织才能使用流式传输。而目前这个项目对这两个模型默认是走流式传输,所以导致这两个模型不可用。

下面给出解决方案

思路大致是,将这两个模型修改为走非流式传输,其余模型走流式传输,我使用ai实现了,具体方法入下:

打开fork到本地仓库的文件openai.ts,路径为app/client/platforms,打开后,修改其中几个部分。直接下载替换即可,点击下载,提取码dq9m

其中主要修改了这几个部分:

...const isGpt5 =  options.config.model.startsWith("gpt-5");之后

     //仅对 gpt-5 / gpt-5-mini 禁用流式;不波及 gpt-5-nano
     const needNoStream = /^gpt-5($|-mini\b)/.test(options.config.model);

...
... else if (isO1OrO3)之后

      //强制 gpt-5 / gpt-5-mini 走非流式:删除 stream 字段
      if (needNoStream) {
        delete (requestPayload as any).stream;
      }

... 
...

    //const shouldStream = !isDalle3 && !!options.config.stream;修改为
    const shouldStream = !isDalle3 && !!options.config.stream && !needNoStream;

...
注意

在使用过程中最好不要切换模型,否则会出bug,请一开始设定好模型使用。

如果您觉得本博客内容有所帮助,可以打赏一下吗~,此打赏将会用于博客维护运营,十分感谢!
作者:Clif
版权声明: 本博客所有文章除未特别声明外,均采用CC BY-NC-SA 4.0协议。转载请注明文章地址及作者!
暂无评论

发送评论(请正确填写邮箱地址,否则将会当成垃圾评论处理) 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇