news 2026/2/24 6:32:36

LobeChat数据库版部署指南2025更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LobeChat数据库版部署指南2025更新

LobeChat 数据库版部署实战指南(2025)

在私有化 AI 应用需求日益增长的今天,越来越多开发者和企业希望拥有一个完全可控、数据不出内网的智能对话平台。LobeChat 的 Database 版本正是为此而生——它不仅提供了媲美主流商业产品的交互体验,更通过引入完整的后端架构,实现了会话持久化、多设备同步、文件上传与知识库检索等关键能力。

本文基于 2025 年最新技术栈,带你从零搭建一套生产级 LobeChat 系统。我们将采用 PostgreSQL + MinIO + Logto 的组合方案,确保整个系统具备高可用性、安全认证和对象存储支持。整个过程无需修改源码,全程通过配置驱动完成部署。


架构设计:为什么选择这个组合?

LobeChat 社区版默认使用浏览器本地存储(IndexedDB),这虽然简化了部署,但也带来了明显的局限:无法跨设备同步、不支持用户系统、不能集成知识库。一旦关闭页面或更换设备,所有数据即告丢失。

而数据库版本则彻底改变了这一局面。其核心在于四个组件的协同:

  • PostgreSQL作为主数据库,承载用户账户、会话记录、插件配置等结构化数据;
  • MinIO提供 S3 兼容的对象存储,用于保存上传的 PDF、Word、图片等非结构化文件;
  • Logto实现 OAuth 2.0 / OIDC 协议级别的身份认证,支持第三方登录(如 GitHub、Google);
  • LobeChat 主服务负责前端渲染与后端逻辑处理,通过环境变量连接上述依赖。

这种“前后端分离 + 多服务解耦”的设计,使得系统具备良好的扩展性和维护性。更重要的是,所有数据都掌握在你自己手中。

前提准备清单

在开始之前,请确认你已准备好以下资源:

  • 一台公网可访问的 Linux 服务器(推荐 Ubuntu 22.04 LTS);
  • 已安装 Docker v26+ 和docker compose插件(注意不是旧版docker-compose);
  • 一个合法域名(例如example.com),并能配置 DNS 解析;
  • Nginx 或 OpenResty 作为反向代理(建议配合 1Panel 使用以简化证书管理);
  • 至少一个大模型 API 密钥(如 DeepSeek、Ollama、Moonshot 等);

如果你使用的是云厂商提供的轻量服务器(如腾讯轻量、阿里 ECS),请提前放行 80/443 端口,并关闭防火墙干扰。


第一步:DNS 与域名规划

LobeChat DB 版需要多个子域名来区分不同服务。这是出于安全隔离和 CORS 策略考虑的最佳实践。

你需要为以下五个二级域名添加 A 记录,全部指向你的服务器 IP:

子域名用途
lobe.example.comLobeChat 主应用入口
lobe-auth-api.example.comLogto 鉴权 API 接口
lobe-auth-ui.example.comLogto 管理后台
lobe-s3-api.example.comMinIO S3 API 端点
lobe-s3-ui.example.comMinIO 控制台界面

⚠️ 替换example.com为你的真实域名。等待 DNS 生效后,可通过dig lobe.example.com验证解析结果。

若你使用内网穿透工具(如 NPS),还需在穿透网关中配置五条 HTTPS 域名代理规则,统一将请求转发至服务器上的 OpenResty(监听 443 端口)。OpenResty 再根据 Host 头进行内部路由。


第二步:构建 Docker 编排文件

创建项目目录:

mkdir ~/lobechat-db && cd ~/lobechat-db

编写docker-compose.yml

以下是经过验证的生产级编排模板,包含健康检查、依赖关系和安全配置:

name: lobe-chat-database services: postgresql: image: pgvector/pgvector:pg16 container_name: lobe-postgres ports: - "5432:5432" volumes: - "./data:/var/lib/postgresql/data" environment: POSTGRES_DB: lobe POSTGRES_PASSWORD: your_secure_postgres_password_123 healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 restart: always minio: image: minio/minio container_name: lobe-minio ports: - "9000:9000" - "9001:9001" volumes: - "./s3_data:/etc/minio/data" environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: your_minio_strong_password_456 MINIO_DOMAIN: lobe-s3-api.example.com MINIO_API_CORS_ALLOW_ORIGIN: https://lobe.example.com command: server /etc/minio/data --address ":9000" --console-address ":9001" restart: always logto: image: svhd/logto:latest container_name: lobe-logto ports: - "3001:3001" - "3002:3002" depends_on: postgresql: condition: service_healthy environment: TRUST_PROXY_HEADER: "1" DB_URL: postgresql://postgres:your_secure_postgres_password_123@postgresql:5432/logto ENDPOINT: https://lobe-auth-api.example.com ADMIN_ENDPOINT: https://lobe-auth-ui.example.com entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"] restart: always lobe: image: lobehub/lobe-chat-database:latest container_name: lobe-chat ports: - "3210:3210" depends_on: postgresql: condition: service_healthy minio: condition: service_started logto: condition: service_started env_file: - .env restart: always volumes: data: driver: local s3_data: driver: local

