自架 Vaultwarden 密碼管理器:網域、關閉註冊、團隊共享與備份

用 Zenavo 的範本把 Vaultwarden 部署到自己的伺服器上,綁定 HTTPS 網域,註冊後關閉公開註冊,設定電子郵件邀請同事,連接 Bitwarden 用戶端,並做好備份和升級。

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

Vaultwarden 是一個開源的密碼管理伺服器端,相容 Bitwarden 的官方用戶端:瀏覽器擴充功能、桌面版、手機 App 和命令列工具都能直接連上它。它用 Rust 撰寫,記憶體用量很小,一台小伺服器就足以讓整個團隊使用。

把密碼庫放在自己的伺服器上,代表資料不經過第三方的雲端;也代表網域、註冊開關、備份和升級都要自己負責。本文用 Zenavo 的 Vaultwarden 範本,從部署一路走到備份。

Vaultwarden 是社群專案,與 Bitwarden 公司沒有關係。

部署 Vaultwarden

先在 Zenavo 中連接一台 Linux 伺服器,再開啟 Vaultwarden 範本,選擇伺服器並部署。

目前範本的設定如下:

設定 值或用途
映像檔 vaultwarden/server:latest
HTTP 連接埠 80
持久化目錄 /data:SQLite 資料庫、附件、Send 檔案、登入用的金鑰和管理後台儲存的設定都在這裡

範本沒有預設任何環境變數。下面幾個步驟會把它們補齊。

先綁定網域,再註冊

Vaultwarden 的網頁版依賴瀏覽器的加密 API,只能在 HTTPS 下使用,所以註冊帳號之前先綁定網域。

在 vaultwarden 服務的 網路 頁為 80 連接埠綁定網域,例如 vault.example.com,在 DNS 新增指向伺服器的 A 記錄,等待 HTTPS 生效。步驟見網域文件。

接著在 變數 分頁新增:

DOMAIN=https://vault.example.com

儲存後重新啟動。DOMAIN 必須和你實際造訪的網址完全一致(包括 https://),郵件裡的連結和部分用戶端功能都依賴它。

建立帳號,然後關閉註冊

開啟 https://vault.example.com,點 建立帳號,設定電子郵件和主密碼。

主密碼無法找回。 Vaultwarden 只儲存加密後的資料,連伺服器管理員也解不開。忘記主密碼就等於失去整個密碼庫,請把它記在安全的地方,或開啟用戶端的生物辨識解鎖作為日常入口。

範本預設允許任何人註冊。團隊成員都註冊完之後,在 變數 中新增:

SIGNUPS_ALLOWED=false

儲存後重新啟動。之後只有受組織邀請的人才能加入(INVITATIONS_ALLOWED 預設開啟)。如果只想允許公司信箱註冊,也可以保留註冊,改用 SIGNUPS_DOMAINS_WHITELIST=example.com。

設定電子郵件(邀請同事時需要)

邀請成員、驗證電子郵件、新裝置登入通知都需要寄信。在 變數 中加入你的 SMTP 服務:

SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURITY=starttls
SMTP_FROM=vault@example.com
SMTP_USERNAME=你的 SMTP 使用者名稱
SMTP_PASSWORD=你的 SMTP 密碼

如果服務商使用 465 連接埠,把 SMTP_SECURITY 改成 force_tls。儲存後重新啟動。變數值在 Zenavo 中加密儲存,並對團隊的觀察者隱藏。

團隊共享:組織和集合

在網頁版點 新增組織,建立一個組織,再依用途建立集合,例如「伺服器」「第三方帳號」「財務」。把要共享的項目放進集合,再邀請成員並指定他們可以存取哪些集合。

成員接受邀請後,組織管理員還要在成員清單裡確認一次,對方才看得到共享的內容。這一步是為了交換加密金鑰,屬於正常流程。

連接 Bitwarden 用戶端

所有 Bitwarden 用戶端都可以在登入頁選擇伺服器:

  1. 在登入頁找到伺服器(或「登入至」)選項,選擇 自我裝載。
  2. 伺服器 URL 填 https://vault.example.com。
  3. 用你的電子郵件和主密碼登入。

瀏覽器擴充功能、桌面版和手機 App 都會在本機快取一份加密的密碼庫,伺服器短暫停機時仍能查看既有的項目。

管理後台(選用)

Vaultwarden 有一個 /admin 管理後台,可以查看使用者、刪除帳號、修改設定。沒有設定 ADMIN_TOKEN 時它是關閉的,我們建議保持關閉,需要時再開啟。

要開啟時,不要直接使用明文密碼。在 vaultwarden 服務的 指令 面板執行:

/vaultwarden hash

依提示輸入兩次密碼,它會輸出一串以 $argon2id$ 開頭的字串。把整串當作 ADMIN_TOKEN 的值儲存,重新啟動後用剛才輸入的密碼登入 https://vault.example.com/admin。

注意:在管理後台儲存的設定會寫入 /data/config.json,並覆蓋同名的環境變數。之後如果修改變數沒有生效,先檢查管理後台裡是不是也設定過。

備份

伺服器端的所有資料都在 /data 磁碟區裡。在 vaultwarden 服務的 備份與還原 中備份這個磁碟區:

  1. 挑一個沒有人在使用的時段,停止專案(磁碟區備份需要專案處於停止狀態)。
  2. 建立備份,完成後啟動專案。這幾分鐘內,用戶端仍能讀取本機快取。
  3. 下載一份備份自行保存。

備份檔包含加密後的密碼庫,但也包含附件和登入用的金鑰,請像保管密碼一樣保管它。另外建議每個人定期在網頁版用 工具 → 匯出密碼庫 匯出一份加密的 JSON,作為與伺服器無關的第二份副本。

備份要實際還原並核對過才算可靠。可以把備份還原到一個新專案,登入確認項目都還在。

升級

範本使用 latest 標籤,每次重新部署都可能拉到新版本。打算長期使用時,在服務 設定 的 來源 中把映像檔改成固定版本,例如 vaultwarden/server:1.37.5(以發行頁面上的版本為準)。升級前先備份,讀完發行說明再更換版本。

常見問題

網頁打不開,或顯示需要安全連線? 網頁版只能透過 HTTPS 使用。請確認網域已經綁定、憑證已經生效,而且是用 https:// 造訪。

我關閉了註冊,要怎麼再加人? 在組織裡邀請對方。設定好 SMTP 後,對方會收到邀請信;沒有 SMTP 時,受邀的電子郵件可以直接在網頁版註冊。

忘記主密碼怎麼辦? 無法找回,伺服器上沒有任何能解密的東西。只能刪除這個帳號重新註冊,原本的項目會遺失。這也是為什麼要定期匯出一份密碼庫。

手機上沒有即時同步? 網頁版和桌面版會透過 WebSocket 即時同步。手機 App 的推播通知需要到 bitwarden.com/host 申請安裝 ID 和金鑰,再設定 PUSH_ENABLED=true、PUSH_INSTALLATION_ID 和 PUSH_INSTALLATION_KEY。沒有設定時,手機 App 會在開啟或下拉重新整理時同步。

需要多大的伺服器? Vaultwarden 本身通常只占用幾十 MB 記憶體,和其他應用程式共用一台小伺服器完全沒問題。

從 Vaultwarden 範本開始:先綁定網域,再註冊帳號、關閉註冊,最後安排好備份。