SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor · 已更新 2026-08-13

Vaultwarden 與 Bitwarden 自架版比較:該選哪一個?

Bitwarden 官方版需 2GB RAM 與 12 個容器,Vaultwarden 僅需單一容器且極低資源。本文分析兩者差異,協助您決定適合 VPS 的部署方案。

Vaultwarden 與 Bitwarden 自架版的實際定義

選擇 Vaultwarden 或 Bitwarden 自架版,是在選擇兩種支援相同客戶端 API 的伺服器,而非選擇兩種不同的密碼管理器。Bitwarden 官方架構在 nginx 後方執行約 12 個容器,將所有資料儲存在 Microsoft SQL Server,並綁定一個需透過電子郵件註冊的安裝識別碼(installation ID)。Vaultwarden 則是 Bitwarden 客戶端 API 的非官方重新實作,以 Rust 編寫,僅需一個容器與一個 SQLite 檔案即可運作。由於兩者回應相同的端點,您的瀏覽器擴充功能與手機應用程式無法分辨兩者的差異。

無論選擇哪種,加密方式皆完全相同。Bitwarden 客戶端會在資料離開裝置前完成加密,因此伺服器僅儲存無法讀取的加密區塊(blob),且兩者的保險庫格式皆屬於 Bitwarden。兩者的差異在於伺服器資源需求、程式碼維護者、付費功能項目以及備份內容。

Vaultwarden 的 README 文件對其定位說明得十分直接:「本專案與 Bitwarden 或 Bitwarden, Inc. 無關。」這是一個志願者專案,不提供技術支援服務,亦無任何保證。其中一位活躍維護者任職於 Bitwarden,並以個人時間進行貢獻,這屬於個人行為而非官方背書。

您可以安裝的三種堆疊

大多數比較分析都忽略了 Bitwarden 提供兩種不同的自架產品。

Bitwarden standard。由廠商發布的部署方式,透過 shell script 執行。

curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
  && chmod 700 bitwarden.sh
./bitwarden.sh install

安裝程式會詢問您的網域名稱、是否申請 Let's Encrypt 憑證、資料庫名稱,以及從 https://bitwarden.com/host 輸入電子郵件地址後取得的安裝 ID 與金鑰。./bitwarden.sh start 隨後會拉取映像檔並啟動堆疊。Bitwarden 官方文件建議最低需求為 2 GB RAM 與 12 GB 儲存空間,推薦規格為 4 GB RAM 與 25 GB 儲存空間,並需安裝 Docker Engine 26 或更新版本以及 Compose 外掛程式。資料庫使用 MSSQL Express 映像檔,除非您將部署指向外部資料庫,否則該版本會將關聯式資料庫限制在 10 GB 以內。

Bitwarden lite。此部署方式過去稱為 Bitwarden Unified。它已結束測試階段並於 2025 年 12 月更名。包含一個應用程式容器加上您選擇的資料庫:

services:
  bitwarden:
    depends_on:
      - db
    env_file:
      - settings.env
    image: ghcr.io/bitwarden/lite
    restart: always
    ports:
      - "80:8080"
    volumes:
      - bitwarden:/etc/bitwarden
  db:
    environment:
      MARIADB_USER: "bitwarden"
      MARIADB_PASSWORD: "super_strong_password"
      MARIADB_DATABASE: "bitwarden_vault"
      MARIADB_RANDOM_ROOT_PASSWORD: "true"
    image: mariadb:10
    restart: always
    volumes:
      - data:/var/lib/mysql
volumes:
  bitwarden:
  data:

它支援 MariaDB 或 MySQL、PostgreSQL、SQLite 與 MSSQL,需求為 200 MB RAM 與 1 GB 儲存空間。Bitwarden 官方文件提出兩點注意事項:此版本僅適用於個人使用與家庭實驗室,不建議商業用途;且不提供自動資料庫備份,該任務需由您自行負責。

Vaultwarden。單一容器,直接引用專案 README:

docker run --detach --name vaultwarden \
  --env DOMAIN="https://vw.domain.tld" \
  --volume /vw-data/:/data/ \
  --restart unless-stopped \
  --publish 127.0.0.1:8000:80 \
  vaultwarden/server:latest

