Bitwarden Self-host 搜尋愈來愈慢優化手段

以下針對「Bitwarden Self-host 搜尋愈來愈慢」常見成因與優化手段,提供一份逐步診斷/改善清單,方便你對症下藥。


一、先確認:搜尋其實分成兩段

階段 發生位置 影響因素 常見瓶頸
1. 資料同步 伺服器→用戶端 伺服器硬體、網路、資料庫大小 Docker 容器資源不足、資料庫碎片
2. 本地解密+搜尋 用戶端(瀏覽器擴充、桌面 App、行動裝置) 裝置 CPU / RAM、Bitwarden Client 版本 項目數量過大、舊版客戶端效能 bug

若你「登入後滑動、點擊項目都卡」,多半是 伺服器/資料庫
若只是「完全同步完畢後,輸入關鍵字 1-2 秒才跑出結果」,多半是 用戶端 記憶體或版本問題。


二、伺服器端優化

  1. 升級到最新 Self-host 版本

    cd ~/bitwarden
    ./bitwarden.sh updateself && ./bitwarden.sh update
    

    Bitwarden 每季都在改善 API 效能;新舊版本跨距過大時,資料庫結構也可能不同。

  2. 確保 Docker 容器資源

    • 最低建議:2 vCPU / 2 GB RAM;若庫存超過 1 萬筆或多人共用,建議 4 vCPU / 4 GB+ RAM。
    • SSD I/O 明顯提升搜尋前的同步速度。
  3. 定期維護 PostgreSQL / MSSQL
    (官方 Self-host 2023 版後預設用 PostgreSQL)

    docker exec -it bitwarden-postgresql psql -U vaultwarden vault
    VACUUM (VERBOSE, ANALYZE);
    REINDEX DATABASE vault;
    

    表大小暴增或大量刪改紀錄時,VACUUMREINDEX 能回收磁區、重建索引。

  4. 關閉不必要的容器/功能
    如果只自用,可在 docker-compose.yml 移除 identity, notifications 等非關鍵服務,減少 CPU 競爭。

  5. 考慮改用 Vaultwarden (Rust 寫的輕量版)

    • 同樣支援正式 Bitwarden Client,記憶體占用僅 ~100 MB。

    • 安裝方式簡單:

      docker run -d --name vaultwarden -e WEBSOCKET_ENABLED=true -v /bw-data/:/data/ -p 80:80 vaultwarden/server:latest
      

三、資料庫/庫存治理

做法 效果
清理舊附件:大檔案會拖慢同步 Web Vault →「附加檔案」篩選→刪除
分割保險櫃:組織 vs. 個人 減少單一 vault 項目量
定期「匯出 → 匯入」重建 產生乾淨資料庫、移除殘留碎片

四、用戶端效能調校

  1. 保持瀏覽器擴充 / Desktop App 為最新版
    2024.12 版後已針對大型 Vault 優化搜尋索引。

  2. 關閉即時圖標字數統計(Web 擴充 → 設定-進階)
    減少每筆輸入觸發即時運算。

  3. 行動裝置禁用「持續解密」
    設定 → 儲存空間 → 清除快取;讓 App 每次搜尋時重建記憶體索引,可避免長期累積導致的卡頓。


五、監測與持續改善

  • docker stats bitwarden*htop 觀察同步高峰時 CPU / Memory 佔用。
  • 借助 Grafana + PrometheusNetdata 對 Docker container 進行長期監控,能快速定位「到底是資料庫 IO 還是 App CPU」造成延遲。
  • 訂一個月一次的 VACUUM / REINDEX cron job,並排程備份 (pg_dump) 避免手動忘記。

結語

大多數「搜尋愈來愈慢」問題,80% 出在 伺服器資源與資料庫碎片,剩下 20% 是 客戶端未更新或載入的項目過多
先從 升級版本 → 資料庫維護 → 監控資源 做起,若仍不滿意,再考慮轉到 Vaultwarden 或升級硬體。這樣就能讓 Bitwarden Self-host 長期保持流暢。祝優化順利!