自架 LobeHub:多人共用的 AI 對話平台,串接自己的模型 API

用 Zenavo 的範本把 LobeHub 連同 PostgreSQL、Redis 和 RustFS 檔案儲存部署到自己的伺服器上,綁定兩個網域,註冊後限制可註冊的電子郵件,串接 OpenAI、Claude 等模型服務商,並做好備份和升級。

本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。

LobeHub(前身為 LobeChat)是一個開源的 AI 對話平台:支援 OpenAI、Anthropic、Google、DeepSeek 等數十家模型服務商,有多使用者帳號、對話紀錄、檔案上傳、知識庫和智慧代理。介面完整,很適合為團隊或家人架設一個共用的 AI 入口。

伺服器端版本需要資料庫和檔案儲存,從零開始自己架設要設定不少東西。Zenavo 的 LobeHub 範本把這些都打包好了,本文從部署一路走到備份。如果只想用單一容器和 1 個網域架設更輕量的聊天介面,也可以參考 Open WebUI。

伺服器、Zenavo 平台和模型服務商的 API 分別計費;LobeHub 本身不提供模型,對話會送到你設定的服務商。

範本包含什麼

開啟 LobeHub 範本,部署後專案裡會有四個服務:

服務 用途
lobehub 應用程式本身,映像檔 lobehub/lobehub:2.3.3,HTTP 連接埠 3210
postgresql 帳號、對話、設定和加密儲存的 API Key,附全文搜尋擴充(ParadeDB,PostgreSQL 17)
redis 快取和工作階段
rustfs 相容 S3 的檔案儲存,存放上傳的圖片和檔案;連接埠 9000 是 S3 API,9001 是管理主控台

範本建議預留 2 GB 記憶體。資料庫密碼、登入加密金鑰(AUTH_SECRET)和 API Key 的加密金鑰(KEY_VAULTS_SECRET)都會在部署時自動產生。

準備兩個網域

LobeHub 需要兩個公開網址:

  • 應用程式網址,例如 https://chat.example.com,用來開啟 LobeHub;
  • 檔案儲存網址,例如 https://files.example.com,瀏覽器上傳和檢視圖片時會直接存取它。

先在 DNS 為這兩個子網域新增指向伺服器的 A 記錄。接著在 Zenavo 中連接一台 Linux 伺服器,開啟範本,填入這兩個網址(結尾不要加斜線),選擇伺服器並部署。

綁定網域

部署後分別綁定:

  1. 在 lobehub 服務的 網路 頁,為 3210 連接埠綁定 chat.example.com;
  2. 在 rustfs 服務的 網路 頁,為 9000 連接埠綁定 files.example.com。

網域必須和部署時填寫的一致。等 HTTPS 生效後開啟 https://chat.example.com。步驟見網域文件。

9001 是 RustFS 的管理主控台,不需要、也不建議綁定公開網域。

註冊帳號,然後限制註冊

開啟應用程式,用電子郵件和密碼註冊第一個帳號。

範本預設允許任何人註冊。如果只給團隊或家人內部使用,請在 lobehub 服務的 變數 中新增允許註冊的電子郵件或網域,儲存後重新啟動:

AUTH_ALLOWED_EMAILS=example.com,friend@gmail.com

可以填完整的電子郵件,也可以只填網域,以逗號分隔。之後不在名單上的電子郵件就無法註冊。

需要電子郵件驗證或找回密碼時,再設定 SMTP:

SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=noreply@example.com
SMTP_PASS=你的 SMTP 密碼
AUTH_EMAIL_VERIFICATION=1

使用 465 連接埠時,把 SMTP_SECURE 改成 true。不設定 SMTP 也能正常註冊和登入,只是無法寄出驗證信和重設密碼的信。

串接模型

有兩種方式,可以同時使用。

每個人填自己的 Key。 登入後開啟 設定 → AI 服務商,選擇服務商,填入 API Key,必要時填寫代理位址,再點檢查。Key 會用 KEY_VAULTS_SECRET 加密後存進資料庫,其他使用者看不到。

由管理員統一提供。 在 lobehub 服務的 變數 中設定服務商的 Key,所有使用者都能直接使用,不必自己填:

OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=sk-...

相容 OpenAI API 的服務商或閘道,可以用 OPENAI_PROXY_URL 改位址,例如指向你自架的 New API、Magpie 或 LiteLLM 閘道 https://api.example.com/v1,再用閘道為 LobeHub 單獨發一把有額度限制的金鑰。想為 LobeHub 加上免費的即時聯網搜尋,還可以在同一個專案裡加入自架的 SearXNG 元搜尋引擎;想把個人助理接進 Telegram 或 Discord,可搭配 OpenClaw。

統一提供的 Key 會被所有能登入的人使用,並消耗你的額度。 設定之前,請先依照上一節限制註冊。

關於上傳的檔案

上傳的圖片和檔案存放在 rustfs 的 lobe 儲存桶裡。範本把這個儲存桶設為公開可讀,讓瀏覽器可以直接顯示圖片:知道檔案網址的人不需要登入就能開啟它。網址裡含有隨機路徑,不會被列出或搜尋到,但請不要上傳你無法接受被人透過連結開啟的敏感檔案。

送給模型的圖片會轉成 base64 直接放進請求裡(範本設定了 LLM_VISION_IMAGE_USE_BASE64=1),所以模型服務商不需要能存取你的檔案網域。

備份

需要備份的有兩部分:

  • postgresql:帳號、對話、設定和加密的 Key 都在這裡。在它的 備份與還原 中隨時都能備份,不必停機,也可以設定自動備份。
  • rustfs:上傳的檔案。這是磁碟區備份,需要專案處於停止狀態,適合在維護時段進行。

還有一樣東西要另外保存:lobehub 服務變數裡的 KEY_VAULTS_SECRET。把資料庫還原到新的部署時,必須使用同一個值,否則存在資料庫裡的 API Key 將無法解密。部署後不要修改它。

備份要實際還原並核對過才算可靠。重要的資料,請再下載一份備份自行保存。

升級

範本固定使用 lobehub/lobehub:2.3.3。升級前先讀 LobeHub 的發行說明,備份 postgresql,再到 lobehub 服務 設定 的 來源 中把映像檔標籤改成新版本並部署。資料庫結構會在啟動時自動遷移,所以升級前務必先備份。

常見問題

開啟頁面後,登入跳轉出錯? 檢查 lobehub 綁定的網域是否與部署時填寫的應用程式網址完全一致,包括 https://,而且結尾沒有斜線。如果改過網域,請在 lobehub 服務的 變數 裡把 APP_URL(檔案儲存網址則是 S3_ENDPOINT)改成新網址,再重新啟動。

上傳圖片失敗? 多半是 files.example.com 沒有綁定到 rustfs 的 9000 連接埠,或 HTTPS 憑證還沒生效。在瀏覽器直接開啟這個網域,能連上(即使顯示錯誤訊息)就代表綁定正確。

AI 回覆是空的或出現錯誤? 先在 設定 → AI 服務商 裡點檢查,確認 Key 和模型可以使用。使用第三方代理時,留意位址是否需要以 /v1 結尾。

需要多大的伺服器? 範本建議為 LobeHub 預留 2 GB 記憶體,加上 PostgreSQL、Redis 和 RustFS,建議使用 4 GB 記憶體以上的伺服器。模型推論在服務商那端進行,不會占用你伺服器的 CPU。

從 LobeHub 範本開始:準備好兩個網域,部署後先限制註冊,再串接模型。