publish 行將 8000 埠僅綁定至 loopback,這是刻意為之。Vaultwarden 提供純 HTTP 服務,並預期前方有反向代理負責終止 TLS (transport layer security)。在此處 TLS 並非選項:網頁版保險庫使用瀏覽器的 WebCrypto API 進行加密,而瀏覽器僅在安全環境下才會開放此 API,因此若透過純 http 連線,登入頁面在瀏覽器端就會失敗,請求甚至不會送達您的伺服器。完整的 Vaultwarden 安裝指南 涵蓋了代理伺服器與憑證的設定。

Vaultwarden 與 Bitwarden 自架版相比,記憶體用量為何?

廠商提供的最低需求僅代表安裝程式運作的門檻,而非軟體的實際負載。下表數據來自 docker stats --no-stream,測試環境為 Ubuntu 24.04 伺服器(配備 4 GB RAM),安裝皆處於閒置狀態,僅一名使用者、小型資料庫且無附件。磁碟用量包含映像檔與首次成功啟動後的資料目錄。

ChartIdle memory, container count and disk, measured on one Ubuntu 24.04 box
The data behind this chart
[
  {
    "label": "Vaultwarden (SQLite)",
    "idle_ram_mb": 58,
    "containers": 1,
    "disk_gb": 0.4
  },
  {
    "label": "Bitwarden lite + MariaDB",
    "idle_ram_mb": 470,
    "containers": 2,
    "disk_gb": 1.6
  },
  {
    "label": "Bitwarden standard (MSSQL)",
    "idle_ram_mb": "2,400",
    "containers": 12,
    "disk_gb": 6.5
  }
]

Vaultwarden 在單一容器中的閒置記憶體用量為 58 MB。標準版 Bitwarden 堆疊在 12 個容器中,閒置用量接近 2,400 MB,其中大部分記憶體由 MSSQL 容器佔用。Bitwarden lite 搭配 MariaDB 容器,用量則落在兩者之間,約為 470 MB。在採信這些數據前,請於您的伺服器執行相同指令,因為數值會隨使用者數量、附件與同步流量變動,且 MSSQL 的工作集(working set)會隨執行時間增長。

針對小型 VPS 的實務建議:Vaultwarden 搭配 SQLite 在 1 GB 方案即可順暢執行,而標準版 Bitwarden 堆疊則無法在該規格下啟動。在 2 GB 方案中,標準堆疊勉強符合官方最低需求,但留給作業系統的資源極少,容易觸發核心的 OOM (out of memory) killer。當 OOM killer 啟動時,dmesg 會列印出被終止的處理程序名稱,在此堆疊中通常為 sqlservr。建議為標準部署配置 4 GB 記憶體。

Vaultwarden 中有哪些付費功能是免費的?

執行 Bitwarden 伺服器本身無需費用,但付費功能在您上傳授權檔案前會保持鎖定狀態。個人進階帳號以及所有付費組織方案(家庭、團隊、企業)皆需要授權。您需從雲端網頁版保險庫下載授權檔案(個人帳號位於「設定」下的「訂閱」,組織則位於管理控制台的「帳單」下的「訂閱」),並將其上傳至您自己的執行個體。組織授權是針對儲存在 ./bwdata/env/global.override.env 中的安裝 ID 所核發。因此,自架組織仍需持有付費訂閱,並需連接 Bitwarden 雲端進行計費。

Vaultwarden 無需授權或訂閱即可啟用相同功能。專案 Wiki 列出了這些功能:

  • 組織、集合與群組
  • 檔案附件
  • 使用電子郵件、Duo、YubiKey 與 FIDO2 的兩步驟登入
  • 緊急存取 (Emergency Access)
  • Bitwarden Send
  • 個人 API 金鑰
  • 透過 OpenID Connect 進行 SSO

SSO 是其中最新的功能,需透過 SSO_ENABLEDSSO_AUTHORITYSSO_CLIENT_IDSSO_CLIENT_SECRET 進行設定。它僅用於驗證登入。Wiki 明確指出,使用者仍需輸入主密碼,且該密碼不受您的身分提供者控制,因為該密碼是用於衍生解鎖保險庫的金鑰。將 SSO_AUTHORITY 指向 自架 Authentik 身分提供者 的探索發行者 (discovery issuer),使用者即可在該處登入,隨後再以主密碼解鎖。該數值必須與探索端點回傳的 issuer 欄位一致,且結尾不得包含 /.well-known/openid-configuration 後綴。

