LobeChat Database 完全当地部署
https://img-blog.csdnimg.cn/img_convert/a4cf1dc979c2cb4df00bfa6a077aa48e.jpeg为什么部署 LobeChat Database 版本
LobeChat 作为一款界面美观、交互简洁的大模子前端,非常得当作为 Ollama 运行当地大模子的前端交互界面使用。
非 database 版本的 LobeChat 将设置、对话数据存储到浏览器缓存 (IndexedDB) 中,假如清理了浏览器缓存,大概跨设备使用,则需要重新设置 LobeChat,须要时还要同步对话数据,降低了使用的便利性。
笔者在 2024 年 8 月份 部署当地化的 LobeChat Database 服务,但是鉴权服务还不支持当地部署。由于大陆的网络原因,使用的 auth0 鉴权服务经常失败。今天 (2024.9.22) 发现官方堆栈支持完全当地部署的 LobeChat Database 版本了,于是开始重新部署,期间也踩了很多坑。这里记录下来仅供参考。
完全当地化部署的 LobeChat Database 已经达到个人生产可用的级别,可以在个人条记本、家庭服务器等单机情况中部署一套使用。
概览
根据文档 使用 Docker Compose 部署 LobeChat 服务端数据库版本,想要完整的运行 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 代码堆栈
git clone https://github.com/dockerq/lobechat-database-deploy.git
[*]进入代码堆栈的 local 目录
cd lobechat-database-deploy/local
[*]拷贝.env配置文件
cp .env.example .env
[*]启动全部服务
docker compose up -d
[+] Running 6/6
✔ Network local_lobe-network Created 0.0s
✔ Container lobe-postgres Healthy 6.8s
✔ Container lobe-network Started 0.7s
✔ Container lobe-minio Started 0.2s
✔ Container lobe-logto Started 5.7s
✔ Container lobe-database Started 6.3s
配置 Logto
打开浏览器,访问http://localhost:3002进入 Logto web ui 页面。
https://img-blog.csdnimg.cn/img_convert/8c63e79437e60b5af7c6483960f6d8fb.jpeg点击注册,输入用户名和密码后,发现报错 Internal server error。
参考 Logto 开源代码堆栈的 Issue bug: Error on create a password,在 Postgres 中执行:
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。
https://img-blog.csdnimg.cn/img_convert/db94c175c46b58c776a32ab3e3d51f0a.jpeg配置 MinIO S3
浏览器输入 http://localhost:9001,进入 MinIO WebUI,默认管理员账号密码在 .env 中:
# MinIO S3 配置
# minio root 用户名,要求超过 3 个字符
MINIO_ROOT_USER=admin
# minio root 用户密码,要求超过 8 个字符
MINIO_ROOT_PASSWORD=minio_admin_pass创建符合你的 .env 文件中 MINIO_LOBE_BUCKET 字段的桶,默以为 lobe。并更新 lobe 桶的访问战略为定制:
https://img-blog.csdnimg.cn/img_convert/66027b8dad474845b02d21381f38be89.jpeg对应的 JSON 内容复制自 Lobe 文档。
末了,创建一个新的访问密钥,将天生的 Access Key 和 Secret Key 填入你的 .env 文件中的 S3_ACCESS_KEY_ID 和 S3_SECRET_ACCESS_KEY 中。
重启 LobeChat 服务
颠末上面 2 步,LobeChat 的鉴权、S3 配置项都填充了对应的值。这时重新启动 LobeChat 容器即可:
[*]停掉 lobe 服务
docker compose down lobe
[+] Running 2/1
✔ Container lobe-database Removed 10.1s
! Network local_lobe-network Resource is still in use 0.0s
[*]重新启动 lobe 服务
docker compose up -d lobe
[+] Running 5/5
✔ Container lobe-postgres Healthy 1.1s
✔ Container lobe-network Running 0.0s
✔ Container lobe-logto Running 0.0s
✔ Container lobe-minio Running 0.0s
✔ Container lobe-database Started 1.2s
大功告成
访问 http://localhost:3210 即可进入 LobeChat 的 web 界面。
点击页面左上角的头像,可以看到登录/注册按钮:
https://img-blog.csdnimg.cn/img_convert/2f6ccf52ba9f639971921398e25f3d2e.jpeg点击后跳转到 Logto 的鉴权页面。这时我们是第一次登录,根据 Logto 提示创建用户后登录,就能正确进入 LobeChat Database 版本的前端,舒畅使用 LobeChat 了~
出现的相关问题
Logto https 访问
Logto 服务的 Admin Console,使用了 Web Crypto API,只能通过 https 协议大概 http://localhost:3002来访问。参考 Logto doc | Quick Troubleshooting
Logto 注册失败
本文使用的 Logto 镜像是svhd/logto:1.20 1.20 版本,还存在一些 bug。比如默认注册用户报错 Internal server error
参考 Logto 官方 Issue bug: Error on create a password 解决。
LobeChat 端口
LobeChat 容器中袒露的 3210 端口不要容易改动,会导致 LobeChat 内部代码 tRPC 因为容器映射的端口改变导致建连失败。
LobeChat 使用自定义嵌入模子
当前不支持使用 ollama 推理的嵌入模子,只能用系统默认的 OpenAI 的嵌入模子。
[*] 内嵌功能适配 Azure OpenAI
LobeChat 使用新的当地 ZITADEL 鉴权
详情见 提供一个 ZITADEL 身份验证服务当地部署参考
参考资料
部署当地化的 LobeChat Database 服务: https://alwq.xyz/post/2024-08-07-lobechat-database-deploy/
使用 Docker Compose 部署 LobeChat 服务端数据库版本: https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose
bug: Error on create a password: https://github.com/logto-io/logto/issues/6577#issuecomment-2359921567
Lobe 文档: https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#%E9%85%8D%E7%BD%AE-min-io-s-3
Web Crypto API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
Logto doc | Quick Troubleshooting: https://docs.logto.io/docs/get-started/#quick-troubleshooting
bug: Error on create a password: https://github.com/logto-io/logto/issues/6577#issuecomment-2359921567
内嵌功能适配 Azure OpenAI: https://github.com/lobehub/lobe-chat/issues/4017
提供一个 ZITADEL 身份验证服务当地部署参考: https://github.com/lobehub/lobe-chat/issues/4060
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]