SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

Vaultwarden 與 Bitwarden 自架伺服器怎麼選?

Bitwarden standard 最低需 2 GB RAM、12 GB 儲存空間,約十個容器;Vaultwarden 以單一容器和 SQLite 提供相同 API,適合資源有限的 VPS。

Vaultwarden 與 Bitwarden self-hosted 的實際定位

Vaultwarden 與 Bitwarden self-hosted 的差異,是在兩個使用相同用戶端 API 的伺服器之間做選擇,而不是在兩個密碼管理器之間做選擇。Bitwarden 自有的堆疊會在 nginx 後方執行約十個容器,使用 Microsoft SQL Server 儲存所有資料,並綁定到以電子郵件地址註冊的 installation ID。Vaultwarden 是以 Rust 撰寫的 Bitwarden 用戶端 API 非官方重新實作版本,會以單一容器搭配單一 SQLite 檔案執行。您的瀏覽器擴充功能和手機無法區分兩者,因為兩者都會回應相同的端點。

無論選擇哪一種, encryption 都相同。Bitwarden 用戶端會在資料離開裝置前先將 vault 加密,因此伺服器只會儲存無法讀取的 blob;在這兩種情況下,vault 格式都屬於 Bitwarden。差異在於您需要租用多少機器資源、由誰維護程式碼、哪些功能需要付費,以及您必須備份哪些資料。

Vaultwarden README 直接說明其狀態:「This project is not associated with Bitwarden or Bitwarden, Inc.」這是由志願者維護的專案,沒有支援服務台,也不提供保固。一名活躍維護者任職於 Bitwarden,並利用個人時間參與貢獻;這是出於善意的協助,不代表 Bitwarden 的背書。

可安裝的 3 種堆疊

多數比較忽略了 Bitwarden 提供 2 種不同的自架產品。

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 輸入電子郵件地址取得的 installation ID 和 key,以及您的區域(US 或 EU)。接著,./bitwarden.sh start 會提取映像檔並啟動整個堆疊。Bitwarden 文件將 2 GB RAM 和 12 GB 儲存空間列為最低需求,建議使用 4 GB RAM 和 25 GB 儲存空間,並使用 Docker Engine 26 或更新版本及 Compose plugin。資料庫使用 MSSQL Express 映像檔。除非將部署指向外部資料庫,否則此版本的關聯式資料庫上限為 10 GB。

Bitwarden lite。 這是過去稱為 Bitwarden Unified 的部署方式。它在 2025 年 12 月結束 beta 階段並更名。它由 1 個應用程式容器和您選擇的資料庫組成:

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 自己的文件提出 2 項注意事項。文件將其定位為個人使用和 home lab,而非商業用途;此外,它不會自動備份資料庫,因此必須完全由您負責。

Vaultwarden。 只有 1 個容器,直接依照專案 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

發布設定只將 8000 埠繫結至 loopback,這是刻意的設計。Vaultwarden 提供純 HTTP,並預期前方有反向代理負責 TLS termination(傳輸層安全性)。此處 TLS 並非可有可無:Web vault 使用瀏覽器的 WebCrypto API 進行加密,而瀏覽器只有在安全內容環境中才會提供這個 API。因此,透過純 http 存取時,登入頁面會先在瀏覽器中失敗,伺服器甚至尚未收到請求。完整的 Vaultwarden 安裝教學涵蓋代理伺服器與憑證設定。

Vaultwarden 與自架 Bitwarden 並用時需要多少 RAM?

供應商列出的最低需求,是安裝程式拒絕執行的下限,不代表軟體實際占用的資源。以下數據來自 docker stats --no-stream,測試條件為閒置安裝、每個安裝只有 1 位使用者、小型 vault 且沒有附件,執行於配備 4 GB RAM 的 Ubuntu 24.04 主機。磁碟用量包含映像檔,以及首次成功啟動後的資料目錄。

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 執行時間越長,其工作集通常會持續增加。

對小型 VPS 而言,使用 SQLite 的 Vaultwarden 在 1 GB 方案上可正常運作,標準 Bitwarden 堆疊則無法在該方案上啟動。2 GB 方案符合標準堆疊記載的最低需求,但留給作業系統的空間非常少,因此核心的 out of memory killer 可能實際觸發。觸發時,dmesg 會輸出一行訊息,指出遭到終止的程序;在此堆疊中,通常是 sqlservr。標準部署請配置 4 GB。如果同一台 VPS 還要承載不只一個 vault,請先估算其他服務的最低需求,再選擇方案,因為例如 PhotoPrism 或 Immich 這類相片伺服器所需的記憶體遠多於 Vaultwarden。不過,並非所有相鄰服務都如此耗用資源:例如會將 Jellyfin 媒體庫改造成 90 年代出租店風格的 Halcyon,只是依賴所指向媒體伺服器的瀏覽器前端,不會自行附帶資料庫。需要檢查的下限也不只有記憶體,因為用於遠端桌面工作階段的 RustDesk relay在 docker stats 中幾乎不占資源,卻會消耗方案提供的頻寬配額。

