LobeChat 是一款开源、可私有部署的 AI 聊天界面,让你在自有服务器上跑起一个媲美商业产品的对话前端,既能接 OpenAI、Anthropic 等云厂商,也能无缝对接本地 Ollama 与自建推理服务。本文用 Docker 一步步带你完成私有化部署、模型接入与生产级反代。
一、为什么要把 AI 聊天界面私有化部署
把对话前端架在自己机器上,最大的好处是数据不出内网。企业知识问答、代码评审、内部 Agent 等场景里,聊天记录往往包含敏感信息,走第三方 SaaS 存在合规风险。此外,私有部署可以统一对接多个模型供应商,按需切换 OpenAI、本地 Qwen、vLLM 集群,避免被单一 API 绑定。
- 数据可控:会话、文件、知识库全部落在自己的数据库与对象存储。
- 成本可控:小模型走本地 Ollama,仅把高难度任务发给云端,整体费用更低。
- 模型可编排:一个界面里同时挂载数十个供应商与本地模型,用户体验一致。
二、LobeChat 的核心能力
LobeChat 是 LobeHub 开源的 LLM 聊天框架,采用 Next.js 构建,开箱即用地提供了大量工程化能力:
- 多模型供应商接入:OpenAI、Azure、Anthropic、Google、Bedrock、Ollama、DeepSeek 等;
- Agent / 插件市场:联网搜索、画图、知识库检索等可插拔能力;
- 语音输入输出(TTS / STT)与多模态输入;
- 会话持久化、主题与移动端适配;
- 支持多用户与 SSO(数据库版)。
三、快速启动:Docker 一键运行
最轻量的方式是用官方镜像 lobehub/lobe-chat,一条命令即可在 3210 端口拉起服务。设置 ACCESS_CODE 作为简易访问口令,避免裸奔在公网。
docker run -d -p 3210:3210 \
-e ACCESS_CODE=your-secret-code \
-e OPENAI_API_KEY=sk-xxxx \
--name lobe-chat \
lobehub/lobe-chat:latest
启动后浏览器访问 http://服务器IP:3210,输入上面的访问码即可进入聊天界面。若只想接本地模型,把 OPENAI_API_KEY 留空、改用后面的 Ollama 配置即可。
四、用 Docker Compose 接入本地 Ollama
对大多数开发者来说,本地 Ollama + LobeChat 是零云成本的最佳组合。关键在于让容器能访问宿主机的 Ollama(默认 11434 端口)。下面用 extra_hosts 把宿主映射到 host.docker.internal,再通过 OLLAMA_PROXY_URL 指过去。
version: "3.8"
services:
lobe-chat:
image: lobehub/lobe-chat:latest
ports:
- "3210:3210"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- ACCESS_CODE=your-secret-code
- OLLAMA_PROXY_URL=http://host.docker.internal:11434
restart: always
本地模型如何拉取与量化部署,可参考 Qwen 本地部署实战 与 llama.cpp GGUF 量化部署。启动后在 LobeChat 设置里选择 Ollama 供应商,即可看到 qwen2.5:7b 等已拉取的模型。
五、环境变量与模型供应商配置
LobeChat 通过环境变量声明可用的供应商。下面是一份典型的 .env 片段,同时挂上 OpenAI 与本地 Ollama,并关闭不用的云端供应商以减少暴露面。
# 基础访问
ACCESS_CODE=your-secret-code
# OpenAI 兼容(也包括 Azure、DeepSeek 等兼容端点)
OPENAI_API_KEY=sk-xxxx
OPENAI_PROXY_URL=https://api.openai.com/v1
# 本地 Ollama
OLLAMA_PROXY_URL=http://host.docker.internal:11434
# 自建 vLLM 推理服务(OpenAI 兼容)
CUSTOM_MODELS=
如果你想用高吞吐的集群推理,可把 vLLM 封装成 OpenAI 兼容端点后接入,具体见 vLLM 高吞吐部署。LobeChat 只要端点满足 /v1/chat/completions 协议即可直接挂载。
六、接入自建推理服务与 Function Calling
除了纯聊天,LobeChat 还能配合支持 Function Calling 的模型做工具调用。当你在本地用 Ollama 跑支持函数调用的模型(如 Qwen2.5、DeepSeek)时,可以在对话里让 AI 调用天气、数据库查询等自定义工具。函数调用的原理与实现可延伸阅读 Function Calling 实战。
把 LobeChat 当作前端、后端能力用 从零手写 AI Agent 或 RAG 从零搭建 来补齐,就组成了一套完整的私有 AI 工作台。
七、生产部署:Nginx 反向代理与 HTTPS
裸端口只适合内网。生产环境建议用 Nginx 做反代并套上 SSL,既统一域名又便于限流。下面是一段最小可用的反代配置(假设 LobeChat 在 3210 端口):
server {
listen 443 ssl;
server_name chat.example.com;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3210;
proxy_http_version 1.1;
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;
# 流式响应不缓冲
proxy_buffering off;
proxy_read_timeout 300s;
}
}
注意把 proxy_buffering off 打开,否则 SSE 流式输出会被攒成整块才下发,体验明显卡顿。容器编排层面可复用 Docker Compose 一键编排 把 LobeChat、Postgres、Nginx 一起管理。
八、会话持久化与多用户(数据库版)
社区版会话存浏览器本地,重装即丢。需要多端同步与多用户,请改用数据库镜像 lobehub/lobe-chat-database,配合 Postgres 与对象存储。关键变量如下:
lobe-chat-database:
image: lobehub/lobe-chat-database:latest
environment:
- DATABASE_URL=postgresql://lobe:pass@postgres:5432/lobe
- KEYVAULT_SECRET=$(openssl rand -base64 32)
- NEXT_AUTH_SECRET=$(openssl rand -base64 32)
- NEXT_AUTH_SSO_PROVIDERS=auth0,azure-ad,google
- APP_URL=https://chat.example.com
- OPENAI_API_KEY=sk-xxxx
- OLLAMA_PROXY_URL=http://host.docker.internal:11434
九、常见问题排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| Ollama 模型列表为空 | 容器无法访问宿主机 11434 | 检查 extra_hosts / host-gateway,或改用 –network host |
| 流式输出一次到位 | Nginx 缓冲开启 | 设置 proxy_buffering off |
| 访问提示 403 | ACCESS_CODE 不匹配 | 确认环境变量与输入口令一致 |
| 数据库版启动报错 | DATABASE_URL 不可达 | 确认 Postgres 已起且账号库已建 |
十、LobeChat 与 Dify 怎么选
两者都能私有部署,定位不同:LobeChat 偏「聊天前端 + 个人工作台」,轻量、UI 体验好;Dify 偏「可视化编排 + 知识库 + 工作流」,适合搭业务级 AI 应用。若你要的是给团队一个干净好用的对话入口,LobeChat 足够;若要落地带知识库的客服/助手,可看 Dify + Ollama 搭建私有 AI 知识库。
| 维度 | LobeChat | Dify |
|---|---|---|
| 定位 | 聊天前端 / 个人工作台 | AI 应用编排平台 |
| 知识库 RAG | 插件式、轻量 | 内置、生产级 |
| 工作流 | 较弱 | 强(可视化编排) |
| 上手成本 | 低(一条 docker run) | 中(需配数据库) |
十一、接入更多模型供应商
LobeChat 的优势在于「一个界面,多家模型」。除了 Ollama,你还可以在同一份环境变量里并行声明 OpenAI、DeepSeek、Anthropic 等云端供应商,用户在对话时下拉切换即可。各家的密钥相互独立,互不干扰。
# OpenAI / Azure OpenAI
OPENAI_API_KEY=sk-xxxx
OPENAI_PROXY_URL=https://api.openai.com/v1
# DeepSeek(OpenAI 兼容)
DEEPSEEK_API_KEY=sk-xxxx
DEEPSEEK_PROXY_URL=https://api.deepseek.com/v1
# Anthropic Claude
ANTHROPIC_API_KEY=sk-ant-xxxx
如果你不想把密钥写进容器环境变量,也可以只在界面里由用户自行填写,管理员通过 ACCESS_CODE 控制谁能进入。注意:多人共用一台实例时,密钥隔离要靠数据库版的多用户体系,否则所有会话会共享同一组环境变量里的密钥。
十二、用插件扩展 Agent 能力
LobeChat 自带插件市场,可以把「联网搜索、网页总结、画图、代码解释器」等能力插进对话流。它的底层同样是 Function Calling 实战 里讲到的工具调用协议:模型先决定调用哪个插件,前端再执行并把结果回填给模型。结合 RAG 从零搭建 的思路,你也能把私有知识库封装成一个检索插件,让聊天界面具备企业内网问答能力。
典型扩展路径是:先用本地 Ollama 跑一个支持函数调用的模型,再在设置里开启「插件」与「知识库」,上传内部文档后即可在对话中触发检索增强。这样无需改造后端,就能把普通聊天升级成带工具与记忆的轻量 Agent。
十三、资源占用与性能建议
LobeChat 本身只是前端,资源消耗很低;真正的开销在它背后的模型。不同部署形态对机器的要求差异很大:
| 部署形态 | CPU / 内存 | 说明 |
|---|---|---|
| 仅云端模型 | 1 核 / 512MB | LobeChat 几乎不耗资源,瓶颈在 API 速率 |
| 本地 7B 模型 | 4 核 / 8GB+显存 | Ollama 加载 qwen2.5:7b 约需 6GB 显存 |
| 本地 14B+ 模型 | 8 核 / 16GB+显存 | 建议独立 GPU 机器,避免与宿主机争抢 |
| 数据库版多用户 | +1 核 / 1GB | 额外 Postgres 与对象存储开销 |
实测中,社区版在 1 核 1GB 的轻量云上也能流畅运行,只要模型走云端即可。若本地推理,建议给 Ollama 单独一台 GPU 实例,并通过 OLLAMA_PROXY_URL 让 LobeChat 远程调用,做到计算与界面分离、互不拖垮。
结语
LobeChat 用极低的部署成本,给了你一个完全自主的 AI 聊天界面:既能接云端大模型,也能跑本地 Ollama,配合 Nginx 反代与数据库版即可进阶到多用户生产环境。把它和本站已有的 Qwen 本地部署、vLLM、RAG 从零搭建 组合,就能拼出一套端到端的私有 AI 能力栈。




