// KNOWLEDGEBASE / LAYER-1
# Vaultwarden 密碼管理器部署與 Cloudflare Tunnel 安全外網穿透指南
在自建私有雲(Self-Hosted)的架構中,Vaultwarden(輕量化 Bitwarden)是管理核心憑證的標準配備。由於密碼管理器強制要求 HTTPS Web Crypto API 安全環境才能進行解密與同步,我們必須為其配置合規的 TLS 憑證。
本篇筆記將記錄如何使用 Cloudflare Tunnel (cloudflared) 進行零埠暴露(Zero exposed ports)的外網穿透,免去傳統路由器 Port Forwarding 的盲掃風險,並由 Cloudflare 邊緣節點自動搞定 HTTPS 憑證與防護。
1. Vaultwarden 預設**開啟帳號註冊**功能。若直接掛載上公網且未加限制,將面臨被他人當作免費密碼庫甚至爆破的資安漏洞!首次部署務必在建立管理員帳號後,將註冊功能關閉(SIGNUPS_ALLOWED=false)。
2. Cloudflare Tunnel 依賴本地的 cloudflared 容器與 Cloudflare 邊緣節點保持長連線,請確保該容器的重啟策略為 always。
01/ 雙容器 Docker Compose 編排架構
我們將 Vaultwarden 與 Cloudflare Tunnel 封裝在同一個 Docker 虛擬網路中。如此一來,Tunnel 容器可以直接利用 Docker 內部 DNS 解析 http://vaultwarden:80,**完全不需要將 Vaultwarden 的 80 埠映射到 TrueNAS 宿主機的實體埠上**,實踐極致的零埠暴露:
version: "3.7"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden-server
restart: always
environment:
- WEBSOCKET_ENABLED=true # 開啟 WebSocket 實現即時同步
- SIGNUPS_ALLOWED=true # ⚠️ 首次啟動先設為 true,註冊完第一個管理員帳號後務必改為 false
- WEB_VAULT_ENABLED=true
volumes:
- /mnt/WaterPool/apps/vaultwarden:/data
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflare-tunnel
restart: always
environment:
- TUNNEL_TOKEN=你的CLOUDFLARE_TUNNEL_TOKEN_在這裡
command: tunnel --no-autoupdate run
depends_on:
- vaultwarden
02/ Cloudflare 控制台穿透與 HTTPS 配置
部署容器前,我們需要取得上述 Compose 檔案中所需的 TUNNEL_TOKEN。請依序參考以下運維步驟:
- 登入 Cloudflare Zero Trust 控制台,導航至 Networks ➡️ Tunnels,點擊 Create a tunnel。
- 選擇 Cloudflared,命名你的 Tunnel(例如:
WaterNAS-Vault-Tunnel)並儲存。 - 在環境安裝頁面中,複製環境變數中
--token後方長串的 **Token 密鑰**,並將其填入上方 Compose 的TUNNEL_TOKEN中。 - 在 Public Hostname 標籤頁配置路由轉發:
- • Subdomain:
vault(或自訂子網域名) - • Domain:
你的網域名稱.com - • Type:
HTTP(Tunnel 與容器內部走明文即可) - • URL:
vaultwarden:80(直接調用 Docker 內部網域服務名)
- • Subdomain:
03/ 首次初始化與全面關閉註冊安全鎖
為確保密碼庫最高安全防護級別,請嚴格執行以下三步交握運維指令:
04/ 進階資安強固:Zero Trust 存取策略 (Access)
雖然我們關閉了註冊,但公開的登入介面仍可能遭遇暴力破解。運維人員應在 Cloudflare Zero Trust 中落實零信任應用防護:
-
🛡️ 啟用 Cloudflare Access 驗證牆:
在 Zero Trust 控制台的
Access ➡️ Applications中為 Vaultwarden 加設一道防線。限制只有特定 Email(例如你的 Ops 信箱)通過 Pin 碼或 OAuth 驗證後,瀏覽器才能看到密碼管理器的登入畫面。 - 🎯 WAF 規則地理位置防禦: 在 Cloudflare 安全設定中,建置邊緣防護規則(WAF),直接封鎖來自非常駐國家或高風險 IP 網段的所有請求。
-
💾 ZFS 資料集本地備份機制:
Vaultwarden 的所有密碼皆以 SQLite (或 PostgreSQL) 持久化存於本地 ZFS 掛載點(如:
/data)。運維人員應針對該儲存池開啟定期快照(Snapshot),以防資料損毀。