Vaultwarden 中哪些付費功能可以免費使用?

執行 Bitwarden 的伺服器不需付費,但在上傳授權檔案前,付費功能仍會鎖定。可自行代管的 Premium 個人帳戶,以及付費組織方案中的 Families 和 Enterprise,都需要授權檔案。(Bitwarden 不提供 Teams 的自架選項。)您可以從雲端 Web vault 下載授權檔案:個人帳戶位於 Settings,再進入 Subscription;組織則位於 Admin Console,再進入 Billing 和 Subscription。下載後,將檔案上傳至自己的執行個體。組織授權會綁定儲存在 ./bwdata/env/global.override.env 中的安裝 ID。因此,自架組織仍持有付費訂閱,也仍會連線至 Bitwarden 雲端處理計費。

Vaultwarden 不需授權,也不需訂閱,就能啟用相同功能。專案 wiki 列出以下功能:

  • 組織、集合與群組
  • 檔案附件
  • 使用電子郵件、Duo、YubiKey 和 FIDO2 的雙步驟登入
  • Emergency Access
  • Bitwarden Send
  • 個人 API 金鑰
  • 透過 OpenID Connect 的 SSO

SSO 是其中最新的功能,使用 SSO_ENABLED、SSO_AUTHORITY、SSO_CLIENT_ID 和 SSO_CLIENT_SECRET 進行設定。它只負責驗證登入身分。wiki 明確說明,仍然需要主密碼,而且主密碼不受身分提供者控制,因為系統會以該密碼衍生出解密 vault 的金鑰。將 SSO_AUTHORITY 指向 自架的 Authentik 身分提供者之 discovery issuer,使用者即可在該處登入,然後使用主密碼解鎖。此值必須符合 discovery endpoint 回傳的 issuer 欄位,並移除結尾的 /.well-known/openid-configuration suffix。

Vaultwarden 無法提供的是廠商支援。Bitwarden 具備 SOC 2 Type 2 和 ISO 27001 認證,會發布第三方稽核報告,也會執行私有的 HackerOne 漏洞獎勵計畫。這些項目涵蓋的是 Bitwarden 的程式碼與服務,而不是您安裝的伺服器。但如果稽核人員要求密碼管理器背後有明確的供應商,志願者重新實作的專案會很難說服對方。

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

可以。Vaultwarden 實作了用戶端 API,因此瀏覽器擴充功能、桌面應用程式、行動應用程式,以及隨附的 Web vault 都能連線使用。每個用戶端都必須在登入前,於環境設定畫面設定自架伺服器 URL,而不是登入後再設定。

其中有一項功能需要額外設定:向行動應用程式傳送推播通知。未啟用推播時,應用程式只會在開啟時或依照自身計時器同步。因此,您在筆記型電腦上變更密碼後,必須開啟手機上的應用程式,才會看到變更。Vaultwarden 可以使用 Bitwarden 的推播轉送服務,並需要從官方安裝程式使用的相同 https://bitwarden.com/host 頁面取得安裝 ID 和金鑰。

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

EU 區域的伺服器也需要 PUSH_RELAY_URI=https://api.bitwarden.eu 和 PUSH_IDENTITY_URI=https://identity.bitwarden.eu。Wiki 說明了兩個值得在除錯前先了解的陷阱。從 F-Droid 或 Neo Store 安裝的應用程式不支援 Firebase,無論伺服器如何設定,都不會收到推播。若應用程式在 Vaultwarden 1.30.2 之前已建立連線,必須清除其資料,讓應用程式重新註冊推播權杖。

重新實作的安全性如何?

Bitwarden 的稽核歷史悠久且公開。Cure53 曾於 2018、2021、2022、2023、2024 和 2025 年進行審查。2025 年的審查涵蓋瀏覽器擴充功能與自動填入覆蓋介面、核心應用程式、桌面應用程式、網頁保存庫,以及 RustCrypto crate 與 library。IOActive 和 Mandiant 於 2024 年審查了用戶端,Fracture Labs 於 2024 和 2025 年進行網頁與網路評估,Unit 42 於 2025 年評估了行動應用程式,ETH Zurich Applied Cryptography Group 則於 2025 年審查了密碼學。

