使用 1panel 圖形化部署 LobeChat 服務端資料庫版

LobeChat 是什麼?

LobeChat 是一個現代化設計的開源聊天應用與開發框架,旨在為用戶提供 ChatGPT、Gemini、Claude 和 Ollama 等多種大語言模型的接入。它支持語音合成、多模態互動以及可擴展的插件系統,使用戶可以輕鬆創建和管理自己的聊天應用。

LobeChat 的特性

  • 多模型服務商支持:可以接入多種大語言模型。
  • 本地大語言模型支持:允許用戶在本地運行大語言模型。
  • 模型視覺識別:具備視覺識別能力。
  • 語音會話(TTS & STT):支持文本轉語音和語音轉文本。
  • 文本生成圖像:實現文本到圖像的轉換功能。
  • 插件系統:可擴展功能,通過插件實現特定需求。
  • 助手市場:提供多種助手供用戶選擇。
  • 多用戶管理:支持多用戶環境。
  • 漸進式 Web 應用(PWA):兼容移動設備,提供良好的用戶體驗。
  • 自定義主題:用戶可以自定義界面風格。

為什麼要部署服務端資料庫版?

使用 1panel 部署 LobeChat 的服務端資料庫版,用戶可以享受更強大的數據管理能力。相較於客戶端資料庫模式,服務端資料庫模式的優勢在於:

  • 數據存儲位置:數據存儲在伺服器上,可以跨設備訪問。
  • 訪問權限:支持多用戶共享,適合團隊或組織使用。
  • 數據量:適合存儲大數據量,支持高併發訪問。

安裝需要的前提條件

  1. Docker 手動安裝

    • LobeChat 資料庫版本:lobehub/lobe-chat-database
    • 帶有 PGVector 插件的 PostgreSQL 資料庫:pgvector/pgvector:pg17
  2. 1panel 一鍵安裝

    • 支持 S3 協議的對象存儲服務,自建 S3 存儲:MinIO
  3. 1panel 一鍵安裝(也可以 Docker 手動安裝)

    • 受 LobeChat 支持的 SSO 登入鑑權服務,自建 SSO 服務:Casdoor

安裝帶有 PGVector 插件的 PostgreSQL 資料庫

首先,我們將根據官方教程,使用 Docker 容器新建一個 PostgreSQL 資料庫。

為什麼不使用 1panel 的一鍵構建?

有些小夥伴可能會疑惑,為什麼不使用 1panel 的一鍵構建?因為 1Panel 的一鍵構建不預裝 PGVector 插件。在這裡,我們將手動安裝,圖形化操作也非常簡單。

拉取 PGVector 鏡像

  1. 在 1panel 中,點擊 容器
  2. 點擊 鏡像 ,然後選擇 拉取鏡像
  3. 輸入鏡像名稱:pgvector/pgvector:pg17(官方教程中使用的是 16 版本)。
  4. 點擊 拉取

這樣,您就可以成功拉取並安裝帶有 PGVector 插件的 PostgreSQL 資料庫了。

創建 PostgreSQL 容器

在這一步,我們將創建一個名為 my-postgres 的 PostgreSQL 容器。

容器設置

  • 名稱my-postgres
  • 鏡像名pgvector/pgvector:pg17
  • 端口
    • 暴露端口:5432
    • 注意:如果該端口已被佔用,請修改為其他可用的伺服器端口。
  • 網絡:選擇默認的 1panel 網絡即可。
  • IPv4 地址:留空
    • 請注意,不留空無法創建容器。

掛載卷設置

  • 宿主機目錄(本機目錄)/opt/1panel/apps/postgresql/my-postgre/data
  • 容器目錄/var/lib/postgresql/data

環境變數設置

PostgreSQL 環境變數設置

在創建 PostgreSQL 容器時,請設置以下環境變數:

POSTGRES_USER=admin
POSTGRES_PASSWORD=admin
PGDATA=/var/lib/postgresql/data

這些環境變數將幫助您配置 PostgreSQL 容器的用戶名、密碼和數據存儲位置。確保在創建容器時正確設置這些變數,以便順利運行 PostgreSQL。

  • 用戶名:請設置您的 PostgreSQL 用戶名。
  • 密碼:請設置您的 PostgreSQL 密碼。
  • 掛載目錄:確保掛載目錄正確配置。