您在 Vaultwarden 中無法獲得的是廠商支援。Bitwarden 持有 SOC 2 Type 2 與 ISO 27001 認證,發布第三方稽核報告,並營運私有的 HackerOne 漏洞懸賞計畫。這些認證涵蓋的是 Bitwarden 的程式碼與服務,而非您自行安裝的伺服器。若稽核人員要求您的密碼管理員背後必須有具名的供應商,那麼使用志工開發的重新實作版本將會難以說明。

官方 Bitwarden 應用程式能與 Vaultwarden 搭配使用嗎?

可以。Vaultwarden 實作了客戶端 API,因此瀏覽器擴充功能、桌面版應用程式、行動裝置應用程式以及內建的網頁版保險庫均可與其相容。在登入前,請務必於各客戶端的環境設定畫面中填入自架伺服器的 URL,而非登入後才設定。

有一項功能需要額外配置:行動裝置應用程式的推播通知。若未設定,應用程式僅會在開啟時或依據內建計時器進行同步,這意味著您在筆記型電腦上變更的密碼,必須等到手機端同步時才會更新。Vaultwarden 可使用 Bitwarden 的推播中繼服務,這需要從與官方安裝程式相同的 https://bitwarden.com/host 頁面取得安裝 ID 與金鑰。

PUSH_ENABLED=true
PUSH_INSTALLATION_ID=<your installation id>
PUSH_INSTALLATION_KEY=<your installation key>

位於歐盟區域的伺服器還需要 PUSH_RELAY_URI=https://api.bitwarden.euPUSH_IDENTITY_URI=https://identity.bitwarden.eu。在您花費數小時進行除錯前,請務必參考 Wiki 中記載的兩個注意事項。從 F-Droid 或 Neo Store 安裝的應用程式不支援 Firebase,無論伺服器如何設定,皆無法接收推播。若應用程式是在 Vaultwarden 1.30.2 之前進行連線的,則必須清除其應用程式資料,以便重新註冊推播權杖。

重新實作的安全性如何?

Bitwarden 擁有悠久且公開的審計歷史。Cure53 分別於 2018、2021、2022 與 2023 年進行審查。IOActive 與 Mandiant 於 2024 年審查了客戶端,Fracture Labs 在 2024 與 2025 年間涵蓋了網頁與網路評估,Unit 42 於 2025 年評估了行動應用程式,而蘇黎世聯邦理工學院(ETH Zurich)應用密碼學小組則於 2025 年審查了其密碼學實作。

Vaultwarden 同樣受到外部檢視,這讓那些認為無人關注的人感到驚訝。德國聯邦資訊安全局(BSI)委託 mgm security partners 於 2024 年 2 月至 5 月間,在 Caos 3.0 程式碼分析專案下進行測試,該審查將兩項發現評定為高風險。此外,ERNW 回報了一項影響 1.32.5 以下版本的身份驗證繞過漏洞(CVE-2024-55225),該漏洞已於 2024 年 11 月修復。2026 年 7 月發布的 1.37.0 版本,針對透過圖示端點(icon endpoint)進行的 SSRF(伺服器端請求偽造)、跨組織密碼存取以及目錄匯入時的組織政策繞過問題進行了修復。

這些歷史紀錄顯示該專案具備運作良好的漏洞揭露流程。同時也指出了一個持續出現問題的介面:管理頁面。因此,請將該頁面視為敏感項目。除非設定了 ADMIN_TOKEN,否則請保持關閉,且應儲存雜湊值而非明文權杖(token)。

docker run --rm -it vaultwarden/server /vaultwarden hash

上述指令會輸出一個 Argon2 PHC 字串(密碼雜湊競賽格式),請將其貼入 ADMIN_TOKEN。在啟用管理頁面之前,請務必先啟用 HTTPS,因為權杖會隨請求發送,若在明文 HTTP 連線上傳輸,路徑上的任何節點皆可讀取。請盡可能將 /admin 阻絕於公用網際網路之外,並搭配一般的伺服器強化措施,例如 限制伺服器的 SSH 存取

當官方 API 變更時會發生什麼問題

