LobeChat Database 完全当地部署

守听  论坛元老 | 2024-10-18 01:03:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 2128|帖子 2128|积分 6384


  为什么部署 LobeChat Database 版本

  LobeChat 作为一款界面美观、交互简洁的大模子前端,非常得当作为 Ollama 运行当地大模子的前端交互界面使用。
  非 database 版本的 LobeChat 将设置、对话数据存储到浏览器缓存 (IndexedDB) 中,假如清理了浏览器缓存,大概跨设备使用,则需要重新设置 LobeChat,须要时还要同步对话数据,降低了使用的便利性
  笔者在 2024 年 8 月份 部署当地化的 LobeChat Database 服务[1],但是鉴权服务还不支持当地部署。由于大陆的网络原因,使用的 auth0 鉴权服务经常失败。今天 (2024.9.22) 发现官方堆栈支持完全当地部署的 LobeChat Database 版本了,于是开始重新部署,期间也踩了很多坑。这里记录下来仅供参考。
  完全当地化部署的 LobeChat Database 已经达到个人生产可用的级别,可以在个人条记本、家庭服务器等单机情况中部署一套使用
  概览

  根据文档 使用 Docker Compose 部署 LobeChat 服务端数据库版本[2],想要完整的运行 LobeChat 数据库版本,你需要至少拥有如下 4 个服务:
  

  • LobeChat 数据库版本自身
  • 带有 PGVector 插件的 PostgreSQL 数据库
  • 支持 S3 协议的对象存储服务
  • 受 LobeChat 支持的 SSO 登录鉴权服务
  这些服务可以通过自建大概在线云服务组合搭配,以满意不同条理的部署需求。本文中的当地情况,全部使用容器部署这些服务。它们的镜像版本如下:
  服务镜像版本LobeChat 数据库版本lobehub/lobe-chat-database:v1.19.21带有 PGVector 插件的 PostgreSQL 数据库pgvector/pgvector:pg16支持 S3 协议的对象存储服务minio/minio:RELEASE.2024-09-13T20-26-02ZLobeChat 支持的 SSO 登录鉴权服务svhd/logto:1.20  部署时会先跑起来所有服务,在 logto 和 minio 服务中天生鉴权等配置信息,更新到 LobeChat 容器的情况变量中,再重启 LobeChat 才最终部署完成。
  启动全部服务

  

  • clone 代码堆栈
    1. git clone https://github.com/dockerq/lobechat-database-deploy.git
    复制代码
  • 进入代码堆栈的 local 目录
    1. cd lobechat-database-deploy/local
    复制代码
  • 拷贝.env配置文件
    1. cp .env.example .env
    复制代码
  • 启动全部服务
    1. docker compose up -d
    2.  [+] Running 6/6
    3.  ✔ Network local_lobe-network  Created                                                                                                                           0.0s
    4.  ✔ Container lobe-postgres     Healthy                                                                                                                           6.8s
    5.  ✔ Container lobe-network      Started                                                                                                                           0.7s
    6.  ✔ Container lobe-minio        Started                                                                                                                           0.2s
    7.  ✔ Container lobe-logto        Started                                                                                                                           5.7s
    8.  ✔ Container lobe-database     Started                                                                                                                           6.3s
    复制代码
  配置 Logto

  打开浏览器,访问http://localhost:3002进入 Logto web ui 页面。
  
  点击注册,输入用户名和密码后,发现报错 Internal server error
  参考 Logto 开源代码堆栈的 Issue bug: Error on create a password[3],在 Postgres 中执行:
  1. update sign_in_experiences set password_policy='{"rejects": {"pwned": false}}' where tenant_id='admin';
复制代码
后可正常注册。
  附:笔者没有按照上面的操作,而是多次点击注册按钮,竟然也乐成了。
  创建 Next.js (App Router)

  创建一个 Next.js (App Router) 应用,添加以下配置:
  

  • 重定向 URI(Redirect URI) 为 http://localhost:3210/api/auth/callback/logto
  • 登出回调 URI (Post sign-out redirect URI) 为 http://localhost:3210/
  点击“下一步”,可以看到App ID 和 App secrets,复制填入 .env 文件中对应的 AUTH_LOGTO_ID 和 AUTH_LOGTO_SECRET。
  
  配置 MinIO S3

  浏览器输入 http://localhost:9001,进入 MinIO WebUI,默认管理员账号密码在 .env 中:
  1. # MinIO S3 配置
  2. # minio root 用户名,要求超过 3 个字符
  3. MINIO_ROOT_USER=admin
  4. # minio root 用户密码,要求超过 8 个字符
  5. MINIO_ROOT_PASSWORD=minio_admin_pass
