Bitwarden Self-host Web Vault 載入失敗

1 ▸ 先用 DevTools 快速判斷是哪一層壞掉

觀察項目 判斷 典型 Console / Network 錯誤
靜態檔 *.js*.css200 OK,但 <app-root> 仍空白 前端(Angular)在執行階段拋例外 TypeError: Cannot read properties of undefined
main.*.jsvendor.*.js 變成 503 / 403,或被轉向到 challenge-platform/... Cloudflare/反向代理把檔案攔截或改寫 Failed to load resource: the server responded with a status of 503
/api/accounts/prelogin/identity/connect/token502 / 500 後端 container 沒起來或版本不一致 ERR_HTTP_RESPONSE_CODE_FAILURE

建議做法
① F12 → Network → 重新整理,只看「.js/.css/.woff」。
② Console 看第一條紅字,通常就能決定往「伺服器」還是「Cloudflare」或「瀏覽器」方向排查。


2 ▸ Cloudflare 常把 Angular 網站變黑畫面

Bitwarden Web Vault 是純前端 SPA,若 Cloudflare 對 *.jsRocket Loader、JS Challenge、HTML Minify 等改寫,Angular 找不到正確的 bundle 就會停在黑底 Logo 頁。

  • 確認是否啟用 Rocket Loader
    Cloudflare › Speed › Optimization → Rocket Loader = Off。
    Rocket Loader 已知會讓前端直接空白(其他社群案例亦相同)(Bricks Community Forum)
  • 把 Security Level / WAF 調低
    Cloudflare › Security → 設 Security Level = Essentially Off 或對 /app/*, /static/*, *.js, *.css 設 Page Rule「Disable Security」。
  • Purge Cache 後再試
    Cloudflare 有時會把舊版 main.xxx.js 緩存在 Edge,升級後檔名變了就找不到。

如果你必須保留 Cloudflare,可用 Configuration Rules 僅針對 /cdn-cgi/challenge-platform 以外路徑停用安全功能,避免整站裸奔。


3 ▸ 確認 Docker Stack & 版本一致

  1. 一鍵升級並重建

    cd ~/bitwarden
    ./bitwarden.sh updateself
    ./bitwarden.sh update      # 下載所有新映像
    ./bitwarden.sh rebuild     # 重新產生設定檔
    ./bitwarden.sh restart
    
  2. 檢查容器狀態

    docker ps --format 'table {{.Names}}\t{{.Status}}'
    

    web, api, identity, mssql(或 postgresql)都要是 Up 才行。

  3. 看 Log 有無 500 / 404

    docker logs bitwarden-api --tail 100
    docker logs bitwarden-identity --tail 100
    

    若錯誤是 “Cannot open database”,多半是版本升級後遺失 migration,rebuild 能自動補上。


4 ▸ 本地瀏覽器快取 / 擴充衝突

  • 硬重新整理 (Ctrl + F5) 或清除 Service Worker。
  • 無痕視窗 + 停用所有擴充 測一次,排除密碼管理器或內容阻擋外掛注入衝突。
  • 若有自行修改 bwdata/config.yml 路徑前綴,確認 globalSettings__webVaultBasePath 與 Nginx sub_filter 規則同步。

5 ▸ 最後手段:改用 Vaultwarden

若你只需個人 / 小團隊使用,可直接:

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

Rust 版本啟動速度快、佔用 < 150 MB,且前端程式碼完全相同,省去官方鏡像的多容器複雜度。


總結 Checklist

  1. DevTools 確認是哪層失敗
  2. Cloudflare:關 Rocket Loader / JS Challenge → Purge Cache。
  3. ./bitwarden.sh update && rebuild,確保所有容器版本一致。
  4. 瀏覽器硬刷 / 停用擴充 排除本機因素。
  5. 如果還是黑畫面,再檢查 Docker log 或考慮轉 Vaultwarden。

依照以上順序處理,通常能在十分鐘內讓 Web UI 復活。祝排錯順利!