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即可

  • ipv4172.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即可

  • ipv4172.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即可

  • ipv4172.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中的账号密码,其他功能,请自己尝试吧~