📌 注意事项:
- 所有example.com必须替换为真实域名;
-POSTGRES_PASSWORD是数据库主密码,务必使用强密码生成器创建;
-MINIO_ROOT_USERMINIO_ROOT_PASSWORD是 MinIO 登录凭证;
-DB_URL中的密码必须与postgresql服务保持一致;

切勿将此配置直接暴露于公网!敏感信息应在.env文件中进一步隔离。


第三步:配置环境变量文件

执行:

vim .env

填入以下内容:

APP_URL=https://lobe.example.com KEY_VAULTS_SECRET=YOUR_GENERATED_KEY_VAULT_SECRET DATABASE_URL=postgresql://postgres:your_secure_postgres_password_123@postgresql:5432/lobe NEXT_AUTH_SECRET=YOUR_GENERATED_NEXT_AUTH_SECRET NEXT_AUTH_SSO_PROVIDERS=logto NEXTAUTH_URL=https://lobe.example.com/api/auth AUTH_LOGTO_ID= AUTH_LOGTO_SECRET= AUTH_LOGTO_ISSUER=https://lobe-auth-api.example.com/oidc S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= S3_ENDPOINT=https://lobe-s3-api.example.com S3_BUCKET=lobe S3_PUBLIC_DOMAIN=https://lobe-s3-api.example.com S3_ENABLE_PATH_STYLE=1 OLLAMA_PROXY_URL=http://192.168.1.100:11434 DEFAULT_FILES_CONFIG="embedding_model=ollama/bge-m3:latest"

其中两个关键密钥需用 OpenSSL 生成:

openssl rand -base64 32

输出示例:

cX8vK7a+9nLzZtQwEoVpNjRmYqWsTlBdGhPjXrNmFkI=

将其分别填入KEY_VAULTS_SECRETNEXT_AUTH_SECRET

关于 Ollama 地址:host.docker.internal在 Linux 上不可用,应改为宿主机局域网 IP(如192.168.1.100),前提是 Ollama 已运行且监听0.0.0.0:11434


第四步:启动容器并初始化服务

拉取镜像并后台启动:

docker compose up -d

查看状态:

docker ps

观察 LobeChat 日志是否正常启动:

docker logs -f lobe-chat

预期看到:

> Ready on http://0.0.0.0:3210

此时可在内网通过http://<IP>:3210测试访问。

常见问题排查:
- 若logto启动失败提示数据库连接拒绝,请检查postgresql是否已完成健康检查;
- 若 MinIO 控制台无法打开,请确认9001端口已正确映射和代理;
- 若出现 S3 上传跨域错误,需补充 MinIO 的 CORS 环境变量或策略。


第五步:配置反向代理与 HTTPS

推荐使用 1Panel 管理网站和证书,操作直观且自动化程度高。

创建五个反向代理站点

域名代理目标
lobe.example.comhttp://127.0.0.1:3210
lobe-auth-api.example.comhttp://127.0.0.1:3001
lobe-auth-ui.example.comhttp://127.0.0.1:3002
lobe-s3-api.example.comhttp://127.0.0.1:9000
lobe-s3-ui.example.comhttp://127.0.0.1:9001

若服务不在本机,请替换127.0.0.1为实际内网 IP。

申请多域名 SSL 证书

进入 1Panel「证书」模块,申请泛域名或 SAN 证书:

  • 主域名:lobe.example.com
  • 包含 SAN:其余四个子域名
  • 验证方式:DNS 自动验证(推荐 Cloudflare API)
  • 开启自动续签 ✅

证书签发成功后,逐个为每个站点启用 HTTPS,并强制跳转。


第六步:配置 Logto 鉴权服务

访问 https://lobe-auth-ui.example.com 完成管理员注册。

⚠️ 第一个注册用户是超级管理员,但不能用于 LobeChat 登录!需单独创建应用。

创建 Next.js 类型应用

路径:Applications → Create Application
类型选择:Next.js (App Router)
名称填写:LobeChat Auth

创建后配置三项:

  • Redirect URIs:
    https://lobe.example.com/api/auth/callback/logto
  • Post sign-out redirect URIs:
    https://lobe.example.com/
  • CORS allowed origins:
    https://lobe.example.com

保存后,在详情页获取:

  • Application ID→ 填入.envAUTH_LOGTO_ID
  • Application Secret→ 填入AUTH_LOGTO_SECRET

更新完成后,必须重启服务使环境变量生效!


第七步:配置 MinIO 对象存储

访问 https://lobe-s3-ui.example.com,使用你在docker-compose.yml中设置的用户名和密码登录。

创建名为lobe的 Bucket

路径:Buckets → Create Bucket
名称必须为lobe(与.env中一致)
类型选 Private(默认)

设置自定义访问策略

