密碼不需要交給別人保管,自己架一個比雲端服務更安全。

Vaultwarden 是 Bitwarden 的輕量開源實作,把密碼管理器跑在自己的 NAS 上,資料不經過第三方服務器。用 Docker Compose 在 Synology 安裝 Vaultwarden,從設定到手機瀏覽器整合一次搞定。

在 Synology NAS 上架設 Vaultwarden:自架 Bitwarden 密碼管理器完整教學

Bitwarden 是公認最好用的開源密碼管理器之一,但它的官方雲端服務每個月仍需要付費才能解鎖進階功能。

Vaultwarden 是社群維護的輕量 Bitwarden 伺服器,完全相容官方的 Bitwarden App 和瀏覽器擴充,但可以部署在你自己的機器上。跑在 Synology NAS 的 Docker 裡,記憶體佔用不到 10MB,幾乎感覺不到它在跑。

密碼放在自己的 NAS 上,不需要信任任何第三方服務。


🎯 這篇適合誰

你的情況 建議先看哪段
想先了解 Vaultwarden 是什麼 先看「Vaultwarden 是什麼」
已決定裝,想直接看步驟 跳到「安裝步驟」
裝好了,想連上手機和瀏覽器 跳到「連接客戶端」
想從外部也能用 跳到「HTTPS 與對外存取」

🔐 Vaultwarden 是什麼

Vaultwarden 是 Bitwarden 伺服器的社群重新實作,用 Rust 寫成,資源消耗極低。它完全相容所有官方 Bitwarden 客戶端:

  • Bitwarden 瀏覽器擴充(Chrome、Firefox、Safari)
  • Bitwarden iOS / Android App
  • Bitwarden 桌面 App

你安裝的客戶端都是官方的,只是後端換成你自己的 Vaultwarden 伺服器。

Vaultwarden vs Bitwarden 雲端

項目 Bitwarden 雲端 Vaultwarden 自架
費用 免費版有限制,進階 USD $10/年 完全免費
TOTP(雙因素驗證儲存) 需付費 免費
緊急存取 需付費 免費
資料位置 在 Bitwarden 雲端 在你的 NAS
對外存取 內建 需要自己設定
維護責任 對方負責 自己負責

Vaultwarden 自架架構:所有客戶端透過 HTTPS 連線,密碼加密存在自己的 NAS


📋 安裝前準備

  • Synology DSM 7.2 以上,已安裝 Container Manager
  • HTTPS 強烈建議:Bitwarden 客戶端要求伺服器必須使用 HTTPS 才能正常連線。如果只在家裡區網用,可以先用 HTTP 測試;對外存取必須 HTTPS

設定 HTTPS 和反向代理可以搭配 Nginx Proxy Manager 教學,或使用 Cloudflare Tunnel


🛠️ 安裝步驟

1. 建立資料夾

在 File Station 建立:

/volume1/docker/vaultwarden/
└── data/

2. 建立 docker-compose.yml

/volume1/docker/vaultwarden/ 建立:

version: "3"

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    volumes:
      - /volume1/docker/vaultwarden/data:/data
    ports:
      - 8888:80
    environment:
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=true
    restart: always

安裝完成並建立帳號後,建議把 SIGNUPS_ALLOWED 改為 false,防止其他人在你的伺服器上註冊。

3. 啟動容器

Container Manager → 專案 → 建立,路徑選 /volume1/docker/vaultwarden,完成後等待啟動。

或 SSH 執行:

cd /volume1/docker/vaultwarden
docker compose up -d

4. 確認服務運作

瀏覽器開啟:

http://NAS的IP:8888

看到 Vaultwarden 的登入頁面即安裝成功。


🚀 初次設定

建立帳號

點「建立帳號」,填入 Email 和主密碼。

主密碼非常重要: Vaultwarden 沒有「忘記密碼」這回事。如果你忘記主密碼,資料庫裡的密碼全部無法解密。建議用一個你絕對不會忘的長密碼,並另外記錄在安全的地方。

關閉公開註冊

帳號建立完成後,修改 docker-compose.yml,把 SIGNUPS_ALLOWED 改為 false,再重新啟動容器:

environment:
  - WEBSOCKET_ENABLED=true
  - SIGNUPS_ALLOWED=false   # 改這裡

這樣其他人就無法在你的伺服器上建立帳號。

⚠️ 停用 Admin 頁面(重要)

Vaultwarden 有一個管理後台,網址是 http://NAS的IP:8888/admin預設狀態下它是停用的(因為你的 docker-compose.yml 裡沒有設定 ADMIN_TOKEN),這是正確的。

不要主動開啟 Admin 頁面。 它的風險點在於:

  • 一旦設定了 ADMIN_TOKEN,Admin 頁面就會對所有能連到你伺服器的人開放,Token 強度直接決定安全性
  • 如果 Vaultwarden 對外開放(透過反向代理或 Cloudflare Tunnel),Admin 頁面同樣對外可達
  • Admin 頁面有完整管理權限,包括刪除使用者、強制重設密碼等高危操作

