NextChat原名ChatGPT Next Web,是Github上非常火爆的开源项目,趁着空闲时间,小七写一篇文章介绍个人如何零成本搭载NextChat以及自由资源私有化部署NextChat。

功能简介
NextChat是一个跨平台的ChatGPT/Gemini用户界面,支持Web、PWA、Linux、Windowns、MacOS部署,轻轻松松一键拥有你自己的跨平台
- ChatGPT/Gemin。主要的功能特性如下:
- 支持在 1 分钟内使用 Vercel 免费一键部署
- 提供体积极小(~5MB)的跨平台客户端(Linux/Windows/MacOS)
- 完整的 Markdown 支持:LaTex 公式、Mermaid 流程图、代码高亮等等
- 精心设计的 UI,响应式设计,支持深色模式,支持 PWA
- 极快的首屏加载速度(~100kb),支持流式响应
- 隐私安全,所有数据保存在用户浏览器本地
- 预制角色功能(面具),方便地创建、分享和调试你的个性化对话
- 海量的内置 prompt 列表,来自中文和英文
- 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话
- 多国语言,支持English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt,Русский, Čeština, 한국어, Indonesia
安装NextChat
NextChat支持众多平台,桌面端(包括Linux、Windowns、MacOS)可以直接下载安装包安装即可,对于移动端用户,建议在NAS或常开机的设备上部署Web版,并使用PWA应用(将网页模拟成客户端,体验接近客户端)。
准备工作
- 拥有 Open API key。如果没有官网的,可以使用小七的API中转站,价格更便宜(注册即送0.2美金的全模型测试服务)
- Github账号一个(白嫖服务必备,可用于登录Vercel)
- 域名(可选,可有可无,用于Vercel的话不备案的域名也可以;如果自身有服务器且是国内服务器的话,需要备案)
- 服务器或者 NAS
- docker
Vercel 一键部署
1、在 github 界面点击 Fork NextChat 项目

2、打开 vecel,点击 Add New – Project

3、导入 NextChat 的 github 项目
记得在环境变量页填入 API Key 和页面访问密码 CODE;
类似这个样子,自行填写即可。

4、解析到自己的域名(可选)
目前 Vercel 分配的域名 DNS 在某些区域被污染了,绑定自定义域名即可直连。

Docker-compose 部署 NextChat
防火墙放行端口
ufw allow 3219/tcp
创建工作目录
work=/docker/nextchat && mkdir -p $work && cd $work
创建 docker-compose.yml 文件
version: '3'
services:
chatgpt-next-web:
container_name: nextchat
image: yidadaa/chatgpt-next-web:latest
restart: always
ports:
- "3219:3000"
environment:
- OPENAI_API_KEY=sk-xxx #你的api key
- CODE=777777 #密码
- BASE_URL=https://chat-api.xzbzq.com/ #第三方代理地址
- DEFAULT_MODEL=gpt-4o-mini #默认模型
- ENABLE_BALANCE_QUERY=1 #启用余额查询
参数说明
- 3000:3000,Web访问,端口冒号左边的端口可以其他的,看你自己喜好
- OPENAI_API_KEY,必填项,大模型的key,这个变量有两层含义,如果你直链OPENAI则就是OPENAI的KEY。如果你通过OneAPI代理则表示OneAPI上的KEY
- CODE,选填项,Web版的登录密码,支持多个,用逗号分开。建议一定要设置,而且要设置负责点,否则容易被别人刷
- BASE_URL: 选填项,模型代理地址,注意不是科学代理的意思,而是指那些代理各大模型的第三方,比如我们说的OneAPI也算,如果你使用OneAPI,就填OneAPI的地址
- PROXY_URL: 选填项,这个才是科学代理地址,例如
http://127.0.0.1:7890 user password
,其中user和password是代理的用户名和密码,没有的话就不写即可 - DEFAULT_MODEL,选填项,默认的模型,还是看你是直连还是通过OneAPI,用谁就选谁的模型名称
- HIDE_USER_API_KEY,选填项,是否允许用户自己设置KEY,不允许就设置1,否则设置0
- ENABLE_BALANCE_QUERY,选填项,是否启用余额查询功能,启用就设置1,否则设置0
- DISABLE_FAST_LINK, 选填项,如果你想禁用从链接解析预制设置,将此环境变量设置为 1 即可
- CUSTOM_MODELS, 选填项,用来控制用户可选的模型列表,其格式有要求,下面详细介绍
其他更多参数(包括使用非OPENAI和OneAPI时的参数设置)可相见这个网页查看:
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md
上线服务
docker-compose up -d
使用 ip + 端口即可访问了。
如果你按照我的配置文件搭建的 nextchat,那么会提示你需要使用密码访问。输入你配置文件中的 CODE 即可
本地化应用
PC桌面端可以参考:
Release v2.15.6 XAI support · ChatGPTNextWeb/ChatGPT-Next-Web (github.com)
另外就是移动端可以使用Web版的PWA应用,可能有人不大理解,这里简单说一下。同样是在手机浏览器(使用手机自带的浏览器,比如iPhone就用Safari)打开Web网站,然后将网站发送到桌面,在桌面上就会出现一个App图标,它就是PWA应用,虽然不是原生App,但是体验要比直接在网页上使用要好得多。

