快轉到主要內容
自架開源密碼庫:Vaultwarden 自己管控帳號密碼資料
  1. Posts/

自架開源密碼庫:Vaultwarden 自己管控帳號密碼資料

·1334 個字·3 分鐘·
目錄

簡介
#

我個人原本一直使用 Google Password Manager,因為它實在太方便了。不過,密碼資料畢竟是由 Google 的掌握,對於資料掌控權與安全性仍然有所顧慮,因此我最後選擇自己架設開源密碼庫。

Vaultwarden 是一個輕量、開源的 Bitwarden 相容密碼管理伺服器,可自行架設來安全管理密碼與機密資料。

Bitwarden 本身就是一個大廠製作的開源密碼管理庫,有提供免費和付費方案,當然因為官方伺服器開源的關係,也可以自己架設官方維護的版本 bitwarden/server ,但官方的版本記憶體要求竟然要驚人的 2GB 至 4GB,而 Vaultwarden 是基於 Bitwarden 開源修改的,採用 Rust 重寫,比原版更輕量,實際記憶體使用量會依使用者數量、資料庫大小與部署環境而有所不同。

Vaultwarden 功能:

  • 儲存帳號密碼、Passkey、個人資訊與 TOTP 驗證碼
  • 在絕大多數瀏覽器、裝置上自動填入
  • 與 Bitwarden 原版客戶端相容

TOTP 是許多網站使用的雙因素驗證(2FA)驗證碼,Vaultwarden 可以直接儲存 TOTP Secret,在登入網站時自動填入生成的驗證碼。

基本上功能和市面上大多的 Password Manager 差不多。

Vaultwarden GitHub 頁面: dani-garcia/vaultwarden

Vaultwarden / Bitwarden 安全性
#

Vaultwarden / Bitwarden 採用端對端加密與零知識架構,密碼庫資料會以加密形式儲存在伺服器上,伺服器本身並不需要知道使用者的主密碼。不過,這並不代表自架服務「絕對安全」;主密碼強度、備份資料管控以及使用者自己的裝置仍然需要妥善保護。

Vaultwarden 架設教學
#

Vaultwarden 對於硬體設備的要求極低,以 Docker 部署的環境要求如下

  • 任意伺服器上,如需要外網存取需配置良好網路環境
  • Docker 環境
  • RAM: 依實際使用量而定,個人使用通常不需要大量記憶體(我的環境跑起來大約只用不到 500MB)
  • 硬碟空間: 100MB 以上 (取決於密碼庫大小)

開始架設
#

  1. 建立資料夾環境
mkdir vaultwarden/

nano docker-compose.yml
  1. docker-compose.yml 填入設定檔:
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://example.com"
    volumes:
      - ./vw-data/:/data/
    ports:
      - 8787:80

記得替換 DOMAIN: https://example.com 為自己的網域,應設定為使用者實際存取 Vaultwarden 的完整 HTTPS 網址。容器內部端口使用 80,機器端口可以依照自己的環境需求自訂,我用 8787 作為示範。

  1. 啟動伺服器
sudo docker compose up -d
  1. 放開防火牆(如果有的話)
sudo ufw allow 8787

即可成功在 [你的伺服器]:8787 看到 Vaultwarden 伺服器

外部安全存取你的密碼庫
#

如果需要在任何地方存取你的自架 Vaultwarden,你可以透過 Nginx 或任何反向代理伺服器配置,這裡不贅述。

另外,一定要記得完整配置 TLS 憑證、強制https連線,並且設定防火牆,避免透過IP可以直接存取等等,不然後果大家都知道的,如果服務直接暴露在未加密的 HTTP 連線上,登入資訊與其他敏感資料可能在傳輸過程中遭到竊聽或竄改。因此,只要 Vaultwarden 需要透過網際網路存取,就應該使用 HTTPS,並正確配置 TLS 憑證。

架設後初始化
#

使用電子郵件註冊一個帳號,設定安全的主密碼。

你的帳號/電子郵件資料只保存在這台伺服器上,電子郵件僅是在這台伺服器上辨識你的身分而已,沒有其他用途,並且跟 Bitwarden 官方伺服器不會有任何關係。

注意!如果這個密碼庫只有你/你信任的人要使用,則當他們都註冊完成後,在 docker-compose.yml 中的 environment 加入 SIGNUPS_ALLOWED: false 禁止註冊新帳號。

# docker-compose.yml
    environment:
      DOMAIN: "你的 domain"
      SIGNUPS_ALLOWED: false # 加入這個

如何使用 Bitwarden 官方的客戶端登入自架的 Vaultwarden 密碼庫
#

以 Bitwarden Android App 為例:只需在登入時選擇自架,填入自己伺服器的url即可。

總結
#

Vaultwarden 對於想自行掌控密碼資料的人來說,是一個相當輕量的選擇。透過 Docker 可以快速完成部署,再搭配 HTTPS、反向代理、備份與適當的防火牆設定,就能建立一套方便且具備良好安全性的自架密碼管理服務,還可以免去密碼資料掌握在第三方的困擾。

相關文章