Vaultwarden 也曾接受外部審查。這讓那些以為沒有人檢查它的人感到意外。德國聯邦資訊安全辦公室(BSI)在 2024 年 2 月至 5 月間,委託 mgm security partners 依 Caos 3.0 程式碼分析專案進行測試。該審查將 2 項發現評為高風險。除此之外,ERNW 回報了影響低於 1.32.5 版本的驗證繞過漏洞(CVE-2024-55225),並於 2024 年 11 月修復。1.37.0 版本於 2026 年 7 月發布修正,處理圖示端點的 SSRF(server side request forgery)、跨組織 cipher 存取,以及匯入目錄時繞過組織政策的問題。1.37.4 版本於 2026 年 10 月修復了另一批問題,主要是組織成員撤銷功能中的高風險缺陷,並包含雙因素驗證、組織邀請和附件相關問題。

這段歷史顯示,該專案具備可運作的漏洞揭露流程。它也指出反覆出現的攻擊面:管理頁面。因此,應將該頁面視為敏感功能。除非設定 ADMIN_TOKEN,否則它會保持停用。你應儲存雜湊值,而不是明文 token。

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

這會輸出 Argon2 PHC 字串(password hashing competition format),供貼入 ADMIN_TOKEN。啟用管理頁面前,先啟用 HTTPS,因為 token 會隨請求傳送,而明文 HTTP 連線中的明文 token 可被路徑上的任何裝置讀取。實務上的風險在於該 token 和備份檔案,而不是密碼學;針對執行中執行個體進行強化檢查會同時處理這兩項。盡可能不要讓 /admin 暴露在公用網際網路上,並搭配一般的主機強化措施,例如限制伺服器上的 SSH 存取。

官方 API 變更時會造成哪些問題

這是人們低估的風險。Bitwarden 發布用戶端,而這些用戶端會在夜間透過應用程式商店自動更新。Vaultwarden 必須跟上。當用戶端版本變更 API 契約時,尚未升級的 Vaultwarden 會遇到已經更新的用戶端,導致未經你操作的裝置開始無法登入或同步。

版本說明提供了一個具體範例。Vaultwarden 1.37.0 表示:「若要支援版本為 2026.7.0+ 的用戶端,必須進行此更新;在回報相關問題前,請先完成更新。」一個月後,於 22 August 2026 發布的 1.37.2,再次針對 2026.8.0 及更新版本的用戶端提出警告。因此,仍停留在 1.37.0 或 1.37.1 的伺服器,已經落後於應用程式。截至 9 October 2026,目前版本為 1.37.4,於 5 October 2026 發布;此前的 1.37.3 則於 13 September 2026 發布。

兩個習慣可以讓這件事維持單純。指定明確的映像標籤,不要使用 latest,這樣無人值守的 pull 就不會在凌晨 3am 將伺服器更新到其他版本。接著監控版本發布資訊,並先閱讀版本說明,再有計畫地升級,因為破壞性變更只會出現在那裡。以 1.35.5 為例,升級時會使所有既有的雙因素驗證記住我 token 失效,導致使用者從原本以為已儲存的登入狀態中登出。

標準 Bitwarden 部署則有相反方向的問題。升級會透過 ./bitwarden.sh updateself 和 ./bitwarden.sh update 執行,且更新程序會套用資料庫移轉。移轉前建立的備份,無法還原移轉後的結構描述,因此請建立備份,並記錄建立備份時的版本。

備份:人們實際遺失密碼庫的原因

Vaultwarden 的資料目錄就是伺服器本身。請保留以下項目:

  • db.sqlite3
  • 所有 rsa_key* 檔案,包括 rsa_key.pem 與 rsa_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 將快照備份至異地儲存空間,將備份送離這台伺服器。備份工作若悄悄停止執行,看起來就和從未存在過一樣,因此請讓計時器將自身的失敗狀態回報到你能注意到的位置;將自行託管的 ntfy 伺服器連接至 systemd OnFailure 單元就是用來處理這件事。rsa_key 檔案與資料庫同樣重要:伺服器使用該金鑰簽署工作階段權杖,因此將資料庫還原到新產生的金鑰旁,會使所有使用者登出,也會破壞正在處理中的組織邀請。

Bitwarden standard 會備份更多自身資料。只要容器正在執行,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 一樣,自行負責排程資料庫傾印。

雙向遷移

遷移是透過用戶端執行,而不是透過伺服器,因為匯出與匯入是用戶端功能。因此,兩個方向採用相同的程序。

每位使用者都從 Web vault 或桌面應用程式匯出資料,在新伺服器上建立帳戶,然後匯入資料。格式包括純文字 .json、純文字 .csv、加密 .json,以及包含 JSON 與個別 vault 檔案附件的 .zip。卡片、身分資料、已儲存的 passkey 與 SSH key 只有在 JSON 格式中才能保留,因此使用 CSV 遷移會在沒有提示的情況下遺失這些資料。任何匯出格式都不包含垃圾桶項目或 Sends,組織擁有的資料也不屬於個人匯出的內容。

