前言
之前我们教学了大家怎么在旧电脑上安装飞牛 fnOS,让旧设备焕发新生成为 NAS 数据中心。这次我们来点实用的——通过 Docker 部署一个属于自己的 AI 对话助手 ChatGPT Next Web(NextChat)。
NextChat 是一款轻量、快速的 AI 聊天应用,支持 GPT-4、Claude、DeepSeek、Gemini Pro 等主流大模型,界面优雅、响应迅速,客户端体积仅约 5MB。它具备以下亮点:
- 隐私优先,所有数据存储在浏览器本地
- 支持 Markdown:LaTex、mermaid、代码高亮
- 响应式设计,支持深色模式和 PWA
- 首屏加载快(约 100kb),支持流式响应
- 支持多模型切换、面具(Mask)模板、Artifacts、插件等
- 支持 MCP(Model Context Protocol)
本文以 Docker 部署为主线,通用命令行方式适用于任何安装了 Docker 的环境(Linux 服务器、NAS 等),同时在「1.1 在飞牛 OS 上部署」小节中补充了飞牛 NAS 特有的图形界面操作。部署在 24 小时运行的设备上后,你可以在局域网内任意设备随时访问自己的 AI 助手。
一、命令行 Docker 部署
0. 准备工作
获取 API Key
NextChat 支持多种 AI 模型,至少准备一个 API Key:
| 模型提供商 | 获取地址 |
|---|---|
| OpenAI | https://platform.openai.com/api-keys |
| DeepSeek | https://platform.deepseek.com |
| 智谱 GLM | https://open.bigmodel.cn |
| Google Gemini | https://aistudio.google.com |
| Anthropic Claude | https://console.anthropic.com |
以 OpenAI 为例,登录后创建一个 API Key,格式形如 sk-xxxxxxxxxxxxxxxx,妥善保存。
系统要求
- Docker >= 20
- 放行 3000 端口(或你自定义的端口)
1.1 在飞牛 OS 上部署
如果你的部署环境是飞牛 NAS,可以直接使用系统自带的 Docker 功能,无需额外安装。
如果你还没安装飞牛系统,可以参考我之前的《旧电脑安装 fnOS(飞牛),让旧电脑焕发新生》教程。
1.1.1 通过飞牛图形界面部署(推荐新手)
飞牛 fnOS 的 Docker 管理界面操作直观,适合不熟悉命令行的同学。
第一步:拉取镜像
- 打开飞牛 Docker 管理界面,切换到「镜像」/「镜像仓库」栏目
- 在搜索框输入
yidadaa/chatgpt-next-web - 在搜索结果中选择该镜像,点击「下载」
- 选择最新版本(
latest或最新 tag),等待下载完成 - 下载完成后,镜像会显示在「本地镜像」列表中
第二步:创建容器
- 在「本地镜像」中找到刚下载的
yidadaa/chatgpt-next-web镜像 - 点击「运行」/「创建容器」
- 按以下参数配置:
基础设置:
| 配置项 | 建议值 |
|---|---|
| 容器名称 | nextchat |
| 重启策略 | always(开机自启) |
端口映射:
| 主机端口 | 容器端口 |
|---|---|
| 3000 | 3000 |
如果 3000 端口被占用,可以换一个,比如
3001:3000。
环境变量:
| 变量名 | 值 | 说明 |
|---|---|---|
OPENAI_API_KEY |
sk-你的API Key |
必填,AI 模型的 API Key |
CODE |
你的访问密码 |
可选但建议设置,防止被他人滥用 |
BASE_URL |
https://api.openai.com |
可选,使用第三方中转/代理时填写 |
存储卷(可选):
如果需要持久化数据,可映射一个目录:
| 主机路径 | 容器路径 |
|---|---|
/vol1/1000/nextchat/data |
/app/data |
- 确认配置无误后,点击「创建」/「确定」
- 等待容器启动,状态变为「运行中」即表示部署成功
如果你想使用飞牛 Docker 界面 Compose 功能,你也可以直接使用下方 1.2 节的
docker-compose.yml进行部署。
1.2 使用 docker run 部署
适用于任何已安装 Docker 的命令行环境。飞牛用户也可通过 SSH 连接后使用此方式。
基础部署:
docker run -d \
--name nextchat \
--restart always \
-p 3000:3000 \
-e OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx \
-e CODE=your-password \
yidadaa/chatgpt-next-web
带代理部署(国内无法直连 OpenAI 时):
docker run -d \
--name nextchat \
--restart always \
-p 3000:3000 \
-e OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx \
-e CODE=your-password \
-e BASE_URL=https://your-proxy-domain.com \
yidadaa/chatgpt-next-web
启用 MCP 功能:
docker run -d \
--name nextchat \
--restart always \
-p 3000:3000 \
-e OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx \
-e CODE=your-password \
-e ENABLE_MCP=true \
yidadaa/chatgpt-next-web
飞牛用户如需通过 SSH 操作,先在电脑终端(Windows 可用 PowerShell)连接:
ssh 用户名@飞牛NAS的IP地址
1.3 使用 Docker Compose 部署
Compose 方式更便于后期维护和迁移,飞牛 fnOS 的 Docker 界面也支持直接粘贴 docker-compose.yml,系统会自动解析。
创建 docker-compose.yml 文件,内容如下:
version: "3.8"
services:
nextchat:
image: yidadaa/chatgpt-next-web
container_name: nextchat
restart: always
ports:
- "3000:3000"
environment:
# 必填:你的 API Key(多个用英文逗号分隔)
- OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
# 建议设置:访问密码(多个用英文逗号分隔)
- CODE=your-password
# 可选:API 基础地址(使用第三方中转时填写)
- BASE_URL=https://api.openai.com
# 可选:自定义模型列表
- CUSTOM_MODELS=+deepseek-chat,+glm-4,-gpt-3.5-turbo
# 可选:默认模型
- DEFAULT_MODEL=gpt-4o-mini
# 可选:隐藏用户输入 API Key 的入口
- HIDE_USER_API_KEY=1
根据你的实际情况,修改
OPENAI_API_KEY和CODE的值。
在文件所在目录执行:
docker compose up -d
1.4 查看运行状态
# 查看容器状态
docker ps | grep nextchat
# 查看容器日志
docker logs -f nextchat
二、环境变量详解
NextChat 支持丰富的环境变量,以下列出常用配置:
| 变量名 | 必填 | 说明 |
|---|---|---|
OPENAI_API_KEY |
是 | OpenAI API Key,多个用逗号分隔 |
CODE |
否 | 访问密码,多个用逗号分隔,如 code1,code2 |
BASE_URL |
否 | OpenAI API 请求地址,默认 https://api.openai.com |
CUSTOM_MODELS |
否 | 自定义模型列表,+添加 -隐藏,如 +llama,-gpt-3.5 |
DEFAULT_MODEL |
否 | 默认使用的模型 |
HIDE_USER_API_KEY |
否 | 设为 1 则禁止用户自行输入 API Key |
DISABLE_GPT4 |
否 | 设为 1 则禁用 GPT-4 |
ENABLE_BALANCE_QUERY |
否 | 设为 1 允许用户查询余额 |
其他模型 API Key(按需配置):
| 变量名 | 说明 |
|---|---|
DEEPSEEK_API_KEY |
DeepSeek API Key |
GOOGLE_API_KEY |
Google Gemini API Key |
ANTHROPIC_API_KEY |
Claude API Key |
CHATGLM_API_KEY |
智谱 GLM API Key |
ALIBABA_API_KEY |
阿里通义千问 API Key |
BAIDU_API_KEY |
百度文心 API Key |
BYTEDANCE_API_KEY |
字节豆包 API Key |
完整环境变量列表请参考 NextChat 官方文档。
三、访问与使用
1. 局域网访问
容器启动后,在浏览器输入部署设备的 IP 地址加端口:
http://设备IP:3000
例如 http://192.168.1.100:3000(飞牛 NAS 即 NAS 的 IP)
如果设置了 CODE 访问密码,首次打开会要求输入密码。
2. 外网访问(可选)
如果想在外网访问,推荐以下方式:
- 飞牛自带远程访问:在飞牛 fnOS 设置中开启远程访问功能
- 反向代理:通过 Nginx Proxy Manager 等工具配置域名和 HTTPS
- 内网穿透:使用 frp、ZeroTier 等工具
建议配置 HTTPS 后再在外网使用,以保障数据传输安全。
3. 作为 PWA 安装
NextChat 支持 PWA,在浏览器中点击「安装应用」/「添加到主屏幕」,即可像原生 App 一样使用。
四、常见问题
Q1:国内无法访问 OpenAI 怎么办?
有两种方案:
- 使用第三方 API 中转:设置
BASE_URL为中转服务地址 - 使用国产模型:配置
DEEPSEEK_API_KEY或CHATGLM_API_KEY等,在设置中切换模型
Q2:端口 3000 被占用?
修改端口映射,例如 -p 3001:3000,将主机端口改为 3001。
Q3:容器启动后无法访问?
排查步骤:
# 1. 检查容器是否正常运行
docker ps -a | grep nextchat
# 2. 查看容器日志
docker logs nextchat
# 3. 检查防火墙是否放行 3000 端口
Q4:如何更新到最新版本?
# 拉取最新镜像
docker pull yidadaa/chatgpt-next-web
# 停止并删除旧容器
docker stop nextchat
docker rm nextchat
# 重新运行容器(使用之前的命令)
如果使用 Docker Compose,只需:
docker compose pull
docker compose up -d
Q5:如何备份数据?
如果映射了存储卷,直接备份主机对应目录即可。聊天记录默认存储在浏览器本地,换设备需要重新同步。
五、总结
通过 Docker 部署 NextChat 整个过程非常简单:
- 准备 API Key
- 运行
docker run或docker compose up -d拉起容器 - 配置
OPENAI_API_KEY和CODE环境变量 - 访问
IP:3000即可使用
如果是飞牛 NAS 用户,还可以通过飞牛自带的 Docker 图形界面一键部署,无需敲命令。部署完成后,你就拥有了一个 24 小时在线的私人 AI 助手,支持多模型切换、插件、Artifacts 等丰富功能。相比每次打开网页版,自部署的 NextChat 隐私性更好、可定制性更强,还能在局域网内多设备共享。
如果在部署过程中遇到问题,欢迎留言交流!
_本文基于 NextChat 官方文档及 Docker 实践编写。_NextChat 项目地址:https://github.com/ChatGPTNextWeb/NextChat