使用 1panel 圖形化部署 LobeChat 服務端資料庫版

使用 1panel 圖形化部署 LobeChat 服務端資料庫版

檢測資料庫是否可用

  1. 通過 1panel 內置的資料庫功能,添加遠程伺服器。
  2. 點擊 有驗證,如果顯示可用,則表示資料庫已成功連接。

新建一個資料庫

在此步驟中,您需要新建一個資料庫,以便稍後使用。

連接 PostgreSQL 時的注意事項

  • 防火牆設置
    • 請確保防火牆已關閉,或者手動開放 PostgreSQL 的端口(通常是 5432)。
    • 這一點非常重要,否則您將無法通過內網的 IP 連接到資料庫。

確保遵循以上步驟,以便順利檢測和連接 PostgreSQL 資料庫。

使用 1panel 圖形化部署 LobeChat 服務端資料庫版

使用 1panel 圖形化部署 LobeChat 服務端資料庫版

支持 S3 協議的對象存儲服務 – MinIO

如果您已經擁有 S3 對象存儲,可以跳過當前這個步驟。

MinIO 的使用方式

使用 MinIO 非常簡單,主要步驟如下:

  1. 安裝 MinIO

    • 可以通過 1panel 一鍵安裝。
    • 在應用商店中搜索 MinIO 進行安裝。
  2. 創建桶

    • 安裝完成後,您需要創建一個桶(bucket)來存儲您的對象。
  3. 更改權限

    • 根據需要設置桶的訪問權限。
  4. 設置秘鑰

    • 設置相應的訪問秘鑰和密鑰,以便進行身份驗證。

端口設置

  • 端口
    • 如果端口被佔用,請修改端口設定。

外部訪問

  • 確保已開放相應端口以便外部訪問。

這樣,您就可以順利使用 MinIO 來支持 S3 協議的對象存儲服務。如果您有其他問題或需要進一步的幫助,請隨時告訴我!

新建一個桶

創建桶的步驟

  1. 進入 Buckets 頁面。
  2. 點擊 Create Bucket
  3. 輸入桶的名稱 Name,然後點擊 Create Bucket
  4. 將桶的訪問權限更改為 公共
    • 如果不設為公共,則無法訪問桶中的內容。

設置訪問策略

  1. Buckets 頁面中,選擇您剛創建的桶(例如:lobechat)。
  2. 點擊 Access Policy
  3. 選擇 Public

創建秘鑰

  1. 新建一個秘鑰,系統將會生成以下秘鑰:

    • Access KeyE4c8Q1iXg625sMBUJ0B5
    • Secret KeyhX7T0kGl0Pdg9v2B93DgvOk9MayNHhP9mopGUPuJ

使用 1panel 圖形化部署 LobeChat 服務端資料庫版

訪問域名

  • 訪問域名格式為:ip + 端口
  • 例如:http://10.255.255.242:9009

這樣您就能順利創建一個公共桶並設置訪問秘鑰。

受 LobeChat 支持的 SSO 登錄鑑權服務 – Casdoor

安裝步驟

  1. 一鍵安裝 Casdoor

    • 通過 1panel 的應用商店搜索 Casdoor 進行安裝。
  2. 端口設置

    • 如果端口被佔用,請修改端口設定。
    • 我這裡使用的端口為 8000
  3. 外部訪問

    • 確保已開放相應端口以便外部訪問。

注意事項

  • 由於我上方安裝的是 PostgreSQL 資料庫,這與 1panel 的一鍵安裝可能不兼容,因此需要特別注意。

這樣您就能順利安裝 Casdoor 作為 SSO 登錄鑑權服務。

以下是您提供的內容整理為 Markdown 格式:

創建 Casdoor 容器

1. 數據庫設置

  • 手動新建一個 PostgreSQL 數據庫,以下是設置參數:
    • 用戶名mycasdoor
    • 名稱mycasdoor
    • 密碼mEjT7KnFfAW44knZ

2. 容器設置

  • 名稱my-casdoor
  • 鏡像名casbin/casdoor: 版本
  • 端口
    • 默認暴露端口:8000
    • 如果端口被佔用,請修改為 8001
  • 網絡:選擇默認的 1panel 即可。
  • IPv4172.18.0.253(請根據您的實際地址進行調整,為了防止衝突,我使用最後幾個地址)。
  • 掛載
    • 本機目錄:/opt/1panel/apps/casdoor/mycasdoor/conf
    • 容器目錄:/conf(請注意是本機目錄,手動創建的不要重複)。