点击 bucket → Access Policy → Custom,粘贴以下 JSON:

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["*"] }, "Action": ["s3:GetBucketLocation"], "Resource": "arn:aws:s3:::lobe" }, { "Effect": "Allow", "Principal": { "AWS": ["*"] }, "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::lobe", "Condition": { "StringEquals": { "s3:prefix": ["files/*"] } } }, { "Effect": "Allow", "Principal": { "AWS": ["*"] }, "Action": ["s3:PutObject", "s3:DeleteObject", "s3:GetObject"], "Resource": "arn:aws:s3:::lobe/**" } ], "Version": "2012-10-17" }

该策略允许 LobeChat 上传、删除和读取文件,同时限制列表范围,提升安全性。

生成 Access Key

路径:Access Keys → Create access key
填写备注(如 LobeChat Integration)

生成后记录:
- Access Key ID → 填入.envS3_ACCESS_KEY_ID
- Secret Access Key → 填入S3_SECRET_ACCESS_KEY


最后一步:重启并验证功能

完成所有配置后,重启服务:

docker compose down docker compose up -d

约 30 秒后访问:

👉 https://lobe.example.com

你应该能看到登录界面,点击「Sign in with Logto」即可跳转认证。

首次登录成功后,系统会自动初始化用户空间,包括默认助手、插件权限等。


功能验证清单

功能验证方式
用户登录能否通过 Logto 成功登录
会话保存新开标签页后历史对话是否可见
文件上传上传 PDF/Word 是否能正常解析
知识库检索启用 Ollama 后能否构建本地知识向量库
多设备同步手机与电脑是否共享会话记录

如果以上功能均正常,恭喜你!你已经拥有了一个完全自主可控的私有 AI 助手平台。


小结:为何这套架构值得长期投入?

随着 2025 年本地大模型生态的成熟,像 Ollama + BGE-m3 这样的组合让企业可以在不依赖云端 API 的情况下实现高质量的知识库问答。LobeChat DB 版正是这一趋势下的理想载体。

其模块化设计也意味着未来可以轻松扩展:
- 接入企业 LDAP/AD 实现统一身份认证;
- 集成 RAG 工作流,打造智能客服机器人;
- 添加审计日志、团队协作等功能模块;

更重要的是,你的数据始终留在自己掌控之中——无论是合规要求还是业务敏感性,都能得到充分保障。

想要第一时间获取更新?欢迎加入交流群:830978621(暗号:Lobe2025
原文发布于:https://blog.zxilly.org/posts/lobechat-db-deploy-2025

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/19 0:17:43

Windows环境下部署ACE-Step详细步骤

Windows 环境下部署 ACE-Step 完整指南 在 AI 音乐生成技术快速发展的今天&#xff0c;越来越多创作者开始尝试将人工智能融入作曲、编曲与音频创作流程。ACE-Step 正是这一领域的前沿项目之一——它由 ACE Studio 与 StepFun 联合推出&#xff0c;基于轻量级线性 Transformer…

作者头像 李华
网站建设 2026/2/20 22:18:04

C语言指针(六)——函数指针数组

上节回顾&#xff1a; C语言指针&#xff08;五&#xff09;进阶篇——函数指针 上一篇&#xff0c;我们吃透了函数指针的核心知识&#xff0c;知道了函数指针是指向函数入口地址的指针&#xff0c;能通过它间接调用函数、实现回调机制&#xff0c;还用函数指针优化了计算器的…

作者头像 李华
网站建设 2026/2/20 21:36:23

Excalidraw多人协作卡顿?优化网络策略提升体验

Excalidraw多人协作卡顿&#xff1f;优化网络策略提升体验 在分布式团队成为常态的今天&#xff0c;一个流畅的实时协作白板&#xff0c;可能比会议室还重要。Excalidraw 凭借其手绘风格、轻量化设计和开源灵活性&#xff0c;迅速成为架构师画拓扑、产品经理做原型、工程师搞脑…

作者头像 李华
网站建设 2026/2/23 7:24:28

Qwen3-VL-8B与OCR结合的智能图文理解新方案

Qwen3-VL-8B与OCR结合的智能图文理解新方案 你有没有遇到过这样的场景&#xff1a;用户甩来一张杂乱的商品促销图&#xff0c;问“这东西现在多少钱&#xff1f;”系统调用OCR&#xff0c;返回一堆文字&#xff1a;“999”、“原价1599”、“限时特惠”、“仅剩3件”……可到底…

作者头像 李华
网站建设 2026/2/16 3:17:52

Java全栈开发面试实战:从基础到微服务的深度对话

Java全栈开发面试实战&#xff1a;从基础到微服务的深度对话 在一场真实的互联网大厂Java全栈开发岗位面试中&#xff0c;一位28岁的硕士毕业生张明&#xff08;化名&#xff09;正在与面试官进行技术交流。他拥有5年左右的工作经验&#xff0c;主要负责后端系统架构设计、前端…

作者头像 李华