正確做法:

  1. 不要在 docker-compose.yml 裡加 ADMIN_TOKEN,讓它保持停用狀態
  2. 如果你確實需要用 Admin 頁面做某項設定,用完後立刻移除 ADMIN_TOKEN 並重新啟動容器
  3. 想完全不顯示頁面,在反向代理封鎖 /admin 路徑(見下方)

絕大多數設定(關閉註冊、Email 設定等)都可以直接改 docker-compose.yml 的環境變數完成,不需要開 Admin 頁面。

用 Nginx Proxy Manager 封鎖 /admin

在 NPM 的 Vaultwarden Proxy Host 設定裡,進入 Advanced 分頁,加入:

location /admin {
    return 404;
}

儲存後,/admin 路徑會直接回傳 404,頁面完全消失。

用 Cloudflare WAF 封鎖 /admin

如果你的網域走 Cloudflare(包括 Tunnel 流量),可以用 WAF Custom Rules 擋掉:

  1. Cloudflare Dashboard → 你的網域 → 網路安全 → 安全性規則 → 自訂規則
  2. 點擊 建立規則,填入規則名稱(例如 Deny Vaultwarden Admin Page
  3. 填入條件: - 欄位URI 路徑 - 運算子萬用字元 - /admin*
  4. 動作封鎖
  5. 儲存並部署

Cloudflare WAF 自訂規則設定畫面

運算式預覽會顯示:(http.request.uri.path wildcard r"/admin*"),確認正確後儲存即可。

免費方案支援最多 5 條自訂規則,請求在 Cloudflare 邊緣就被攔截,流量連 NAS 都到不了。


📱 連接客戶端

瀏覽器擴充

  1. 安裝 Bitwarden 瀏覽器擴充
  2. 點擊擴充圖示 → 登入頁面左上角齒輪
  3. 伺服器 URL 填入:http://NAS的IP:8888(或你的 HTTPS 網址)
  4. 用你建立的帳號登入

手機 App

  1. 從 App Store / Google Play 安裝 Bitwarden
  2. 登入頁面點「自架伺服器」
  3. 伺服器 URL 填入你的 Vaultwarden 位址
  4. 登入

🌐 HTTPS 與對外存取

Bitwarden 客戶端在非 localhost 情況下要求 HTTPS。如果你想從家外面也能存取密碼,有兩個推薦做法:

方式 A:Cloudflare Tunnel(推薦,需驗證信用卡)

透過 Cloudflare 的加密通道對外暴露 Vaultwarden,自動獲得 HTTPS,不需要開放任何連接埠。詳細設定見這篇

方式 B:Nginx Proxy Manager + Let's Encrypt

透過反向代理自動申請 SSL 憑證,設定方式見 Nginx Proxy Manager 教學

方式 C:Tailscale(不需信用卡,僅限授權裝置存取)

只在你的裝置上安裝 Tailscale,就能透過加密的 mesh 網路連到 NAS,Vaultwarden 不需要對外開放,安全性更高。設定方式見 Tailscale 完整教學,設好後伺服器 URL 填入 NAS 的 Tailscale IP 即可。


💾 備份

Vaultwarden 的所有資料存在 /volume1/docker/vaultwarden/data/ 目錄。

用 Hyper Backup 把這個資料夾加入備份排程即可。密碼管理器的資料務必定期備份——一旦 NAS 硬碟故障又沒有備份,所有密碼就找不回來了。

Hyper Backup 設定方式可參考這篇


❓ 常見問題

Q1:Vaultwarden 安全嗎?

Vaultwarden 本身使用和 Bitwarden 相同的加密標準,密碼在客戶端加密後才傳到伺服器,伺服器本身看不到你的密碼明文。安全性的關鍵在於:你的 NAS 要有適當的存取控制,以及 HTTPS 加密傳輸。

Q2:可以多人共用嗎?

可以。Vaultwarden 支援「組織」功能,可以建立共用密碼庫,讓家人或團隊成員共享特定密碼。每個人各自有帳號,共用的部分只開放給組織成員。

Q3:Vaultwarden 壞了,裡面的密碼還能用嗎?

只要你有備份 /data 資料夾,還原後就能繼續使用。建議同時在 Bitwarden App 開啟「離線存取」,這樣即使伺服器暫時無法連線,仍可讀取已快取的密碼。

Q4:忘記主密碼怎麼辦?

目前沒有辦法。Vaultwarden 的加密設計讓伺服器無法代你解密。這是自架的代價——要自己妥善保管主密碼。

Q5:Admin 頁面 /admin 要開著嗎?

不需要,而且建議關閉。 預設安裝不設定 ADMIN_TOKEN 的話,Admin 頁面會自動停用。偶爾需要用到時再臨時啟用,用完立刻移除 Token 並重啟容器。詳細說明見上方「停用 Admin 頁面」


✨ 總結

Vaultwarden 是資源佔用最低、功能最完整的自架密碼管理方案之一。設定好之後,它在背景安靜地跑,幾乎不需要維護。

搭配 Cloudflare Tunnel 或 Nginx Proxy Manager 設好 HTTPS,你就有一個完全在自己掌控下的密碼管理器,功能不輸付費版的 Bitwarden 雲端。


🔗 延伸閱讀

這篇有幫助嗎? 密碼不需要交給別人保管,自己架一個比雲端服務更安全。