不知道兄弟姊妹们有没有想过拥有一个自己的AI对话界面?
不是官方那种限制一堆的网页版,是你自己的------界面由你选,模型仁你换,想给谁用就给谁用,用多少Token你自己心里有数。
听起来好像很复杂?Docker一条命令的事。
先说清楚,为什么不在本地跑
很多人第一反应是:我电脑上装一个不就行了?
能跑,但问题一堆:电脑关了就没了、别人访问不了、换设备得重装、API Key明文存在本地配置里不安全。而且本地跑Docker对系统资源有要求,老电脑带不动。
我们直接放到VPS上,24小时在线,任何设备打开浏览器就能用,域名一挂还带HTTPS。我们之前已经学会了Nginx部署网站,这篇就是同样的套路,只不过网站换成了AI对话界面。
选哪个?LobeChat 还是 ChatGPT-Next-Web
其实市面上能自部署的AI对话前端不少,我推荐两个:
LobeChat ------ 界面好看,插件生态丰富,支持多模型切换,还能做语音对话。如果你想要一个"什么都能干"的全能选手,选它。
ChatGPT-Next-Web(NextChat) ------ 轻量,快,界面接近官方ChatGPT。如果你只想要一个简单干净的对话界面,它部署更快,资源占用更少。
这篇用LobeChat做演示,但流程对NextChat几乎一样------都是Docker一条命令的事。

第一步:装Docker
如果你的VPS还没装Docker,先装上。一行命令:
bash
curl -fsSL https://get.docker.com | bash
装完验证一下:
bash
docker --version
docker compose version
能打出版本号就行了。如果你跟了第5篇的安全加固,记得开放后面要用到的端口:
bash
ufw allow 3210/tcp
第二步:一条命令拉起LobeChat
LobeChat官方提供了Docker镜像,部署就是一条命令:
bash
docker run -d \
--name lobechat \
--restart always \
-p 3210:3210 \
-e ACCESS_CODE=你的访问密码 \
-e OPENAI_API_KEY=sk-你的API密钥 \
-e OPENAI_PROXY_URL=https://api.openai.com/v1 \
lobehub/lobe-chat
几个参数解释一下:
-p 3210:3210:把容器的3210端口映射到VPS的3210端口ACCESS_CODE:访问密码,防止别人白嫖你的API额度,自己设一个OPENAI_API_KEY:你的OpenAI API Key,没有的话先留空,进去界面再配也行OPENAI_PROXY_URL:如果你用的不是官方API(比如中转站),填中转地址
跑完等几秒,容器就起来了。这时候你用 http://你的VPS_IP:3210 已经能访问了。
但IP加端口太难看了。下一步把它挂到域名上。
第三步:Nginx反代 + HTTPS
之前文章已经做过Nginx反代了,这里快速过一遍就行。
创建Nginx配置文件:
bash
nano /etc/nginx/conf.d/ai.conf
写入:
nginx
server {
listen 80;
server_name ai.你的域名.com;
location / {
proxy_pass http://127.0.0.1:3210;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持,LobeChat部分功能需要
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 关闭缓冲,让流式输出逐字返回(不关的话回复会一坨一坨出来)
proxy_buffering off;
proxy_cache off;
}
}
注意最后那几行------proxy_buffering off 是关键。AI对话的流式输出用的是 SSE(Server-Sent Events),Nginx 默认会把响应攒够一批再发,不关缓冲的话你会发现 AI 回复是一坨一坨出来的,不是逐字蹦的。
测试并重载Nginx:
bash
nginx -t && nginx -s reload
然后上SSL,certbot一条命令:
bash
certbot --nginx -d ai.你的域名.com
现在访问 https://ai.你的域名.com,你应该看到LobeChat的界面了。
第四步:配置模型
如果你刚才启动容器时没填API Key,现在在界面里配也行。
点左下角设置 → 语言模型 → OpenAI:
- API Key:填你的Key
- 代理地址:如果用中转站就填中转地址,官方直连留空
- 模型列表:默认会拉取你的可用模型
不止OpenAI。LobeChat支持Claude、Gemini、通义千问、智谱GLM、月之暗面......基本上你能叫出名字的大模型都支持。每个模型填对应的API Key就行。
如果你有多个模型的Key,可以全配上,在对话界面里随时切换。这是自部署最大的好处------不被任何一家绑死。
不想用OpenAI?国产模型也能接
很多人卡在"没有OpenAI的API Key"这一步。其实完全不用OpenAI也可以,我们可以自己选择国内大模型。
国产模型API现在又便宜又好用:
- 通义千问:阿里云百炼平台申请,有免费额度
- 智谱GLM:开放平台注册即送Token
- 月之暗面(Kimi):长文本能力强,API价格低
- DeepSeek:性价比之王,百万Token才几块钱

在LobeChat里选对应的模型供应商,填上Key就能用。整个流程和接OpenAI一模一样。
安全:别让你的API额度被白嫖
这一步很多人跳过,然后某天发现API账单炸了。
你已经设了 ACCESS_CODE,但还可以加一层保险。在Nginx配置里加IP白名单:
nginx
server {
listen 443 ssl;
server_name ai.你的域名.com;
# ssl证书配置...
# 只允许你的IP访问
allow 你的IP;
allow 你朋友的IP;
deny all;
location / {
proxy_pass http://127.0.0.1:3210;
# ... 其他proxy配置
}
}
如果你需要到处用(IP不固定),那就靠 ACCESS_CODE 密码保护。但密码设复杂点,别用123456。
想换NextChat?
如果你觉得LobeChat太重了,想用更轻的NextChat,把Docker命令换一下就行:
bash
docker run -d \
--name nextchat \
--restart always \
-p 3000:3000 \
-e OPENAI_API_KEY=sk-你的API密钥 \
-e CODE=你的访问密码 \
yidadaa/chatgpt-next-web
Nginx反代端口从3210改成3000,其他都一样。
docker compose版本(推荐)
上面的 docker run 命令每次要敲一长串,不好管理。推荐用docker compose:
yaml
# docker-compose.yml
services:
lobechat:
image: lobehub/lobe-chat
container_name: lobechat
restart: always
ports:
- "3210:3210"
environment:
- ACCESS_CODE=你的访问密码
- OPENAI_API_KEY=sk-你的API密钥
- OPENAI_PROXY_URL=https://api.openai.com/v1
启动:
bash
docker compose up -d
更新镜像:
bash
docker compose pull && docker compose up -d
以后改配置只改这个yml文件就行,不用记一长串命令。
最终效果
打开浏览器,访问 https://ai.你的域名.com,输入访问密码,选个模型,开始对话。
手机、平板、电脑,任何设备打开浏览器都能用。界面是自己的,模型随便换,API用量自己心里有数。朋友想用?给他密码就行。想限制用量?下一篇我们搭API中转站,精确控制每个Key的额度。
这就是自部署的爽感------你拥有的不是一个网页,是一整套你能控制的AI基础设施。