LobeChat 默认使用客户端数据库(IndexedDB),同时也支持使用服务端数据库(下简称 DB 版)。LobeChat 采用了 Postgres 作为后端存储数据库。 对于 LobeChat 的 DB 版,正常的部署流程都需要包含三个模块的配置:

  1. 数据库配置;
  2. 身份验证服务配置;
  3. S3 存储服务配置。

配置数据库-Postgres#

LobeChat 默认使用了 Postgres 作为后端的数据库, 由于我们需要使用向量搜索的功能, 所以必须安装附带 pgvector 插件的 Postgres. 我们不要在 1panel 的应用商店中安装 Postgres 数据库, 因为它默认是没有我们需要的插件的.

  1. 我们点击 容器 -> 镜像 -> 拉取镜像: 输入镜像名 pgvector/pgvector:pg17 点击 拉取 等待拉取完成.
  2. 之后我们点击 容器 -> 创建容器
  • 名称: 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_passwordPGDATA=/var/lib/postgresql/data 检测数据库是否可用 通过 1panel 内置的数据库功能,点击 数据库 -> PostgreSQL -> 添加远程服务器 之后把刚刚创建的服务器信息填入, 点击 验证 注意

  • 需要关闭数据库端口的防火墙 5432 如果你使用了 ufw 作为防火墙, 在终端输入:

    ufw allow 5432
    ufw reload
    

如果提示你没有 ufw 而且还是无法访问数据库, 去你服务器服务商那里查看防火墙规则或者安全组来进行端口放行, 之后的服务端口都需要关闭防火墙才能进行远程连接, 同样适用本方法, 此后不再赘述.

配置 S3 存储服务-minIO#

这个我们可以直接选择在 1panel 的应用商店中进行安装

  1. 我们点击 应用商店 -> 搜索 minIO
  2. 之后填写登录需要使用的用户名密码, 勾选端口外部访问 (重要)
  3. 等待应用下载完成之后我们访问 http://<你的服务器ipv4地址>:9001 来进入 minIO 的管理后台
  4. 填入你刚刚设置的用户名和密码进入管理后台
  5. 之后我们点击 Buckets -> Create Bucke Bucket Name 输入 lobechat , 之后我们点击 Create Bucket 创建桶
  6. 我们点进去我们刚刚创建的桶, Summary摘要那里有一个 Access Policy 我们修改为 Public
  7. 点击 Access Keys -> Create access key 我们记录下来 Access KeySecret Key 等下要用

配置鉴权登录服务-Casdoor#

因为 1panel 商店中的 Casdoor 只支持 MySql 数据库, 我们刚刚安装的是 Postgres 数据库, 为了节约内存我们选择手动安装 Casdoor, 如果你没有性能顾虑, 也可以选择使用商店里的 Casdoor 进行安装, 这里我只演示手动安装.

  1. 点击 容器 -> 镜像-> 拉取镜像 输入 casbin/casdoor 点击 拉取 等待拉取完成.
  2. 我们需要回到数据库那里新建一个 Casdoor 专属的数据库来, 点击 数据库->PostgreSQL->创建数据库
    • 名称: casdoor-db
    • 用户名和密码你自定义, 但是需要记住用户名和密码, 点击确认
    • 现在我们有了一个 casdoor-db 数据库
  3. 点击 容器 ->创建容器
    • 名称填写 :Casdoor
    • 镜像选择 :casbin/casdoor:latest
    • 暴露端口 :8001 (可以自定义)
    • 网络: 选择默认的 1panel 即可
    • ipv4: 172.18.0.xxx 注意冲突
    • 挂载卷: 本机目录:/root/casdoor 容器目录:/conf 需要注意的是本机目录,是手动创建的
  4. 之后我们点击确认先把容器创建下来 最大的坑点来了 我们需要在挂载卷的本机目录下/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 容器

  1. 我们访问 http://<你的ip>:8001 如果顺利进入则说明配置正确, 之后我们填入默认的用户名admin 密码 123进入后台
  2. 点击上方 身份认证->应用-> 添加
    • 名称: LobeChat
    • 显示名称: LobeChat
    • 客户端ID: 自动生成, 保留一下后续要用
    • 客户端密钥: 自动生成, 保留一下后续要用
    • 重定向Url:http:/<你的ip>:3210/api/auth/callback/casdoor
  3. 保存

配置 LobeChat 数据库版#

  1. 点击 容器 -> 镜像-> 拉取镜像 输入 lobehub/lobe-chat-database 点击 拉取 等待拉取完成.
  2. 我们需要回到数据库那里新建一个 LobeChat 专属的数据库, 点击 数据库->PostgreSQL->创建数据库
    • 名称: lobechat-db
    • 用户名和密码你自定义, 但是需要记住用户名和密码, 点击确认
    • 现在我们有了一个 lobechat-db 数据库
  3. 点击 容器 ->创建容器
    • 名称填写 :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
    
  4. 我们点击确认把容器创建下来
  5. 浏览器输入 http://<你的ip>:3210 登录的账号密码为 casdoor 中的账号密码, 即可访问 LobeChat