Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bitwarden 自建伺服器部署專案

透過 Docker Compose 搭配 Cloudflare Tunnel 部署自建密碼管理伺服器,實現零開放 Port、免暴露 IP 的安全架構。

本專案提供三套部署方案,預設推薦 Vaultwarden(社群版、全功能免費、資源佔用最低)。

部署架構

本專案採用安全可靠的網路通訊架構,確保伺服器無需開放實體連接埠給外部網路。透過 Cloudflare Tunnel 建立反向的安全隧道,所有流量皆經過嚴格的加密與存取過濾。

flowchart LR
    A["各平台客戶端<br/>(網頁 / 桌面 / APP)"] -- "HTTPS 請求" --> B
    
    B(("**網際網路 Internet**<br/><br/>Cloudflare Edge<br/>WAF | DDoS 防護 | SSL 終止"))

    subgraph Local ["NAS / 伺服器主機內部 (Docker 虛擬網路)"]
        direction LR
        C["Cloudflared 容器<br/>(Tunnel Connector)"]
        D["Bitwarden 容器<br/>(Vaultwarden 等)"]
        E[("資料庫 / 持久化目錄<br/>bw-data/")]
        
        C -- "HTTP 反向代理" --> D
        D -- "讀寫" --> E
    end

    B -- "安全加密隧道<br/>(Cloudflare Tunnel)" --> C

    classDef edge fill:#fbf0e6,stroke:#ebb781,stroke-width:2px,color:#594430
    classDef local fill:#e6effb,stroke:#86aadb,stroke-width:2px,color:#32445c
    classDef client fill:#eaf4e9,stroke:#93c28f,stroke-width:2px,color:#355232
    classDef db fill:#f5f5f5,stroke:#bbbbbb,stroke-width:2px,color:#4d4d4d

    class B edge
    class C,D local
    class A client
    class E db
Loading

零知識加密模型

Bitwarden 採用零知識架構(Zero-Knowledge Architecture)——所有加解密作業完全在客戶端完成,伺服器端永遠不會接觸明文密碼。即使伺服器遭入侵,攻擊者取得的僅為無法解密的密文。

sequenceDiagram
    autonumber
    actor User as 使用者
    participant Client as 客戶端設備 (本地端)
    participant Server as 伺服器端 (遠端)

    Note over User,Server: 金鑰衍生與登入認證
    User->>Client: 輸入明文主密碼
    Note over Client: KDF (PBKDF2/Argon2id)
    Client->>Client: 衍生主金鑰 (MK) 
    Client->>Client: 產生認證雜湊值
    Client->>Server: 傳送認證雜湊值 (TLS)
    Server-->>Client: 驗證通過,回傳加密對稱金鑰 (SK)
    Client->>Client: 使用 MK 解密取得 SK

    Note over User,Server: 資料加密與同步 (寫入)
    User->>Client: 新增/修改密碼項目
    Client->>Client: 以 SK 進行 AES-256 加密
    Client->>Server: 傳送密文存檔 (TLS)
    Note right of Server: 伺服器僅儲存密文
    Server-->>Client: 同步成功

    Note over User,Server: 資料讀取與解密 (讀取)
    Client->>Server: 請求讀取資料
    Server-->>Client: 回傳密文資料
    Client->>Client: 以 SK 解密為明文
    Client-->>User: 呈現明文密碼
Loading

由於伺服器端不涉及解密,無論選擇哪套方案,密碼庫的加密安全性完全相同

三套部署方案

⭐ 社群版 Vaultwarden(預設) 官方 Lite 版 官方標準版
映像 vaultwarden/server ghcr.io/bitwarden/lite ghcr.io/bitwarden/self-host/*
容器數量 1 1 10(微服務架構)
維護方 社群 (dani-garcia) Bitwarden Inc. Bitwarden Inc.
最低記憶體 ~150 MB 200 MB 4 GB
資料庫 SQLite / MySQL / PG SQLite / MySQL / PG SQL Server 2022
需要 Installation ID
免費功能範圍 全功能免費 部分付費 部分付費
Tunnel 內部 Port bitwarden:80 bitwarden:8080 bitwarden-nginx:8080
所在目錄 根目錄 / lite/ standard/

詳細的硬體適配分析請參閱 方案評估文件

專案結構

bitwarden-server/
├── docker-compose.yml          # ⭐ Vaultwarden(社群版,預設推薦)+ Cloudflared
├── .env.template               # Vaultwarden 環境變數模板
├── .gitignore
├── bw-data/                    # 持久化資料目錄
├── lite/                       # 官方 Bitwarden Lite(單一容器輕量版)
│   ├── docker-compose.yml
│   ├── settings.env
│   ├── .env.template
│   └── .gitignore
├── standard/                   # 官方標準版(微服務架構,10 容器)
│   ├── docker-compose.yml
│   ├── settings.env
│   ├── .env.template
│   └── .gitignore
└── docs/                       # 建置文件
    ├── evaluation.md           # 方案評估與硬體分析
    ├── deployment.md           # ⭐ Vaultwarden 部署步驟(預設)
    ├── lite-deployment.md      # 官方 Lite 部署步驟
    ├── standard-deployment.md  # 官方標準版部署步驟
    ├── cloudflare-tunnel.md    # Cloudflare Tunnel 設定教學
    ├── precautions.md          # 安全注意事項與備份策略
    └── client-setup.md         # 客戶端設定指南

文檔導覽

共用步驟

順序 文件 說明
0 方案評估 DS224+ 硬體適配分析、加密架構說明
1 Cloudflare Tunnel 設定 建立隧道並取得 Token

依選擇的方案繼續

方案 文件
⭐ Vaultwarden(預設推薦) 部署步驟
官方 Lite 版 部署步驟
官方標準版(需 ≥ 4GB RAM) 部署步驟

部署後共用步驟

順序 文件 說明
3 安全注意事項 關閉公開註冊、Admin 面板、備份策略
4 客戶端設定 跨平台 Bitwarden 客戶端連線至自建伺服器

Vaultwarden Server Console 介面

vaultwarden Server Console

About

自建 Bitwarden 密碼管理伺服器 — Docker Compose + Cloudflare Tunnel 零開放 Port 部署方案(Vaultwarden / Lite / Standard 三套配置)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors