记录一次使用 1panel图形化部署 LobeChat 数据库版本
LobeChat 默认使用客户端数据库(IndexedDB),同时也支持使用服务端数据库(下简称 DB 版)。LobeChat 采用了 Postgres 作为后端存储数据库。 对于 LobeChat 的 DB 版,正常的部署流程都需要包含三个模块的配置:
- 数据库配置;
- 身份验证服务配置;
- S3 存储服务配置。
配置数据库-Postgres#
LobeChat 默认使用了 Postgres 作为后端的数据库, 由于我们需要使用向量搜索的功能, 所以必须安装附带 pgvector
插件的 Postgres.
我们不要在 1panel 的应用商店中安装 Postgres 数据库, 因为它默认是没有我们需要的插件的.
- 我们点击
容器
->镜像
->拉取镜像
: 输入镜像名pgvector/pgvector:pg17
点击拉取
等待拉取完成. - 之后我们点击
容器
->创建容器
-
名称: postgres
-
镜像名: pgvector/pgvector:pg17
-
端口: 暴露端口:5432
需要注意如果占用,要修改服务器端口
-
网络:选择默认的1panel即可
-
ipv4:172.18.0.xxx
注意冲突
-
挂载卷:
/opt/1panel/apps/postgresql/postgre/data
容器目录:/var/lib/postgresql/data
-
环境变量:用户名
POSTGRES_USER=<your_name>
,POSTGRES_PASSWORD=your_password
,PGDATA=/var/lib/postgresql/data
检测数据库是否可用 通过 1panel 内置的数据库功能,点击数据库
->PostgreSQL
->添加远程服务器
之后把刚刚创建的服务器信息填入, 点击验证
注意 -
需要关闭数据库端口的防火墙 5432 如果你使用了
ufw
作为防火墙, 在终端输入:ufw allow 5432 ufw reload
如果提示你没有 ufw 而且还是无法访问数据库, 去你服务器服务商那里查看防火墙规则或者安全组来进行端口放行, 之后的服务端口都需要关闭防火墙才能进行远程连接, 同样适用本方法, 此后不再赘述.
配置 S3 存储服务-minIO#
这个我们可以直接选择在 1panel 的应用商店中进行安装
- 我们点击
应用商店
-> 搜索minIO
- 之后填写登录需要使用的用户名密码, 勾选端口外部访问 (重要)
- 等待应用下载完成之后我们访问 http://<你的服务器ipv4地址>:9001 来进入 minIO 的管理后台
- 填入你刚刚设置的用户名和密码进入管理后台
- 之后我们点击
Buckets
->Create Bucke
Bucket Name 输入lobechat
, 之后我们点击Create Bucket
创建桶 - 我们点进去我们刚刚创建的桶,
Summary
摘要那里有一个Access Policy
我们修改为Public
- 点击
Access Keys
->Create access key
我们记录下来Access Key
和Secret Key
等下要用
配置鉴权登录服务-Casdoor#
因为 1panel 商店中的 Casdoor 只支持 MySql 数据库, 我们刚刚安装的是 Postgres 数据库, 为了节约内存我们选择手动安装 Casdoor, 如果你没有性能顾虑, 也可以选择使用商店里的 Casdoor 进行安装, 这里我只演示手动安装.
- 点击
容器
->镜像
->拉取镜像
输入casbin/casdoor
点击拉取
等待拉取完成. - 我们需要回到数据库那里新建一个 Casdoor 专属的数据库来, 点击
数据库
->PostgreSQL
->创建数据库
- 名称: casdoor-db
- 用户名和密码你自定义, 但是需要记住用户名和密码, 点击
确认
- 现在我们有了一个 casdoor-db 数据库
- 点击
容器
->创建容器
- 名称填写 :
Casdoor
- 镜像选择 :
casbin/casdoor:latest
- 暴露端口 :
8001
(可以自定义) - 网络: 选择默认的 1panel 即可
- ipv4: 172.18.0.xxx
注意冲突
- 挂载卷: 本机目录:
/root/casdoor
容器目录:/conf
需要注意的是本机目录,是手动创建的
- 名称填写 :
- 之后我们点击确认先把容器创建下来
最大的坑点来了
我们需要在挂载卷的本机目录下
/root/casdoor
新建一个app.conf
文件, 里面填写:appname = casdoor httpport = 8001<你自己设置的casdoor端口> runmode = dev copyrequestbody = true driverName = postgres dataSourceName = postgres://<你自己设置的数据库名>:<你自己设置的数据库密码>@<你自己服务器ip>:5432/casdoor-db?sslmode=disable dbName = casdoor-db tableNamePrefix = showSql = false redisEndpoint = defaultStorageProvider = isCloudIntranet = false authState = "casdoor" socks5Proxy = "127.0.0.1:10808" verificationCodeTimeout = 10 initScore = 0 logPostOnly = true isUsernameLowered = false origin = originFrontend = staticBaseUrl = "https://cdn.casbin.org" isDemoMode = false batchSize = 100 enableErrorMask = false enableGzip = true inactiveTimeoutMinutes = ldapServerPort = 389 ldapsCertId = "" ldapsServerPort = 636 radiusServerPort = 1812 radiusDefaultOrganization = "built-in" radiusSecret = "secret" quota = {"organization": -1, "user": -1, "application": -1, "provider": -1} logConfig = {"filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"} initDataNewOnly = false initDataFile = "./init_data.json" frontendBaseDir = "../cc_0"
之后我们重启一下 Casdoor 容器
- 我们访问
http://<你的ip>:8001
如果顺利进入则说明配置正确, 之后我们填入默认的用户名admin
密码123
进入后台 - 点击上方
身份认证
->应用
->添加
- 名称: LobeChat
- 显示名称: LobeChat
- 客户端ID: 自动生成, 保留一下后续要用
- 客户端密钥: 自动生成, 保留一下后续要用
- 重定向Url:
http:/<你的ip>:3210/api/auth/callback/casdoor
- 保存
配置 LobeChat 数据库版#
- 点击
容器
->镜像
->拉取镜像
输入lobehub/lobe-chat-database
点击拉取
等待拉取完成. - 我们需要回到数据库那里新建一个 LobeChat 专属的数据库, 点击
数据库
->PostgreSQL
->创建数据库
- 名称: lobechat-db
- 用户名和密码你自定义, 但是需要记住用户名和密码, 点击
确认
- 现在我们有了一个 lobechat-db 数据库
- 点击
容器
->创建容器
- 名称填写 :
lobechat
- 镜像选择 :
lobehub/lobe-chat-database:latest
- 暴露端口 :
3210
(可以自定义) - 网络: 选择默认的 1panel 即可
- ipv4: 172.18.0.xxx
注意冲突
- 环境变量: 重要
APP_URL=http://<你的ip>:3210 KEY_VAULTS_SECRET='DawqFfk7lcAvdxwzlIPVurK5RkHpcAbxuGTjAq2/hsQ='<用于加密敏感信息的密钥,终端输入 openssl rand -base64 32 生成> DATABASE_URL=postgresql://<你创建的lobechat_db用户名>:<你创建的lobechat_db密码>@<你的ip>:5432/lobechat-db NEXT_AUTH_SECRET=VGR5MZwB5EWOILlWseJMLX5xMktx9EWu3VrbyXMiH2k=<用于加密敏感信息的密钥,终端输入 openssl rand -base64 32 生成> NEXT_AUTH_SSO_PROVIDERS=casdoor AUTH_CASDOOR_ID=< casdoor 创建 lobecha t应用时的客户端 id > AUTH_CASDOOR_SECRET=< casdoor 创建 lobecha t应用时的客户端密钥> AUTH_CASDOOR_ISSUER=http://<你的ip>:8001 NEXTAUTH_URL=http://<你的ip>:3210/api/auth NEXT_AUTH_DEBUG=1 S3_ACCESS_KEY_ID=< minIo 创建 lobecha 桶时的 Access Key> S3_SECRET_ACCESS_KEY=< minIo 创建 lobecha 桶时的 Secret Key> S3_ENDPOINT=https:http://<你的ip>:9000 S3_BUCKET=lobechat S3_PUBLIC_DOMAIN=http://<你的ip>:9000 S3_ENABLE_PATH_STYLE=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NODE_ENV=production NODE_OPTIONS=--dns-result-order=ipv4first --use-openssl-ca NODE_EXTRA_CA_CERTS= NODE_TLS_REJECT_UNAUTHORIZED= SSL_CERT_DIR=/etc/ssl/certs/ca-certificates.crt MIDDLEWARE_REWRITE_THROUGH_LOCAL=1 HOSTNAME=0.0.0.0 PORT=3210 LLM_VISION_IMAGE_USE_BASE64=1
- 名称填写 :
- 我们点击确认把容器创建下来
- 浏览器输入
http://<你的ip>:3210
登录的账号密码为 casdoor 中的账号密码, 即可访问 LobeChat