news 2026/4/17 10:57:57

LobeChat数据库版部署指南(2025最新)

作者头像

张小明

前端开发工程师

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

LobeChat数据库版部署指南(2025最新)


2025/04/05 更新内容

.env文件中补充了对Ollama 嵌入模型(Embedding Model)的支持配置,用于启用 LobeChat 内建知识库的向量检索能力。同时更新了 MinIO 桶策略模板以增强安全性,并明确标注所有敏感字段必须替换。


你有没有遇到过这种情况:在手机上和AI聊了一半,换到电脑就得从头开始?或者想上传一份文档让AI分析,却发现本地版本根本不支持?这正是LobeChat社区版的痛点——功能受限、无法同步、数据孤岛。

而今天我们要搭建的LobeChat 数据库版本(Database Edition, DB 版),就是为了解决这些问题而生。它不再依赖浏览器存储,而是通过一套完整的后端服务架构,实现了多端同步、文件上传、知识库RAG、插件扩展等企业级功能。更重要的是,它是开源的,完全可控,适合个人开发者、团队协作甚至企业客服系统。

本文将带你从零开始,完成一次生产级部署。最终成果是一个可以通过https://chat.yourdomain.com安全访问的完整实例,包含身份认证、对象存储、数据库持久化等全套组件。

✅ 部署模式:域名 + HTTPS + Docker-Compose + 反向代理
🎯 目标成果:可通过https://chat.yourdomain.com安全访问的 LobeChat 实例

前提条件

