1panel部署LobeChat服务端数据库版(飞牛OS部署)

LobeChat

它是什么?
LobeChat 是一个现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架,支持语音合成、多模态、可扩展的(function call)插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用。

它的特性?

  • 多模型服务商支持;
  • 支持本地大语言模型 (LLM);
  • 模型视觉识别 (Model Visual);
  • TTS & STT 语音会话;
  • Text to Image 文生图;
  • 插件系统 (Function Calling);
  • 助手市场 (GPTs);
  • 支持本地 / 远程数据库;
  • 支持多用户管理;
  • 渐进式 Web 应用 (PWA);
  • 移动设备适配;
  • 自定义主题。

为什么要部署服务端数据库版?
1panel 默认带有客户端的一键安装,安装方式非常简单,点击1panel的应用商店-全部-AI/大模型-LobeChat -端口外部访问-安装(如果你使用的是openai则需要设置一下对应的数据)http://ip:40247/ 即可访问

默认安装的是客户端数据库模式 ,它与服务端数据库模式有什么区别?

先说以下两种数据库类型的区别,你就懂了。

特性客户端数据库 (IndexedDB)服务端数据库 (PostgreSQL)
存储位置浏览器本地服务器
访问权限仅限本地多用户共享
数据量
用途个人单浏览器多地方共享使用
特点简单、易用功能强大、支持高并发

客户端数据库 (默认): 你的聊天记录、设置等都存储在你的浏览器里,换台电脑就没了,数据无法共享。

服务端数据库 (DB 版): 你的聊天记录、设置等都存储在服务器上,你可以用任何电脑登录 LobeChat 访问你的数据,数据可以跨设备共享。

安装需要什么前提?

  • 1、docker手动安装:带有 PGVector 插件的 PostgreSQL 数据库 pgvector/pgvector:pg17
  • 2、1panel商店安装:支持 S3 协议的对象存储服务 自建s3存储:MinIO
  • 3、1panel手动安装:受 LobeChat 支持的 SSO 登录鉴权服务 自建sso服务casdoor
  • 4、docker手动安装:LobeChat 数据库版本自身 lobehub/lobe-chat-database

官方说明至少拥有如下四个服务,

通过1panel图形化手动安装LobeChat 服务端数据库版本

如果你会docker 请看官方教程,而不是此教程,此教程使用的是1panel图形化操作,对于不懂的人来说看的懂,但对于懂的人过于繁琐,docker只需要一句代码

首先是安装带有pgvector插件的PostgreSQL数据库

我们根据官方教程,使用docker容器新建一个数据库。

肯定有小伙伴疑惑,为什么不使用1panel的一键构建呢? 1Panel 的一键构建是不预装 pgvector 插件,这里我们手动安装,图形化也非常简单

拉取pgvector镜像

  • 点击容器-点击镜像-点击拉取镜像
  • 输入镜像名(pgvector/pgvector:pg17)官方教程用的16版本
  • 点击拉取

拉取pgvector/pgvector:pg17

pgvector/pgvector:pg17

1 - 创建pgvector容器

名称:PostgreSQL

镜像名: pgvector/pgvector:pg17

端口: 暴露端口:5432需要注意如果占用,要修改服务器端口