這是人們常低估的風險。Bitwarden 會發布客戶端軟體,而這些客戶端通常會在夜間透過應用程式商店自動更新。Vaultwarden 必須隨之跟進。當客戶端版本更新並變更了 API 協議時,若 Vaultwarden 未同步升級,就會與已更新的客戶端產生不相容,導致您未手動操作的裝置出現登入或同步失敗。

發布說明中就有具體的例子。Vaultwarden 1.37.0 指出:「此更新為支援 2026.7.0+ 版本客戶端所必需,請在回報任何相關問題前先進行更新。」截至 2026 年 8 月,目前的版本為 1.37.1,於 2026 年 7 月 29 日發布。

養成兩個習慣可讓維護工作變得單純。請鎖定特定的映像檔標籤(tag)而非使用 latest,這樣自動化的 pull 動作才不會在凌晨時分擅自升級您的伺服器。接著,請密切關注發布動態並謹慎執行升級,務必先閱讀說明,因為破壞性變更只會出現在那裡。例如,1.35.5 版本在升級後會使所有現有的雙重驗證(2FA)記憶權杖失效,導致使用者被迫登出他們原本以為已儲存的驗證步驟。

標準的 Bitwarden 部署也面臨類似的問題。升級過程透過 ./bitwarden.sh updateself./bitwarden.sh update 執行,且更新會套用資料庫遷移。在遷移前取得的備份無法作為遷移後資料庫結構的復原手段,因此請務必在備份時記錄對應的版本號。

備份,這是使用者真正遺失保險庫的地方

Vaultwarden 的資料目錄即為伺服器本體。請保留以下項目:

  • db.sqlite3
  • 每個 rsa_key* 檔案,包含 rsa_key.pemrsa_key.der
  • attachments/
  • config.json
  • sends/

容器執行時,請勿使用 cp 複製 db.sqlite3。SQLite 可能正處於寫入狀態,導致複製出的資料庫損毀,且在還原前無法察覺。請改用線上備份 API:

sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"

自 1.32.1 版本起,映像檔內建了 /vaultwarden backup 指令。無論採取何種方式,快照在移動前仍位於原始磁碟上,因此請透過 restic 快照至異地儲存 排程將其傳輸至外部。rsa_key 檔案與資料庫同樣重要:伺服器使用該金鑰簽署工作階段權杖(session tokens),若將資料庫還原至新產生的金鑰旁,會導致所有使用者登出,並使進行中的組織邀請失效。

Bitwarden 標準版具備更完善的備份機制。只要容器持續執行,mssql 容器會每晚將資料庫備份至 ./bwdata/mssql/backups 並保留 30 天,您也可以手動強制執行備份:

docker exec -i bitwarden-mssql /backup-db.sh

需保留的目錄包括 ./bwdata/env(環境變數,包含資料庫與憑證密碼)、./bwdata/core/attachments./bwdata/mssql/data 以及 ./bwdata/core/aspnet-dataprotection。最後一個目錄最常被忽略。它存放了框架層級的資料保護素材,包含驗證權杖與部分資料庫欄位;若還原資料庫時缺少此目錄,受保護的欄位將無法讀取。Bitwarden Lite 版完全不提供自動備份,因此選擇 Lite 版意味著您必須像管理 Vaultwarden 一樣,自行規劃資料傾印(dump)排程。

雙向遷移

遷移作業是透過客戶端而非伺服器執行,因為匯出與匯入皆為客戶端功能。這使得兩個方向的程序完全相同。

每位使用者需從網頁版保險庫或桌面應用程式進行匯出,在新的伺服器上建立帳號,再執行匯入。支援的格式包括純文字 .json、純文字 .csv、加密 .json,以及包含 JSON 與個別保險庫檔案附件的 .zip。信用卡、身分資訊、儲存的 passkeys 與 SSH 金鑰僅存在於 JSON 格式中,因此使用 CSV 遷移會導致這些資料遺失。任何匯出格式皆不包含垃圾桶項目或 Sends,且組織擁有的資料也不屬於個人匯出的一部分。

請將純文字匯出檔案視為即時的機密資料,因為它確實就是:您整個保險庫在磁碟上的明文備份。請在一次作業中完成匯出、匯入並刪除檔案。切勿透過電子郵件或聊天軟體傳送。

遷移過程中常見的一個陷阱是:綁定於您帳號的加密匯出檔案無法匯入至另一個帳號,而更換伺服器在定義上即代表使用不同的帳號。請選擇受密碼保護的匯出選項,該格式才具備可攜性。

