以下針對「Bitwarden Self-host 搜尋愈來愈慢」常見成因與優化手段,提供一份逐步診斷/改善清單,方便你對症下藥。
一、先確認:搜尋其實分成兩段
階段 | 發生位置 | 影響因素 | 常見瓶頸 |
---|---|---|---|
1. 資料同步 | 伺服器→用戶端 | 伺服器硬體、網路、資料庫大小 | Docker 容器資源不足、資料庫碎片 |
2. 本地解密+搜尋 | 用戶端(瀏覽器擴充、桌面 App、行動裝置) | 裝置 CPU / RAM、Bitwarden Client 版本 | 項目數量過大、舊版客戶端效能 bug |
若你「登入後滑動、點擊項目都卡」,多半是 伺服器/資料庫。
若只是「完全同步完畢後,輸入關鍵字 1-2 秒才跑出結果」,多半是 用戶端 記憶體或版本問題。
二、伺服器端優化
-
升級到最新 Self-host 版本
cd ~/bitwarden ./bitwarden.sh updateself && ./bitwarden.sh update
Bitwarden 每季都在改善 API 效能;新舊版本跨距過大時,資料庫結構也可能不同。
-
確保 Docker 容器資源
- 最低建議:2 vCPU / 2 GB RAM;若庫存超過 1 萬筆或多人共用,建議 4 vCPU / 4 GB+ RAM。
- SSD I/O 明顯提升搜尋前的同步速度。
-
定期維護 PostgreSQL / MSSQL
(官方 Self-host 2023 版後預設用 PostgreSQL)docker exec -it bitwarden-postgresql psql -U vaultwarden vault VACUUM (VERBOSE, ANALYZE); REINDEX DATABASE vault;
表大小暴增或大量刪改紀錄時,
VACUUM
與REINDEX
能回收磁區、重建索引。 -
關閉不必要的容器/功能
如果只自用,可在docker-compose.yml
移除identity
,notifications
等非關鍵服務,減少 CPU 競爭。 -
考慮改用 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 項目量 |
定期「匯出 → 匯入」重建 | 產生乾淨資料庫、移除殘留碎片 |
四、用戶端效能調校
-
保持瀏覽器擴充 / Desktop App 為最新版
2024.12 版後已針對大型 Vault 優化搜尋索引。 -
關閉即時圖標字數統計(Web 擴充 → 設定-進階)
減少每筆輸入觸發即時運算。 -
行動裝置禁用「持續解密」
設定 → 儲存空間 → 清除快取;讓 App 每次搜尋時重建記憶體索引,可避免長期累積導致的卡頓。
五、監測與持續改善
docker stats bitwarden*
或htop
觀察同步高峰時 CPU / Memory 佔用。- 借助 Grafana + Prometheus 或 Netdata 對 Docker container 進行長期監控,能快速定位「到底是資料庫 IO 還是 App CPU」造成延遲。
- 訂一個月一次的 VACUUM / REINDEX cron job,並排程備份 (
pg_dump
) 避免手動忘記。
結語
大多數「搜尋愈來愈慢」問題,80% 出在 伺服器資源與資料庫碎片,剩下 20% 是 客戶端未更新或載入的項目過多。
先從 升級版本 → 資料庫維護 → 監控資源 做起,若仍不滿意,再考慮轉到 Vaultwarden 或升級硬體。這樣就能讓 Bitwarden Self-host 長期保持流暢。祝優化順利!