使用 Next Chat 的小提示
什么是面具?它和提示词的区别是什么?
面具 = 多个预设提示词 + 模型设置 + 对话设置。
其中预设提示词(Contextual Prompts)一般用于 In-Context Learning,用于让 ChatGPT 生成更加符合要求的输出,也可以增加系统约束或者输入有限的额外知识。
模型设置则顾名思义,使用此面具创建的对话都会默认使用对应的模型参数。
什么是历史摘要?
历史摘要功能,也是历史消息压缩功能,是保证长对话场景下保持历史记忆的关键,合理使用该功能可以在不丢失历史话题信息的情况下,节省所使用的 token。
由于 ChatGPT API 的长度限制,我们以 3.5 模型为例,它只能接受小于 4096 tokens 的对话消息,一旦超出这个数值,就会报错。
同时为了让 ChatGPT 理解我们对话的上下文,往往会携带多条历史消息来提供上下文信息,而当对话进行一段时间之后,很容易就会触发长度限制。
为了解决此问题,我们增加了历史记录压缩功能,假设阈值为 1000 字符,那么每次用户产生的聊天记录超过 1000 字符时,都会将没有被总结过的消息,发送给 ChatGPT,让其产生一个 100 字所有的摘要。
这样,历史信息就从 1000 字压缩到了 100 字,这是一种有损压缩,但已能满足大多数使用场景。
什么时候应该关闭历史摘要?
历史摘要可能会影响 ChatGPT 的对话质量,所以如果对话场景是翻译、信息提取等一次性对话场景,请直接关闭历史摘要功能,并将历史消息数设置为 0。
如果你想节省 token,请调节历史消息数。

当用户发送一条消息时,有哪些信息被发送出去了?
当用户在对话框输入了一条消息后,发送给 ChatGPT 的消息,包含以下几个部分:
- 系统级提示词:用于尽可能贴近 ChatGPT 官方 WebUI 的使用体验,可在设置中关闭此信息;
- 历史摘要:作为长期记忆,提供长久但模糊的上下文信息;
- 预设提示词:当前对话内设置的预设提示词,用于 In-Context Learning 或者注入系统级限制;
- 最近 n 条对话记录:作为短期记忆,提供短暂但精确的上下文信息;
- 用户当前输入的消息。
问题
Q:如果不是国外的服务器,请在 docker 部署的时候添加代理
添加环境变量 - PROXY_URL=http://127.0.0.1:7890
Q:使用时提示 “现在是未授权状态,请在设置页输入访问密码”?
项目通过环境变量 CODE 设置了访问密码。第一次使用时,需要到设置中,输入访问码才可以使用。
Q:最好不要使用备案域名
Q : 什么是代理,如何使用?
由于 OpenAI 的 IP 限制,中国和其他一些国家 / 地区无法直接连接 OpenAI API,需要通过代理。你可以使用代理服务器(正向代理),或者已经设置好的 OpenAI API 反向代理。
- 正向代理例子:科学上网梯子。docker 部署的情况下,设置环境变量 HTTP_PROXY 为你的代理地址(例如:10.10.10.10:8002)。
- 反向代理例子:可以用别人搭建的代理地址,或者通过 Cloudflare 免费设置。设置项目环境变量 BASE_URL 为你的代理地址。
Q : 国内服务器可以部署吗?
可以但需要解决的问题:
- 需要代理才能连接 github 和 openAI 等网站;
- 国内服务器要设置域名解析的话需要备案;
- 国内政策限制代理访问外网 / ChatGPT 相关应用,可能被封。
参考资料
Nextchat:nextchat 的官网
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web:nextchat github 地址
纯七AI API中转站 : 小七自营 API 中转测试站