3. 環境變量設置

  • 設置以下環境變量:
plaintext
RUNNING_IN_DOCKER=true  # 告訴系統運行在容器中
dataSourceName=user=mycasdoor password=mEjT7KnFfAW44knZ host=10.255.255.242 port=5432 sslmode=disable dbname=mycasdoor
dbName=mycasdoor
driverName=postgres

4. 訪問界面檢測

  • 默認登錄用戶名:admin
  • 默認密碼:123

新建一個 Casdoor 應用

1. 添加應用

根據官方教程進行設置:

  • 身份認證 -> 應用 -> 添加

應用設置參數:

  • 名稱LobeChat
  • 顯示名稱LobeChat
  • 客戶端 ID86094cf0438b7df7d2db(自定生成,不需要填寫,下面要用)
  • 客戶端秘鑰0eb22f536455ddfdde06639652a8763ac3862db7(自定生成,不需要填寫,下面要用)
  • 重定向 URLshttp://10.255.255.242:3210/api/auth/callback/casdoor(LobeChat 服務地址,如果您更改了端口請注意修改)

2. 保存設置

  • 保存即可,其他設置可以保持默認。

搭建好後的注意事項

  • 確保端口已開放,並檢查防火牆設置,否則無法正常訪問。

開始安裝 LobeChat 數據庫版

1. 拉取 LobeChat 鏡像

按照以下步驟進行操作:

  1. 點擊 容器
  2. 點擊 鏡像
  3. 點擊 拉取鏡像
  4. 輸入鏡像名:lobehub/lobe-chat-database(不加版本則默認為最新版)。
  5. 點擊 拉取

2. 創建 LobeChat 數據庫容器

根據官方教程進行設置:

  • 名稱my-lobe-chat-database
  • 鏡像名lobehub/lobe-chat-database:latest
  • 端口
    • 默認暴露端口:3210
    • 如果端口被佔用,請修改為其他可用的伺服器端口。
  • 網絡:選擇默認的 1panel 即可。
  • IPv4172.18.0.251(請根據您的實際地址進行調整,為了防止衝突,我使用最後幾個地址)。

這樣您就能順利安裝 LobeChat 數據庫版。如果您有其他問題或需要進一步的幫助,請隨時告訴我!

環境變量:

# 你 LobeChat 访问的地址,请注意你的端口号是否正确
APP_URL=http://192.168.1.105: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
DATABASE_URL=postgres://lobe_chat_postgres:[email protected]:5432/lobe_chat_postgres

#SSO 必须的环境变量
#加密敏感信息的秘钥
NEXT_AUTH_SECRET=3904039cd41ea1bdf6c93db0db96e250
#你使用的 sso 的类型
NEXT_AUTH_SSO_PROVIDERS=casdoor
#不同类型的变量名称不同,请注意,下面是客户端 ID 和客户端秘钥
AUTH_CASDOOR_ID=c7c8efbc87681140e018
AUTH_CASDOOR_SECRET=42766e67b2e4f9c82ac27fb6264707590705f0f9
#填写 casdoor 访问地址即可
AUTH_CASDOOR_ISSUER=http://192.168.1.105:8000
#填写的 lobechat 的地址,请注意你的端口,要和前面 APP_URL 一样哦
NEXTAUTH_URL=http://192.168.1.105:3210/api/auth
#debug,用来看日志反馈
NEXT_AUTH_DEBUG=1

#s3 必须的环境变量
#id
S3_ACCESS_KEY_ID=VKx90CsvzZEPAtL8etPO
#秘钥
S3_SECRET_ACCESS_KEY=od6fPuicuIbGaHvnSS7PS2D7O3TFGFwBHScbl5DA
#minIO 访问的 API 地址,端口更改了请注意
S3_ENDPOINT=http://192.168.1.105:9001
#s3 桶名
S3_BUCKET=lobechat
#s3 访问地址,我这里没有做操作依旧是 api 的地址
S3_PUBLIC_DOMAIN=http://192.168.1.105:9001

正文完
 0