從 Vaultwarden 遷移至 Bitwarden 標準版是較困難的方向,因為組織結構無法透過匯出檔案轉移。您必須在新的伺服器上重新建立組織、重新邀請使用者,並由每位使用者各自匯入其保險庫。請務必規劃維護視窗,避免在當天才發現此問題。

該選擇哪一個?

如果您是個人使用者、家庭或是在 1 GB 或 2 GB 的 VPS 上架設家用實驗室,請執行 Vaultwarden。組織功能、緊急存取(Emergency Access)與 Send 功能皆為免費,閒置記憶體佔用量約等於一個瀏覽器分頁,備份僅需一個 SQLite 檔案加上一個小型目錄。這些優勢使其成為自架密碼管理領域的主流選擇。

若有其他人在專業環境下依賴此服務,請執行 Bitwarden 官方伺服器:例如需要支援合約的公司、有指定供應商的合規性要求,或是您已付費使用的企業級功能。標準部署建議配置 4 GB 記憶體,並將授權檔案與安裝 ID 視為部署的一部分,而非僅是文書作業。

Bitwarden lite 處於尷尬的中間地帶。它是供應商提供的程式碼,且資源佔用極低,這確實具有吸引力,但 Bitwarden 將其定位於個人與家用實驗室使用,且不具備自動備份功能。您承擔了與 Vaultwarden 相同的維運負擔,卻無法享有其免費的功能集。若您認為供應商程式碼比功能更重要,且願意自行管理資料庫,則可選擇此方案。

如果您還在評估伺服器要託管哪些其他服務,更廣泛的自架服務清單 將此選項與其他競爭相同記憶體資源的服務並列,供您參考。

FAQ

Vaultwarden 作為正式密碼管理器是否足夠安全?

對於個人與家庭使用而言,在符合特定條件下是安全的。客戶端會在資料傳送至伺服器前進行加密,因此 Vaultwarden 永遠無法取得您的主密碼或任何明文資料。該軟體已通過外部審核:BSI 委託 mgm security partners 於 2024 年 2 月至 5 月間進行測試,ERNW 亦曾回報一項驗證繞過漏洞,該漏洞已於 1.32.5 版本修復。請務必保持版本更新,停用管理頁面或將其置於 Argon2 雜湊 ADMIN_TOKEN 保護之下,並僅透過 HTTPS 提供服務。若企業需要廠商支援或合規審計文件,則應部署 Bitwarden 官方伺服器。

與 Bitwarden 自架版相比,Vaultwarden 需要多少記憶體?

根據使用 docker stats --no-stream 測量的閒置安裝數據,使用 SQLite 的 Vaultwarden 在單一容器中約佔用 58 MB;而 Bitwarden 標準部署在 12 個容器中約佔用 2,400 MB,其中大部分資源由 MSSQL 資料庫佔用。Bitwarden 官方文件建議標準堆疊至少需 2 GB 記憶體,推薦 4 GB,輕量版則需 200 MB。Vaultwarden 可在 1 GB 的 VPS 上順暢執行並保有剩餘空間。

自架服務是否需要 Bitwarden 授權?

個人免費帳號無需授權,執行伺服器本身是免費的。若要解鎖個人進階功能或任何付費組織方案(包含家庭、團隊與企業版),則需要授權檔案。您可以從雲端網頁版儲存庫下載並上傳至您的實例;組織授權是針對儲存在 ./bwdata/env/global.override.env 中的安裝 ID 所核發。Vaultwarden 本身無需授權即可啟用組織功能。

未來可以從 Vaultwarden 遷移至 Bitwarden,或反向操作嗎?

可以,雙向皆可透過客戶端完成。每位使用者只需從網頁版或桌面版應用程式匯出儲存庫,並在建立新帳號後匯入至新伺服器即可。.zip 匯出格式包含個人儲存庫的附件,而 JSON 格式則包含信用卡、身分資訊、通行密鑰 (passkeys) 與 SSH 金鑰。垃圾桶項目與傳送 (Sends) 功能不包含在任何匯出格式中,且組織擁有的項目必須由擁有者分別匯出,因此請務必規劃在新伺服器上重新建立組織並重新邀請使用者。

#vaultwarden#bitwarden#password-manager#self-hosting#docker