请确保以下环境已准备就绪:

  • 一台拥有固定公网 IP 的 Linux 服务器(推荐 Ubuntu 22.04 LTS)
  • 已安装DockerDocker Compose v2+
  • 已部署1Panel或其他可视化运维面板(可选但推荐)
  • 已配置OpenResty或 Nginx 作为反向代理
  • 拥有一个可解析的合法域名(如example.com
  • 至少注册一个第三方大模型 API Key(如 OpenAI、DeepSeek、SiliconFlow 等)

域名规划与 DNS 解析

要实现前后端分离和安全隔离,我们需要多个子域名来分别承载不同服务。这是现代微服务架构的标准做法,也能有效避免跨域问题。

设置 DNS A 记录

进入你的域名服务商控制台(如阿里云、Cloudflare),添加如下五条 A 类记录:

子域名记录值(服务器公网IP)
chat.example.comYOUR_SERVER_IP
auth-api.example.comYOUR_SERVER_IP
auth-ui.example.comYOUR_SERVER_IP
s3-api.example.comYOUR_SERVER_IP
s3-ui.example.comYOUR_SERVER_IP

🔁 替换说明:将example.com替换为你的真实一级域名。

这些子域将分别用于:
-chat.*:LobeChat 主服务
-auth-*:Logto 提供的身份认证服务(OAuth/OIDC)
-s3-*:MinIO 对象存储服务(文件上传/下载)

如果你使用的是内网服务器并通过 NPS 进行穿透,请登录 NPS 控制台,在“域名管理”中设置如下代理规则:

chat.example.com → 内网OpenResty:443 auth-api.example.com → 内网OpenResty:443 auth-ui.example.com → 内网OpenResty:443 s3-api.example.com → 内网OpenResty:443 s3-ui.example.com → 内网OpenResty:443

确保所有流量均被正确转发至内网 OpenResty 的 HTTPS 端口。


编排文件与环境变量配置

我们采用docker-compose.yml来统一编排 PostgreSQL、MinIO、Logto 和 LobeChat 四个核心组件。这种声明式配置方式不仅便于维护,也利于后期迁移到 Kubernetes。

创建项目目录

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

编写docker-compose.yml

执行命令创建文件:

vim 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: CHANGEME_POSTGRES_PASS 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:/data environment: MINIO_ROOT_USER: CHANGEME_MINIO_USER MINIO_ROOT_PASSWORD: CHANGEME_MINIO_PASS MINIO_DOMAIN: s3-api.example.com MINIO_API_CORS_ALLOW_ORIGIN: https://chat.example.com command: server /data --address ":9000" --console-address ":9001" restart: always logto: image: svhd/logto container_name: lobe-logto ports: - "3001:3001" - "3002:3002" depends_on: postgresql: condition: service_healthy environment: TRUST_PROXY_HEADER: "1" DB_URL: postgresql://postgres:CHANGEME_POSTGRES_PASS@postgresql:5432/logto ENDPOINT: https://auth-api.example.com ADMIN_ENDPOINT: https://auth-ui.example.com entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"] restart: always lobe: image: lobehub/lobe-chat-database container_name: lobe-chat ports: - "3210:3210" depends_on: - postgresql - minio - logto env_file: - .env restart: always volumes: data: driver: local s3_data: driver: local

📌重点注意事项

  1. 所有CHANGEME_*字段必须替换为强密码;
  2. POSTGRES_PASSWORD必须与.env中的DATABASE_URL密码一致;
  3. 所有example.com需替换为你的实际域名;
  4. ⚠️⚠️⚠️==切勿将此配置直接用于生产环境,否则可能导致数据泄露或未授权访问!==⚠️⚠️⚠️

配置.env环境变量文件

创建环境变量文件:

vim .env

填入以下内容(根据实际情况修改):

# —————————— 基础配置 —————————— # APP_URL=https://chat.example.com # —————————— 数据库加密密钥 —————————— # KEY_VAULTS_SECRET=YOUR_SECURE_BASE64_32BYTE_KEY # 生成方式:openssl rand -base64 32 # —————————— PostgreSQL 连接 —————————— # DATABASE_URL=postgresql://postgres:CHANGEME_POSTGRES_PASS@postgresql:5432/lobe # —————————— NextAuth 鉴权配置 —————————— # NEXT_AUTH_SECRET=ANOTHER_SECURE_RANDOM_STRING NEXT_AUTH_SSO_PROVIDERS=logto NEXTAUTH_URL=https://chat.example.com/api/auth # —————————— Logto 应用凭证 —————————— # AUTH_LOGTO_ID=your-logto-app-id AUTH_LOGTO_SECRET=your-logto-app-secret AUTH_LOGTO_ISSUER=https://auth-api.example.com/oidc # —————————— MinIO/S3 存储配置 —————————— # S3_ACCESS_KEY_ID=generated-access-key S3_SECRET_ACCESS_KEY=generated-secret-key S3_ENDPOINT=https://s3-api.example.com S3_BUCKET=lobe S3_PUBLIC_DOMAIN=https://s3-api.example.com S3_ENABLE_PATH_STYLE=1 # —————————— 可选:模型接入配置 —————————— # # OPENAI_API_KEY=sk-xxxxxx # OPENAI_PROXY_URL=https://api.openai.com/v1 # —————————— Ollama Embedding 支持(知识库必需) —————————— # OLLAMA_PROXY_URL=http://host.docker.internal:11434 DEFAULT_FILES_CONFIG="embedding_model=ollama/bge-m3:latest"

🔑关键参数解释

参数说明
KEY_VAULTS_SECRET用于加密数据库中存储的敏感信息(如 API Key)
NEXT_AUTH_SECRETNextAuth 会话签名密钥,必须高强度随机生成
S3_ENABLE_PATH_STYLE=1自建 MinIO 必须开启路径风格访问
DEFAULT_FILES_CONFIG启用 Ollama 的 bge-m3 模型进行文档嵌入

💡 提示:host.docker.internal在 Linux 上可能不可用,建议改为宿主机真实 IP 或额外配置网络别名。


启动容器并验证运行状态

拉取镜像并启动服务

docker compose up -d

该命令将自动拉取所需镜像并后台运行所有服务。

查看日志确认启动情况

docker logs -f lobe-chat

等待输出出现类似以下内容即表示启动成功:

[Next.js] Server ready on http://localhost:3210

此时可通过内网地址http://<server-ip>:3210访问测试页面。

⏳ 注意:首次启动时 Logto 和 PostgreSQL 初始化可能需要 1~2 分钟,请耐心等待。


OpenResty + 1Panel 配置 HTTPS

使用 1Panel 添加反向代理网站

  1. 登录 1Panel 控制台;
  2. 进入「网站」→「创建网站」;
  3. 依次为以下五个域名创建反向代理站点:
域名代理目标
chat.example.comhttp://127.0.0.1:3210
auth-api.example.comhttp://127.0.0.1:3001
auth-ui.example.comhttp://127.0.0.1:3002
s3-api.example.comhttp://127.0.0.1:9000
s3-ui.example.comhttp://127.0.0.1:9001

✅ 建议为每个站点添加备注,便于后期维护。

申请 SSL 证书

  1. 进入「证书」→「申请证书」;
  2. 选择 ACME 协议,主域名填写chat.example.com
  3. 添加其余四个子域到“其他域名”列表;
  4. 选择 DNS 验证方式(推荐 Cloudflare 或阿里云 API);
  5. 开启“自动续签”。

等待证书状态变为“正常”,通常耗时 1~5 分钟。

绑定 HTTPS 并启用加密访问

返回「网站」列表,逐个点击各站点的「配置」→「HTTPS」:

  • ✅ 启用 HTTPS
  • 选择刚申请的通配符证书
  • 强制 HTTP 跳转至 HTTPS(建议开启)

保存后即可通过https://安全访问各服务。


初始化身份认证服务(Logto)

访问 https://auth-ui.example.com 进入 Logto 管理界面。

注册首个管理员账户

首次访问需注册新用户,该用户将自动成为超级管理员

⚠️ 注意:此账户仅用于管理,不能直接用于 LobeChat 登录!

创建 OAuth 应用

  1. 进入左侧菜单「应用」→「创建应用」;
  2. 类型选择:Next.js (App Router)
  3. 名称可设为LobeChat-Frontend
  4. 填写以下回调地址:
字段
Redirect URIshttps://chat.example.com/api/auth/callback/logto
Post sign-out redirect URIshttps://chat.example.com/
CORS allowed originshttps://chat.example.com
  1. 点击「保存」。

获取 App Credentials

在应用详情页复制以下两项:

  • App ID→ 填入.env中的AUTH_LOGTO_ID
  • App Secret→ 填入.env中的AUTH_LOGTO_SECRET

🔐 敏感信息一旦关闭页面将不再显示,请立即记录!

(可选)关闭公开注册

如需限制用户注册:

  1. 进入「登录体验」→「注册与登录」;
  2. 关闭「允许用户注册」;
  3. 此后只能由管理员在「用户管理」中手动添加成员。

⚠️⚠️⚠️==再次强调:管理员账户 ≠ 登录账户,必须创建普通用户才能登录 LobeChat!==⚠️⚠️⚠️


配置 MinIO 对象存储

访问 https://s3-ui.example.com,使用之前设置的MINIO_ROOT_USERMINIO_ROOT_PASSWORD登录。

创建 Bucket

  1. 左侧导航进入「Buckets」→「Create Bucket」;
  2. 名称输入lobe(与.env中一致);
  3. 创建完成。

设置公共访问策略

点击刚创建的lobe桶 →「Access Policy」→「Custom」,粘贴以下 JSON 策略:

{ "Version": "2012-10-17", "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/**" } ] }

