湖北省城乡建设厅网站,如何收集网站建设资料,酒店网络营销推广方案,网站建设的分工的论文LobeChat数据库版部署指南#xff08;2025最新#xff09; 2025/04/05 更新内容
在 .env 文件中补充了对 Ollama 嵌入模型#xff08;Embedding Model#xff09; 的支持配置#xff0c;用于启用 LobeChat 内建知识库的向量检索能力。同时更新了 MinIO 桶策略模板以增强安…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已安装Docker和Docker Compose v2已部署1Panel或其他可视化运维面板可选但推荐已配置OpenResty或 Nginx 作为反向代理拥有一个可解析的合法域名如example.com至少注册一个第三方大模型 API Key如 OpenAI、DeepSeek、SiliconFlow 等域名规划与 DNS 解析要实现前后端分离和安全隔离我们需要多个子域名来分别承载不同服务。这是现代微服务架构的标准做法也能有效避免跨域问题。设置 DNS A 记录进入你的域名服务商控制台如阿里云、Cloudflare添加如下五条 A 类记录子域名记录值服务器公网IPchat.example.comYOUR_SERVER_IPauth-api.example.comYOUR_SERVER_IPauth-ui.example.comYOUR_SERVER_IPs3-api.example.comYOUR_SERVER_IPs3-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_PASSpostgresql: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重点注意事项所有CHANGEME_*字段必须替换为强密码POSTGRES_PASSWORD必须与.env中的DATABASE_URL密码一致所有example.com需替换为你的实际域名⚠️⚠️⚠️切勿将此配置直接用于生产环境否则可能导致数据泄露或未授权访问⚠️⚠️⚠️配置.env环境变量文件创建环境变量文件vim .env填入以下内容根据实际情况修改# —————————— 基础配置 —————————— # APP_URLhttps://chat.example.com # —————————— 数据库加密密钥 —————————— # KEY_VAULTS_SECRETYOUR_SECURE_BASE64_32BYTE_KEY # 生成方式openssl rand -base64 32 # —————————— PostgreSQL 连接 —————————— # DATABASE_URLpostgresql://postgres:CHANGEME_POSTGRES_PASSpostgresql:5432/lobe # —————————— NextAuth 鉴权配置 —————————— # NEXT_AUTH_SECRETANOTHER_SECURE_RANDOM_STRING NEXT_AUTH_SSO_PROVIDERSlogto NEXTAUTH_URLhttps://chat.example.com/api/auth # —————————— Logto 应用凭证 —————————— # AUTH_LOGTO_IDyour-logto-app-id AUTH_LOGTO_SECRETyour-logto-app-secret AUTH_LOGTO_ISSUERhttps://auth-api.example.com/oidc # —————————— MinIO/S3 存储配置 —————————— # S3_ACCESS_KEY_IDgenerated-access-key S3_SECRET_ACCESS_KEYgenerated-secret-key S3_ENDPOINThttps://s3-api.example.com S3_BUCKETlobe S3_PUBLIC_DOMAINhttps://s3-api.example.com S3_ENABLE_PATH_STYLE1 # —————————— 可选模型接入配置 —————————— # # OPENAI_API_KEYsk-xxxxxx # OPENAI_PROXY_URLhttps://api.openai.com/v1 # —————————— Ollama Embedding 支持知识库必需 —————————— # OLLAMA_PROXY_URLhttp://host.docker.internal:11434 DEFAULT_FILES_CONFIGembedding_modelollama/bge-m3:latest关键参数解释参数说明KEY_VAULTS_SECRET用于加密数据库中存储的敏感信息如 API KeyNEXT_AUTH_SECRETNextAuth 会话签名密钥必须高强度随机生成S3_ENABLE_PATH_STYLE1自建 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 添加反向代理网站登录 1Panel 控制台进入「网站」→「创建网站」依次为以下五个域名创建反向代理站点域名代理目标chat.example.comhttp://127.0.0.1:3210auth-api.example.comhttp://127.0.0.1:3001auth-ui.example.comhttp://127.0.0.1:3002s3-api.example.comhttp://127.0.0.1:9000s3-ui.example.comhttp://127.0.0.1:9001✅ 建议为每个站点添加备注便于后期维护。申请 SSL 证书进入「证书」→「申请证书」选择 ACME 协议主域名填写chat.example.com添加其余四个子域到“其他域名”列表选择 DNS 验证方式推荐 Cloudflare 或阿里云 API开启“自动续签”。等待证书状态变为“正常”通常耗时 1~5 分钟。绑定 HTTPS 并启用加密访问返回「网站」列表逐个点击各站点的「配置」→「HTTPS」✅ 启用 HTTPS选择刚申请的通配符证书强制 HTTP 跳转至 HTTPS建议开启保存后即可通过https://安全访问各服务。初始化身份认证服务Logto访问 https://auth-ui.example.com 进入 Logto 管理界面。注册首个管理员账户首次访问需注册新用户该用户将自动成为超级管理员。⚠️ 注意此账户仅用于管理不能直接用于 LobeChat 登录创建 OAuth 应用进入左侧菜单「应用」→「创建应用」类型选择Next.js (App Router)名称可设为LobeChat-Frontend填写以下回调地址字段值Redirect URIshttps://chat.example.com/api/auth/callback/logtoPost sign-out redirect URIshttps://chat.example.com/CORS allowed originshttps://chat.example.com点击「保存」。获取 App Credentials在应用详情页复制以下两项App ID→ 填入.env中的AUTH_LOGTO_IDApp Secret→ 填入.env中的AUTH_LOGTO_SECRET 敏感信息一旦关闭页面将不再显示请立即记录可选关闭公开注册如需限制用户注册进入「登录体验」→「注册与登录」关闭「允许用户注册」此后只能由管理员在「用户管理」中手动添加成员。⚠️⚠️⚠️再次强调管理员账户 ≠ 登录账户必须创建普通用户才能登录 LobeChat⚠️⚠️⚠️配置 MinIO 对象存储访问 https://s3-ui.example.com使用之前设置的MINIO_ROOT_USER和MINIO_ROOT_PASSWORD登录。创建 Bucket左侧导航进入「Buckets」→「Create Bucket」名称输入lobe与.env中一致创建完成。设置公共访问策略点击刚创建的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进入「Access Keys」→「Create access key」输入用户名如lobe-s3-client生成后复制Access Key和Secret Key替换.env文件中的S3_ACCESS_KEY_IDXXXXXXXXXXXXXX S3_SECRET_ACCESS_KEYYYYYYYYYYYYYYYYY重启服务并正式启用由于我们修改了.env文件中的凭据需重新加载容器。docker compose down docker compose up -d等待所有服务重启完毕后访问 https://chat.example.com你应该能看到 LobeChat 的登录界面。点击「Continue with Logto」使用你在 Logto 中创建的普通用户账号登录。 成功登录后你已拥有一个功能完整的 LobeChat 数据库版实例功能验证与后续优化推荐验证项功能验证方法多端同步在不同设备登录检查会话是否同步文件上传尝试上传 PDF/Word 文档并发送给 AI知识库启用插件后导入文档提问相关内容测试召回模型切换在设置中添加 OpenAI、Ollama 等模型测试响应后续建议备份数据库定期导出./data目录中的 PostgreSQL 数据启用监控结合 Prometheus Grafana 监控容器状态升级策略关注 LobeHub GitHub 发布动态及时更新镜像安全加固禁用不必要的调试接口设置防火墙规则。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、掘金、知乎专栏。 技术交流群827193325LobeChat 部署与定制 入群口令Lobe2025欢迎分享、点赞、收藏也欢迎 PR 补充更多部署模式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考