請將純文字匯出視為現存的 secret,因為它就是如此:整個 vault 都以明文儲存在磁碟上。請在同一次操作中匯出、匯入並刪除檔案。絕對不要透過電子郵件或聊天工具傳送。

遷移途中有一個容易踩到的陷阱。與帳戶繫結的加密匯出無法匯入其他帳戶,而更換伺服器必然會使用不同的帳戶。請改用受密碼保護的匯出選項,因為這種格式可攜。

從 Vaultwarden 遷移至 Bitwarden standard 較為困難,因為組織結構不會隨匯出資料一同遷移。請在新伺服器上重新建立組織,再次邀請使用者,並由每位使用者匯入自己的 vault。請預先安排維護時段,不要等到當天才發現這項限制。

應該執行哪一個?

如果你是個人、家庭使用者,或在 1 GB 或 2 GB VPS 上執行家用實驗室,請選擇 Vaultwarden。Organizations、Emergency Access 和 Send 都免費提供,閒置記憶體用量大約相當於一個瀏覽器分頁,備份內容則是一個 SQLite 檔案加上一個小型目錄。這種組合正是它在自架密碼管理方案中占主導地位的原因。

當其他人依賴這項服務進行專業工作時,請使用 Bitwarden 自有伺服器。例如,公司需要支援合約、合規要求指定供應商,或你已經付費使用企業功能。標準部署應配置 4 GB 記憶體,並將授權檔案與安裝 ID 視為部署內容的一部分,而不是行政文件。

Bitwarden lite 位於兩者之間,定位較為尷尬。它是供應商提供的程式碼,資源負擔僅為完整版本的一小部分,確實很有吸引力;但 Bitwarden 將其定位為個人與家用實驗室用途,而且不提供自動備份。你必須承擔 Vaultwarden 的維運負擔,卻沒有 Vaultwarden 的免費功能。當供應商程式碼對你的重要性高於功能,而且你可以接受自行管理資料庫時,才選擇它。

如果你還在決定這台主機要託管哪些其他服務,更完整的自架服務清單會將這項選擇與其他競爭相同記憶體資源的服務放在一起比較。

FAQ

Vaultwarden 夠安全,可作為正式的密碼管理器嗎?

供個人與家庭使用時,在符合條件的情況下可以。用戶端會在保管庫送達伺服器前先加密,因此 Vaultwarden 不會取得您的主密碼或任何純文字資料。它也曾接受外部檢視:BSI 委託 mgm security partners 於 February 至 May 2024 期間進行測試,ERNW 回報的驗證繞過問題已在 1.32.5 修正。請保持版本最新,停用管理頁面,或讓它位於 Argon2 雜湊的 ADMIN_TOKEN 後方,並且只透過 HTTPS 提供服務。需要供應商支援或稽核文件的企業,應使用 Bitwarden 自有的伺服器。

Vaultwarden 需要多少 RAM?與 Bitwarden self-hosted 相比如何?

在使用 docker stats --no-stream 測量的閒置安裝中,Vaultwarden 搭配 SQLite 在一個容器中約使用 58 MB;Bitwarden 的標準部署則在 12 個容器中約使用 2,400 MB,其中大部分由 MSSQL 資料庫使用。Bitwarden 文件將標準堆疊的最低需求列為 2 GB,建議配置為 4 GB;Bitwarden lite 則需要 200 MB。Vaultwarden 可在 1 GB VPS 上執行,且仍有充足餘裕。

自行託管需要 Bitwarden 授權嗎?

免費的個人保管庫不需要。伺服器可免費執行。若要解鎖個人進階功能及付費組織方案,則需要授權檔案;Families 與 Enterprise 是 Bitwarden 允許自行託管的唯一組織方案。您可從雲端網頁保管庫下載授權檔案,再上傳至您的執行個體;組織授權會依據儲存在 ./bwdata/env/global.override.env 中的安裝 ID 核發。Vaultwarden 不需要授權,且會自行啟用組織功能。

之後可以從 Vaultwarden 轉移至 Bitwarden,或反向轉移嗎?

可以,兩個方向都能透過用戶端完成。每位使用者先從網頁保管庫或桌面應用程式匯出保管庫,在新伺服器建立帳戶後,再將資料匯入新伺服器。.zip 匯出格式會保留個人保管庫的附件;JSON 格式則會保留卡片、身分、通行金鑰與 SSH 金鑰。垃圾桶項目與 Sends 不包含在任何匯出格式中,組織擁有的項目也必須由擁有者個別匯出。因此,請預先規劃在新伺服器重新建立組織並重新邀請使用者。

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