自架 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 用戶端都可以在登入頁選擇伺服器:
- 在登入頁找到伺服器(或「登入至」)選項,選擇 自我裝載。
- 伺服器 URL 填
https://vault.example.com。 - 用你的電子郵件和主密碼登入。
瀏覽器擴充功能、桌面版和手機 App 都會在本機快取一份加密的密碼庫,伺服器短暫停機時仍能查看既有的項目。
管理後台(選用)
Vaultwarden 有一個 /admin 管理後台,可以查看使用者、刪除帳號、修改設定。沒有設定 ADMIN_TOKEN 時它是關閉的,我們建議保持關閉,需要時再開啟。
要開啟時,不要直接使用明文密碼。在 vaultwarden 服務的 指令 面板執行:
/vaultwarden hash
依提示輸入兩次密碼,它會輸出一串以 $argon2id$ 開頭的字串。把整串當作 ADMIN_TOKEN 的值儲存,重新啟動後用剛才輸入的密碼登入 https://vault.example.com/admin。
注意:在管理後台儲存的設定會寫入 /data/config.json,並覆蓋同名的環境變數。之後如果修改變數沒有生效,先檢查管理後台裡是不是也設定過。
備份
伺服器端的所有資料都在 /data 磁碟區裡。在 vaultwarden 服務的 備份與還原 中備份這個磁碟區:
- 挑一個沒有人在使用的時段,停止專案(磁碟區備份需要專案處於停止狀態)。
- 建立備份,完成後啟動專案。這幾分鐘內,用戶端仍能讀取本機快取。
- 下載一份備份自行保存。
備份檔包含加密後的密碼庫,但也包含附件和登入用的金鑰,請像保管密碼一樣保管它。另外建議每個人定期在網頁版用 工具 → 匯出密碼庫 匯出一份加密的 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 範本開始:先綁定網域,再註冊帳號、關閉註冊,最後安排好備份。
這是 coding agent 讀到的內容,網址是 https://zenavo.app/zh-TW/blog/self-host-vaultwarden.md。
無法載入 Markdown,請直接開啟: https://zenavo.app/zh-TW/blog/self-host-vaultwarden.md