使用 1panel图形化部署LobeChat服务端数据库版

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

添加图片注释,不超过 140 字(可选)

新建一个秘钥

将会得到一个秘钥

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

<think>好的,我需要帮助用户了解如何在1Panel部署OpenWebUI时将其数据库从默认的SQLite切换到PostgreSQL。首先,我需要确认用户对这两个工具的基本了解。1Panel是一个可视化的服务器管理面板,而OpenWebUI可能是一个基于Web的应用程序,通常这类应用会使用数据库来存储数据。默认情况下,许多应用使用SQLite,但在生产环境中,PostgreSQL或MySQL更常见,因为它们更适合高并发和大型数据集。 接下来,我需要回忆或查找OpenWebUI的部署文档,确认它是否支持PostgreSQL作为数据库后端。通常,这类应用会通过环境变量或配置文件来指定数据库连接信息。如果官方文档没有明确说明,可能需要查看其Docker镜像的环境变量或源码中的配置部分。 用户使用1Panel部署,意味着他们可能通过Docker容器来运行OpenWebUI。因此,我需要考虑如何在Docker环境中配置数据库连接。步骤可能包括:创建PostgreSQL数据库实例、获取数据库连接信息(如主机、端口、用户名、密码、数据库名)、修改OpenWebUI的环境变量以指向PostgreSQL,并确保网络连接正确。 首先,用户需要在1Panel部署PostgreSQL。这可能涉及在1Panel的应用商店中找到PostgreSQL并安装,或者在Docker中手动创建容器。需要确保PostgreSQL服务运行正常,并且网络设置允许OpenWebUI容器访问它。 然后,用户需要为OpenWebUI创建一个专用的数据库和用户。这可以通过1Panel数据库管理功能或使用pgAdmin等工具完成。需要记录下数据库名称、用户名、密码、主机地址(可能是容器名称或IP)和端口(默认5432)。 接下来,修改OpenWebUI的部署配置。在1Panel中,这可能涉及编辑Docker容器的环境变量。常见的环境变量包括DATABASE_URL,其格式通常为postgresql://user:password@host:port/database。需要替换用户、密码、主机、端口和数据库名为实际的值。 此外,可能需要确保OpenWebUI的Docker容器与PostgreSQL容器在同一个Docker网络中,以便通过容器名称进行通信。如果它们不在同一网络,可能需要创建并连接到一个共享网络。 最后,测试配置是否生效。重新启动OpenWebUI容器后,检查日志是否有数据库连接错误。如果连接成功,应用应该能正常使用PostgreSQL作为后端数据库。 需要注意的潜在问题包括:环境变量名称是否正确、网络连通性、PostgreSQL用户的权限是否正确、防火墙或安全组设置是否允许连接,以及数据库是否已正确创建。如果遇到问题,查看容器日志和PostgreSQL的日志可以帮助诊断问题。 总结步骤大致如下:部署PostgreSQL实例,创建数据库和用户,修改OpenWebUI的环境变量指向PostgreSQL,确保网络连接,重启应用并验证。</think>以下是将OpenWebUI在1Panel部署时更换为PostgreSQL数据库的详细步骤: ### 一、部署PostgreSQL数据库 1. **在1Panel中安装PostgreSQL** - 进入1Panel控制台 ➔ 点击「应用商店」 - 搜索 `PostgreSQL` ➔ 选择官方镜像并安装 - 填写配置信息(建议记录以下参数): $$ \begin{cases} 数据库名称: openwebui\_db \\ 用户名: openwebui\_user \\ 密码: [自定义强密码] \\ 端口: 5432 \end{cases} $$ 2. **验证部署状态** - 在「容器管理」中确认PostgreSQL容器状态显示为`Running` - 通过`pg_isready`命令检查服务状态: ```bash docker exec -it postgres-container pg_isready -h localhost -U openwebui_user ``` ### 二、配置OpenWebUI连接参数 1. **修改环境变量** - 进入OpenWebUI的容器配置页面 - 在「环境变量」部分添加/修改: ``` DATABASE_URL=postgresql://openwebui_user:your_password@postgres-container:5432/openwebui_db ``` - *注意替换变量值: - `your_password` ➔ 实际设置的密码 - `postgres-container` ➔ PostgreSQL容器的实际名称* 2. **网络配置要点** - 确保两个容器处于同一Docker网络 - 在「容器设置」➔「网络」中选择相同的自定义网络 - 验证网络连通性: ```bash docker exec -it openwebui-container ping postgres-container ``` ### 三、数据迁移(可选) 如果已有SQLite数据需要迁移: 1. 使用`pgloader`工具进行迁移: ```bash pgloader ./original.db postgresql://openwebui_user:password@postgres-container/openwebui_db ``` 2. 验证数据完整性: ```sql SELECT COUNT(*) FROM [主要业务表]; ``` ### 四、常见问题排查 1. **连接拒绝错误** - 检查PostgreSQL日志: ```bash docker logs postgres-container | grep -i 'connection' ``` - 确认`pg_hba.conf`配置包含: ``` host all all 172.0.0.0/8 md5 ``` 2. **权限不足问题** - 执行授权命令: ```sql GRANT ALL PRIVILEGES ON DATABASE openwebui_db TO openwebui_user; ``` 3. **字符集设置** - 创建数据库时指定编码: ```sql CREATE DATABASE openwebui_db WITH ENCODING='UTF8' LC_COLLATE='C' LC_CTYPE='C'; ``` ### 五、性能优化建议 1. 调整PostgreSQL配置: ```conf shared_buffers = 25% of total RAM work_mem = 64MB maintenance_work_mem = 1GB ``` 2. 启用连接池: ```bash docker run -d --name pgpool pgbouncer/pgbouncer ``` 完成上述配置后重启OpenWebUI容器,通过检查应用日志确认数据库连接状态。成功切换后,系统将获得更好的并发处理能力和数据安全性。 建议定期进行: - `VACUUM ANALYZE` 维护 - 数据库备份(可通过1Panel的定时任务实现) - 性能监控(使用pgAdmin或Prometheus+PostgreSQL Exporter)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SKY的折腾日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值