此策略允许客户端上传、读取和删除文件,同时限制目录遍历。

创建 Access Key

  1. 进入「Access Keys」→「Create access key」;
  2. 输入用户名(如lobe-s3-client);
  3. 生成后复制Access KeySecret Key
  4. 替换.env文件中的:
S3_ACCESS_KEY_ID=XXXXXXXXXXXXXX S3_SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYY

重启服务并正式启用

由于我们修改了.env文件中的凭据,需重新加载容器。

docker compose down docker compose up -d

等待所有服务重启完毕后,访问:

👉 https://chat.example.com

你应该能看到 LobeChat 的登录界面。点击「Continue with Logto」,使用你在 Logto 中创建的普通用户账号登录。

🎉 成功登录后,你已拥有一个功能完整的 LobeChat 数据库版实例!


功能验证与后续优化

推荐验证项

功能验证方法
多端同步在不同设备登录,检查会话是否同步
文件上传尝试上传 PDF/Word 文档并发送给 AI
知识库启用插件后导入文档,提问相关内容测试召回
模型切换在设置中添加 OpenAI、Ollama 等模型测试响应

后续建议

  1. 备份数据库:定期导出./data目录中的 PostgreSQL 数据;
  2. 启用监控:结合 Prometheus + Grafana 监控容器状态;
  3. 升级策略:关注 LobeHub GitHub 发布动态,及时更新镜像;
  4. 安全加固:禁用不必要的调试接口,设置防火墙规则。