复制代码
创建符合你的 .env 文件中 MINIO_LOBE_BUCKET 字段的桶,默以为 lobe。并更新 lobe 桶的访问战略为定制:
  
  对应的 JSON 内容复制自 Lobe 文档[4]。
  末了,创建一个新的访问密钥,将天生的 Access Key 和 Secret Key 填入你的 .env 文件中的 S3_ACCESS_KEY_ID 和 S3_SECRET_ACCESS_KEY 中。
  重启 LobeChat 服务

  颠末上面 2 步,LobeChat 的鉴权、S3 配置项都填充了对应的值。这时重新启动 LobeChat 容器即可:
  

  • 停掉 lobe 服务
    1. docker compose down lobe
    2. [+] Running 2/1
    3. ✔ Container lobe-database     Removed                                                                                                                          10.1s
    4. ! Network local_lobe-network  Resource is still in use                                                                                                          0.0s
    复制代码
  • 重新启动 lobe 服务
    1. docker compose up -d lobe
    2. [+] Running 5/5
    3. ✔ Container lobe-postgres  Healthy                                                                                                                              1.1s
    4. ✔ Container lobe-network   Running                                                                                                                              0.0s
    5. ✔ Container lobe-logto     Running                                                                                                                              0.0s
    6. ✔ Container lobe-minio     Running                                                                                                                              0.0s
    7. ✔ Container lobe-database  Started                                                                                                                              1.2s
    复制代码
  大功告成

  访问 http://localhost:3210 即可进入 LobeChat 的 web 界面。
  点击页面左上角的头像,可以看到登录/注册按钮:
  
  点击后跳转到 Logto 的鉴权页面。这时我们是第一次登录,根据 Logto 提示创建用户后登录,就能正确进入 LobeChat Database 版本的前端,舒畅使用 LobeChat 了~
  出现的相关问题

  Logto https 访问

  Logto 服务的 Admin Console,使用了 Web Crypto API[5],只能通过 https 协议大概 http://localhost:3002来访问。参考 Logto doc | Quick Troubleshooting[6]
  Logto 注册失败

  本文使用的 Logto 镜像是svhd/logto:1.20 1.20 版本,还存在一些 bug。比如默认注册用户报错 Internal server error
  参考 Logto 官方 Issue bug: Error on create a password[7] 解决。
  LobeChat 端口

  LobeChat 容器中袒露的 3210 端口不要容易改动,会导致 LobeChat 内部代码 tRPC 因为容器映射的端口改变导致建连失败。
  LobeChat 使用自定义嵌入模子

  当前不支持使用 ollama 推理的嵌入模子,只能用系统默认的 OpenAI 的嵌入模子。
  

  • [Request] 内嵌功能适配 Azure OpenAI[8]
  LobeChat 使用新的当地 ZITADEL 鉴权

  详情见 [Request] 提供一个 ZITADEL 身份验证服务当地部署参考[9]
  参考资料

  [1]
  部署当地化的 LobeChat Database 服务: https://alwq.xyz/post/2024-08-07-lobechat-database-deploy/
  [2]  使用 Docker Compose 部署 LobeChat 服务端数据库版本: https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose
  [3]  bug: Error on create a password: https://github.com/logto-io/logto/issues/6577#issuecomment-2359921567
  [4]  Lobe 文档: https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#%E9%85%8D%E7%BD%AE-min-io-s-3
  [5]  Web Crypto API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
  [6]  Logto doc | Quick Troubleshooting: https://docs.logto.io/docs/get-started/#quick-troubleshooting
  [7]  bug: Error on create a password: https://github.com/logto-io/logto/issues/6577#issuecomment-2359921567
  [8]  [Request] 内嵌功能适配 Azure OpenAI: https://github.com/lobehub/lobe-chat/issues/4017
  [9]  [Request] 提供一个 ZITADEL 身份验证服务当地部署参考: https://github.com/lobehub/lobe-chat/issues/4060

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表