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 访问你的数据,数据可以跨设备共享。
安装需要什么前提?
-
docker手动安装:LobeChat 数据库版本自身
lobehub/lobe-chat-database
-
docker手动安装:带有 PGVector 插件的 PostgreSQL 数据库
pgvector/pgvector:pg17
-
**1panel一键安装:**支持 S3 协议的对象存储服务 自建s3存储:
MinIO
-
**1panel一键安装(也可以docker手动安装):**受 LobeChat 支持的 SSO 登录鉴权服务 自建sso服务:
casdoor
官方说明至少拥有如下四个服务,咱们一步步看
本文将讲解通过1panel如何图形化 搭建LobeChat服务端数据库版本,让我们开始吧~
通过1panel图形化手动安装LobeChat 服务端数据库版本
如果你会docker 请看官方教程,而不是此教程,此教程使用的是1panel图形化操作,对于不懂的人来说看的懂,但对于懂的人过于繁琐,docker只需要一句代码
官方教程:https://lobehub.com/zh/docs/self-hosting/server-database/docker
首先是安装带有pgvector插件的PostgreSQL数据库
我们根据官方教程,使用docker容器新建一个数据库。
肯定有小伙伴疑惑,为什么不使用1panel的一键构建呢? 1Panel 的一键构建是不预装 pgvector 插件,这里我们手动安装,图形化也非常简单
拉取pgvector镜像
-
点击
容器
-点击镜像
-点击拉取镜像
-
输入镜像名(
pgvector/pgvector:pg17
)官方教程用的16哦 -
点击
拉取
请注意,拉取成功的镜像,并不是你当前拉取时间来的,而是镜像本身的更新时间
创建PostgreSQL容器
-
名称:my-postgres
-
镜像名: pgvector/pgvector:pg17
-
端口: 暴露端口:
5432
需要注意如果占用,要修改服务器端口 -
网络:选择默认的1panel即可
-
ipv4:
172.18.0.250
请注意你自己的地址,为了防止冲突,我使用最后面的几个地址 -
挂在卷:/opt/1panel/apps/postgresql/my-postgre/data 容器目录:/var/lib/postgresql/data
-
环境变量:用户名,密码,挂载目录
POSTGRES_USER=sky
POSTGRES_PASSWORD=mysecretpassword
PGDATA=/var/lib/postgresql/data
检测数据库是否可用
通过1panel内置的数据库功能,添加远程服务器,点击有验证,可用
新建一个数据库待会创建时要用
连接PostgreSQL注意的地方
- 需关闭防火墙或者要手动开放端口(这个很重要,不然通过内网的ip是连不上的哦)
支持 S3 协议的对象存储服务-minlO
如果你已经有了s3对象存储,可以跳过当前这个步骤
它的使用方式非常简单,我们只需要安装-创建桶,更改权限,和秘钥~
这里我们使用1panel一键安装
-
应用商店
-MinIO
-
如果端口占用请修改端口,我这里使用的是
端口:9008
-API端口:9009
-
端口外部访问
-安装
minIO配置
这是LobeChat 所需要的配置,由于我这边是内网使用,并不使用外网,因此我只需要新建一个桶,和对应的秘钥即可
-
ACCESS_KEY
-
SECRET_ACCESS_KEY
-
API域名
-
桶名称
-
访问域名
S3 相关
S3_ACCESS_KEY_ID=xxxxxxxxxx
S3_SECRET_ACCESS_KEY=xxxxxxxxxx用于 S3 API 访问的域名
S3_ENDPOINT=https://xxxxxxxxxx.r2.cloudflarestorage.com
S3_BUCKET=lobechat用于外网访问 S3 的公共域名,需配置 CORS
S3_PUBLIC_DOMAIN=https://s3-for-lobechat.your-domain.com
S3_REGION=ap-chengdu # 如果需要指定地域
新建一个桶
-
Buckets
-Create Bucket
-输入Name
-Create Bucket
桶的访问权限改为公共
不设为公共则无法访问
-
Buckets
-lobechat
-点击Access Policy
-选择Public
新建一个秘钥
将会得到一个秘钥
Access Key:E4c8Q1iXg625sMBUJ0B5
Secret Key:hX7T0kGl0Pdg9v2B93DgvOk9MayNHhP9mopGUPuJ
访问域名则为你的api域名端口:ip+端口
我这里是http://10.255.255.242:9009
检测minlo是否可用
通过halo程序添加存储检测
连接minlo注意的地方
-
端口的开放和防火墙依旧是首要操作的地方
-
自用则不需要设置过多,如果你在公网使用,请设置好权限,位置,用户等相关操作
-
记住你的桶名,下面要用
-
记住你的ID和秘钥
受 LobeChat 支持的 SSO 登录鉴权服务-casdoor
1panel一键安装(一)
-
应用商店
-casdoor
-
如果端口占用请修改端口,我这里使用的是
端口:8000
-
端口外部访问
-安装
需要注意的是,由于我的上方安装的是PostgreSQL数据库,它并不能搭配使用1panel一键安装,
如果你的设备资源有限,我建议手动安装casdoor,如果你本地设备刚刚的,可以使用mysql一键安装,比较省事,
拉取casdoor镜像(二)
如果你使用的是一键安装,这一块不用看
-
点击
容器
-点击镜像
-点击拉取镜像
-
输入镜像名(
casbin/casdoor
) -
点击
拉取
这是官方用的容器的版本,也是我现在使用的
创建casdoor容器
-
数据库:手动新建一个PostgreSQL数据库,待会环境变量有用 用户名:mycasdoor 名称:mycasdoor 密码:mEjT7KnFfAW44knZ
-
名称:my-casdoor
-
镜像名:
casbin/casdoor:版本
-
端口: 默认暴露端口:
8000
需要注意如果占用,要修改服务器端口 这里演示更改为8001 -
网络:选择默认的1panel即可
-
ipv4:
172.18.0.253
请注意你自己的地址,为了防止冲突,我使用最后面的几个地址 -
挂载:本机目录:
/opt/1panel/apps/casdoor/mycasdoor/conf
容器目录:/conf
需要注意是本机目录,手动创建的不要重复 -
环境变量:数据库类型,数据库名称,数据库用户名,密码
RUNNING_IN_DOCKER=true #告诉他是容器
用户名,密码,地址,端口,ssl,名称
dataSourceName=user=mycasdoor password=mEjT7KnFfAW44knZ host=10.255.255.242 port=5432 sslmode=disable dbname=mycasdoor
#数据库名称
dbName=mycasdoor
#数据库类型
driverName=postgres
访问界面检测可用
- 默认登录用户名:admin 默认密码:123
新建一个casdoor应用
官方教程:https://lobehub.com/zh/docs/self-hosting/advanced/auth/next-auth/casdoor
添加一个应用 身份认证
-应用
-添加
-
名称:LobeChat
-
显示名称:LobeChat
-
客户端ID:86094cf0438b7df7d2db(自定生成的不需要填写,下面要用)
-
客户端秘钥:0eb22f536455ddfdde06639652a8763ac3862db7(自定生成的不需要填写,下面要用)
-
重定向 URLs:http://10.255.255.242:3210/api/auth/callback/casdoor(LobeChat服务地址,如果你改了端口请注意修改)
保存即可,其他什么都可以不用设置
搭建好后casdoor注意的地方
- 端口的开放和防火墙,不开放无法正常访问
开始安装LobeChat 数据库版
拉取lobechat镜像
和上面一样的步骤
-
点击
容器
-点击镜像
-点击拉取镜像
-
输入镜像名(
lobehub/lobe-chat-database
)不加版本默认最新版 -
点击
拉取
创建lobe-chat-database容器
官方教程:https://lobehub.com/zh/docs/self-hosting/server-database/docker
-
名称:my-lobe-chat-database
-
镜像名: lobehub/lobe-chat-database:latest
-
端口: 默认暴露端口:
3210
需要注意如果占用,要修改服务器端口 -
网络:选择默认的1panel即可
-
ipv4:
172.18.0.251
请注意你自己的地址,为了防止冲突,我使用最后面的几个地址 -
环境变量必填项:
#你LobeChat访问的地址,请注意你的端口号是否正确
APP_URL=http://10.255.255.242:3210#DB必须的环境变量
用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成
KEY_VAULTS_SECRET=‘dvy9O/6gMcy8k7Jnfbb1mI8he03efDQ6m0iknR8XppQ=’
Postgres 数据库连接字符串
格式:postgres://username:password@host:port/dbname,如果你的 pg 实例为 Docker 容器,请使用容器名,当然可以内网访问的也可以使用内网ip
DATABASE_URL=postgres://mylobehub:4jMwz6Gr43SafXMX@my-postgres:5432/mylobehub
#SSO必须的环境变量
#加密敏感信息的秘钥
NEXT_AUTH_SECRET=3904039cd41ea1bdf6c93db0db96e250
#你使用的sso的类型
NEXT_AUTH_SSO_PROVIDERS=casdoor
#不同类型的变量名称不同,请注意,下面是客户端ID和客户端秘钥
AUTH_CASDOOR_ID=86094cf0438b7df7d2db
AUTH_CASDOOR_SECRET=0eb22f536455ddfdde06639652a8763ac3862db7
#填写casdoor访问地址即可
AUTH_CASDOOR_ISSUER=http://10.255.255.242:8000
#填写的lobechat的地址,请注意你的端口,要和前面APP_URL一样哦
NEXTAUTH_URL=http://10.255.255.242:3210/api/auth
#debug,用来看日志反馈
NEXT_AUTH_DEBUG=1#s3必须的环境变量
#id
S3_ACCESS_KEY_ID=E4c8Q1iXg625sMBUJ0B5
#秘钥
S3_SECRET_ACCESS_KEY=hX7T0kGl0Pdg9v2B93DgvOk9MayNHhP9mopGUPuJ
#minIO访问的API地址,端口更改了请注意
S3_ENDPOINT=http://10.255.255.242:9009
#s3桶名
S3_BUCKET=lobechat
#s3访问地址,我这里没有做操作依旧是api的地址
S3_PUBLIC_DOMAIN=http://10.255.255.242:9009
查看日志是否安装成功
访问服务是否安装成功
登录的账号密码为casdoor中的账号密码,其他功能,请自己尝试吧~