LobeChat DB 版本是目前最适合作为团队级 AI 助手门户的开源解决方案之一。它不仅提供了优雅的 UI 和强大的插件生态,更通过标准化的服务架构实现了真正的可维护性与可扩展性。

这套部署方案已经在多个实际项目中稳定运行,无论是个人知识管理、团队内部助手还是轻量级客服系统,都能轻松应对。其模块化设计也让未来扩展变得非常自然——比如加入 Redis 缓存提升性能,或是集成 LDAP 实现企业级统一认证。

如果你希望获得自动化部署脚本、Kubernetes Helm Chart 或 CI/CD 流水线配置模板,欢迎加入技术交流群获取资源。

📢 若你希望获得自动化部署脚本、Kubernetes Helm Chart 或 CI/CD 流水线配置模板,欢迎加入交流群获取资源。


本文首发于我的技术博客:

🔗 https://blog.zxilly.org/posts/lobechat-db-deploy-2025

同步发布于 CSDN、掘金、知乎专栏。

💬 技术交流群:827193325(LobeChat 部署与定制)
🔐 入群口令:Lobe2025

欢迎分享、点赞、收藏,也欢迎 PR 补充更多部署模式!

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

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

豆包手机:我为什么说它要干掉整个手机行业

豆包手机&#xff0c;这款刚刚在市场上崭露头角的创新产品&#xff0c;迅速吸引了大众的目光。不仅仅是因为它具备的高端硬件配置和现代化设计&#xff0c;而是它背后的核心技术——深度嵌入的 人工智能 系统&#xff0c;似乎打破了传统智能手机的所有规则。虽然它的发布在业内…

作者头像 李华
网站建设 2026/4/17 7:49:25

Hugging Face PyTorch图像模型训练与自定义指南

Hugging Face PyTorch图像模型训练与自定义指南 在深度学习项目中&#xff0c;搭建一个稳定、高效且可复现的训练环境往往是第一步&#xff0c;也是最关键的一步。尤其是在图像分类任务中&#xff0c;面对层出不穷的模型架构&#xff08;如 ViT、ConvNeXt、EfficientNet&#x…

作者头像 李华
网站建设 2026/4/17 7:49:25

Langchain-Chatchat本地知识库部署指南

Langchain-Chatchat 本地知识库部署指南 在企业智能化转型的浪潮中&#xff0c;如何高效利用内部文档、技术手册和规章制度成为一大挑战。传统搜索方式难以理解语义&#xff0c;而直接调用大模型又存在数据泄露风险。这时候&#xff0c;一个既能保障隐私又能精准响应的专业问答…

作者头像 李华
网站建设 2026/4/17 5:16:48

LobeChat能否翻译技术文档?跨语言沟通桥梁

LobeChat&#xff1a;构建跨语言技术沟通的智能中枢 在今天的全球化研发环境中&#xff0c;一份嵌入式系统设计文档可能由北京的工程师撰写&#xff0c;却需要被德国团队评审、美国客户验收。如何确保“中断服务”不会被误译为“break the service”&#xff0c;而“watchdog t…

作者头像 李华
网站建设 2026/4/17 12:18:39

国产数据库从入门到精通:新手小白实操指南

国产数据库从入门到精通&#xff1a;新手小白实操指南随着国产化替代浪潮推进&#xff0c;国产数据库&#xff08;如达梦、人大金仓、OceanBase、openGauss等&#xff09;已成为企业核心基础设施的重要选择&#xff0c;也成为技术从业者的必备技能。对于新手小白而言&#xff0…

作者头像 李华