网络:选择默认的1panel即可(1panel-network

ipv4:可不填

挂在卷:/opt/1panel/apps/PostgreSQL/data 容器目录:/var/lib/postgresql/data

环境变量:用户名,密码,挂载目录

POSTGRES_USER=PostgreSQL 
POSTGRES_PASSWORD=PostgreSQL
PGDATA=/var/lib/postgresql/data

检测数据库是否可用

通过1panel内置的数据库功能,添加远程服务器,点击有验证,可用

连接上后新建一个数据库

连接PostgreSQL注意的地方

  • 需关闭防火墙或者要手动开放端口(不然通过内网的ip是连不上的)

注:官方教程:img使用 Docker 部署 LobeChat 数据库 · LobeChat... · LobeHub

2 - 支持 S3 协议的对象存储服务-MinIO

这里我们使用1panel一键安装

  • 应用商店-MinIO
  • 如果端口占用请修改端口,我这里使用的是端口:9001 -API端口:9000
  • 端口外部访问 -安装

minIO配置

LobeChat 需要新建一个桶,和对应的秘钥即可。

内容:
  • ACCESS_KEY
  • SECRET_ACCESS_KEY
  • 桶名称
  • API域名
新建一个桶
  • Buckets-Create Bucket-输入Name-lobechat-Create Bucket

桶的访问权限改为公共

不设为公共则无法访问

  • Buckets-lobechat-点击Access Policy-选择Public

新建一个秘钥

将会得到一个秘钥

桶名称: lobechat

Access Key:::r1TXawOyhP0oaUJqmYCR

Secret Key:::ftywcS58H48PnKETet3ulqvyOxCJc2B15PiXGMhS

API域名: http://192.168.2.2:9000(ip+端口)

检测minlo是否可用

可以获取筒即代表可用

3 - LobeChat 支持的 SSO 登录鉴权服务-casdoor

搭建casdoor

这里并没有使用1panel商店一件安装 ,是使用的Docker安装,

三个原因,1 是1panel商店一键安装需要mysql数据库支持,2是安装完后,casdoor服务和minIO服务不能互通,(不互通其实也不影响使用)(也可能是我的设置原因,暂且不使用商店一键安装)

3是换官方的all-in-one镜像不需要安装MySQL数据库

casdoor官方提供两个镜像,差异供大家参考

名称描述建议
casdoor-all-in-one镜像中包含了Casdoor和MySQL数据库此镜像已包含一个数据库,仅用于测试目的 (博主觉得是个人使用,使用这个镜像问题不大,目前没有遇到问题)
casdoor镜像中只包含有Casdoor此镜像可以连接到您自己的数据库,并在生产中使用

在Docker中拉取镜像

  • 名称:casdoor
  • 镜像名: casbin/casdoor-all-in-one:latest
  • 端口: 默认暴露端口:8000需要注意如果占用,要修改服务器端口 这里演示更改为8002
  • 网络:选择默认的1panel即可

访问界面检测可用
  • 默认登录用户名:admin 默认密码:123

设置casdoor应用

添加一个应用 身份认证-应用-添加

  • 名称:lobechat
  • 显示名称:lobechat
  • Logo:https://pic1.imgdb.cn/item/67bb5978d0e0a243d402dc4e.webp
  • 客户端ID::3fd6d6c63c53cfc9bfec(自动生成的不需要填写,下面要用)
  • 客户端秘钥:f2b4d13cc01f2b3f13b82efb2e6d028303e6f19f(自动生成的不需要填写,下面要用)
  • 重定向 URLs:http://192.168.2.2:3210/api/auth/callback/casdoor

    重定向可以填多个,这里还可以添加上反代后的地址,方便外网使用

    https://域名/api/auth/callback/casdoor(不支持中文域名,使用前需要转码)

    (重定这里是填LobeChat服务地址,lobechat服务还没有搭建,所以不着急确定是否端口正确)

保存即可,其他什么都可以不用设置

注:官方教程:img在 LobeChat 中配置 Casdoor 身份验证服务 · Lobe... · LobeHub

官方教程写的很繁杂,个人使用不建议参考。

4 - 开始安装LobeChat 数据库版

拉取lobechat镜像

搭建

  • 点击容器-点击镜像-点击拉取镜像
  • 输入镜像名( lobehub/lobe-chat-database:latest
  • 点击拉取

  • 名称:lobechat
  • 镜像名: lobehub/lobe-chat-database:latest
  • 端口: 默认暴露端口:3210需要注意如果占用,要修改服务器端口(修改的话,在设置casdoor应用中,重定向 URLs中也需要修改)
  • 网络:选择默认的1panel-network即可
  • 环境变量: 重点中的重点,修改完后相关内容后,删除所有注释,放到环境变量中即可。
  • #你LobeChat访问的地址,请注意,端口号修改的话,需要保持一致
    APP_URL=http://192.168.2.2:3210
    
    #postgresql必须的环境变量
    # 用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成(飞牛nas使用ssh登录后输入`openssl rand -base64 32`命令即可获取,保持默认也可)
    KEY_VAULTS_SECRET='*G7R4zFZk4mDaqvBIu3Yq4wD4tK/Ebzphx0HwDVrWX0Y=*'
    # postgresql 数据库连接字符串
    # 格式:postgres://username:password@host:port/dbname,如果你的postgresql实例为 Docker 容器,请使用容器名,当然可以内网访问的也可以使用内网ip
    # DATABASE_URL=postgres://数据库用户名:数据库密码@192.168.2.2:4432/数据库名
    # 这里的数据库名就是在搭建第一步的时候,最后设置的数据库
    DATABASE_URL=postgres://postgresql:postgresql@192.168.2.2:4432/postgresql
    
    #Casdoor必须的环境变量
    #加密敏感信息的秘钥,可以使用 openssl rand -base64 32 生成(飞牛nas使用ssh登录后输入`openssl rand -base64 32`命令即可获取,保持默认也可)
    NEXT_AUTH_SECRET=*G7R4zFZk4mDaqvBIu3Yq4wD4tK/Ebzphx0HwDVrWX0Y=*
    #你使用的sso的类型,不需要修改
    NEXT_AUTH_SSO_PROVIDERS=casdoor
    #Casdoor中设置的应用中的客户端ID和客户端秘钥
    AUTH_CASDOOR_ID=3fd6d6c63c53cfc9bfec
    AUTH_CASDOOR_SECRET=f2b4d13cc01f2b3f13b82efb2e6d028303e6f19f
    #填写casdoor访问地址即可
    AUTH_CASDOOR_ISSUER=http://192.168.2.2:8002
    
    #填写的lobechat的地址,请注意你的端口,要和前面APP_URL一样哦
    NEXTAUTH_URL=http://192.168.2.2:3210/api/auth
    #debug,用来看日志反馈
    NEXT_AUTH_DEBUG=1
    
    #minIO,s3必须的环境变量
    #id
    S3_ACCESS_KEY_ID=r1TXawOyhP0oaUJqmYCR
    #秘钥
    S3_SECRET_ACCESS_KEY=ftywcS58H48PnKETet3ulqvyOxCJc2B15PiXGMhS
    #minIO访问的API地址,端口更改了请注意
    S3_ENDPOINT=http://192.168.2.2:9000
    #minIO,s3桶名
    S3_BUCKET=lobechat
    #minIO,s3访问地址
    S3_PUBLIC_DOMAIN=http://192.168.2.2:9001

    访问服务是否安装成功

    登录的账号密码为casdoor中的账号密码,

casdoor默认账号密码:账号:admin 密码:123

注:官方教程:img使用 Docker 部署 LobeChat 数据库 · LobeChat... · LobeHub

倒数第二步

自行配置服务商即api

反代

现在是已经完成了本地部署,在外网情况下还是访问不了的

接下来就是配置反代内容,

  • 1 用Lucky进行反向代理,这里就不教学了,网上很多教程了
名称内网地址外网反代地址
lobechat服务http://192.168.2.2:3210https://lobechat.cn:10
Minio S3 API 服务http://192.168.2.2:9000https://Minio.cn:10
Casdoor API 服务http://192.168.2.2:8002https://Casdoor.cn:10
minio web服务(看需要,非必须)http://192.168.2.2:9001https://minioweb.cn:10
  • 2 Casdoor应用修改配置

    编辑lobechat应用配置

在重定向中再添加反代后的域名

把域名加端口修改成自己的:https://Casdoor.cn:10/api/auth/callback/casdoor

然后保存并退出。(不支持中文域名,如是中文域名请转码使用)

https://Casdoor.cn:10/api/auth/callback/casdoor

  • 3 修改lobechat容器中的环境变量,

    把以上的反代后的lobechat服务、Minio S3 API 服务、Casdoor API 服务 添加到环境变量中

#你LobeChat访问的地址,请注意,端口号修改的话,需要保持一致
APP_URL=http://192.168.2.2:3210
APP_URL=https://lobechat.cn:10
#postgresql必须的环境变量
# 用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成(飞牛nas使用ssh登录后输入`openssl rand -base64 32`命令即可获取,保持默认也可)
KEY_VAULTS_SECRET='*G7R4zFZk4mDaqvBIu3Yq4wD4tK/Ebzphx0HwDVrWX0Y=*'
# postgresql 数据库连接字符串
# 格式:postgres://username:password@host:port/dbname,如果你的postgresql实例为 Docker 容器,请使用容器名,当然可以内网访问的也可以使用内网ip
# DATABASE_URL=postgres://数据库用户名:数据库密码@192.168.2.2:4432/数据库名
# 这里的数据库名就是在搭建第一步的时候,最后设置的数据库
DATABASE_URL=postgres://postgresql:postgresql@192.168.2.2:4432/postgresql

#Casdoor必须的环境变量
#加密敏感信息的秘钥,可以使用 openssl rand -base64 32 生成(飞牛nas使用ssh登录后输入`openssl rand -base64 32`命令即可获取,保持默认也可)
NEXT_AUTH_SECRET=*G7R4zFZk4mDaqvBIu3Yq4wD4tK/Ebzphx0HwDVrWX0Y=*
#你使用的sso的类型,不需要修改
NEXT_AUTH_SSO_PROVIDERS=casdoor
#Casdoor中设置的应用中的客户端ID和客户端秘钥
AUTH_CASDOOR_ID=3fd6d6c63c53cfc9bfec
AUTH_CASDOOR_SECRET=f2b4d13cc01f2b3f13b82efb2e6d028303e6f19f
#填写casdoor访问地址即可
AUTH_CASDOOR_ISSUER=http://192.168.2.2:8002
AUTH_CASDOOR_ISSUER=https://Casdoor.cn:10

#填写的lobechat的地址,请注意你的端口,要和前面APP_URL一样哦
NEXTAUTH_URL=http://192.168.2.2:3210/api/auth
NEXTAUTH_URL=https://lobechat.cn:10/api/auth
#debug,用来看日志反馈
NEXT_AUTH_DEBUG=1

#minIO,s3必须的环境变量
#id
S3_ACCESS_KEY_ID=r1TXawOyhP0oaUJqmYCR
#秘钥
S3_SECRET_ACCESS_KEY=ftywcS58H48PnKETet3ulqvyOxCJc2B15PiXGMhS
#minIO访问的API地址,端口更改了请注意
S3_ENDPOINT=http://192.168.2.2:9000
S3_ENDPOINT=https://Minio.cn:10
#minIO,s3桶名
S3_BUCKET=lobechat
#minIO,s3访问地址
S3_PUBLIC_DOMAIN=http://192.168.2.2:9001
#minIOweb访问地址非必须
S3_PUBLIC_DOMAIN=https://minioweb.cn:10

现在就是完全体了,可以内外网访问,登录注册都可以的。

祝大家折腾愉快~

文章参考学习:5ee博客

最后修改:2025 年 02 月 24 日
如果你喜欢,请随意赞赏