Docker 搭建 Vaultwarden:自建 Bitwarden 密碼管理器完整教程(2026版)
在數字時代,我們擁有越來越多的賬號:郵箱、社交賬號、銀行賬戶、各種服務的登錄憑證……密碼管理已經成為每個人必須面對的問題。使用相同密碼不安全,記不同密碼又很痛苦。
Bitwarden 是一個開源的密碼管理解決方案,功能全面且價格透明。而 Vaultwarden(原 bitwarden_rs)是 Bitwarden 官方服務器的社區開源實現版本,用 Rust 重寫,資源佔用極低,部署簡單,非常適合個人或小團隊自建使用。
本文將帶你從零開始,用 Docker 部署屬於你自己的 Vaultwarden 密碼管理器,實現:
- 🔐 完全掌控:密碼數據庫存放在你的服務器上
- 🔄 多端同步:Web、桌面、移動端全平臺支持
- 🌐 瀏覽器擴展:一鍵填充登錄憑證
- 📱 手機端支持:iOS、Android 原生 App 同步
- 💾 數據備份:定期備份,永不丟失
- 🛡️ 安全加固:反向代理 + HTTPS + 雙因素認證
目錄
- Vaultwarden 與 Bitwarden 官方版對比
- 部署前準備工作
- Docker 與 Docker Compose 安裝
- Vaultwarden Docker Compose 部署
- Nginx 反向代理與 HTTPS 配置
- Caddy 反向代理(推薦方案)
- 初始化配置與管理員賬號
- 瀏覽器擴展安裝與使用
- 桌面客戶端與手機 App 配置
- 數據備份與恢復方案
- 安全加固最佳實踐
- 常見問題排查
1. Vaultwarden 與 Bitwarden 官方版對比
1.1 Vaultwarden 是什麼?
Vaultwarden(原 bitwarden_rs)是 Bitwarden 官方服務器的 Rust 語言重寫版本,完全兼容 Bitwarden 客戶端生態。它的核心優勢在於:
| 特性 | Vaultwarden | Bitwarden 官方版 |
|---|---|---|
| 開源協議 | AGPL-3.0 | 源碼可查看但不可商用 |
| 部署方式 | Docker 一鍵部署 | 需要官方訂閱或複雜部署 |
| 資源佔用 | 極低(內存 ~20MB) | 較重(需要多個組件) |
| 功能完整度 | 核心功能 100% | 完整功能 |
| 高級功能 | 大部分支持 | 全部功能(企業版) |
| 數據掌控 | 完全掌控在自己服務器 | 存儲在 Bitwarden 雲端 |
| 成本 | 免費(僅需服務器費用) | 個人版 $10/年 |
| 多用戶支持 | ✅ | ✅(企業版) |
| 組織(Organizations) | ✅ | ✅ |
| 雙因素認證 2FA | ✅ | ✅ |
1.2 Vaultwarden 支持的功能
✅ 賬戶註冊與管理
✅ 密碼保存與分類(收藏夾)
✅ 瀏覽器擴展自動填充
✅ iOS / Android 移動客戶端
✅ 桌面客戶端(Windows / macOS / Linux)
✅ 雙因素認證(2FA)- TOTP、電子郵件、YubiKey
✅ 密碼生成器
✅ 密碼健康檢查
✅ 附件上傳
✅ 組織(Organizations)與團隊共享
✅ 緊急聯繫人
✅ Web Vault 網頁界面
✅ API 支持1.3 為什麼選擇自建 Vaultwarden?
🎯 **隱私與安全**:密碼數據完全掌握在自己手中
🎯 **零廣告 / 零追蹤**:沒有數據收集,沒有第三方分析
🎯 **成本可控**:一臺廉價 VPS 即可運行,終身免費使用
🎯 **學習機會**:瞭解 Docker、反向代理、HTTPS 等運維知識
🎯 **自定義功能**:可以按需修改配置,啟用/禁用功能
🎯 **多端同步**:完全兼容 Bitwarden 客戶端生態2. 部署前準備工作
2.1 硬件要求
Vaultwarden 對硬件要求非常低:
| 配置 | 最低要求 | 推薦配置 |
|---|---|---|
| CPU | 1 核 | 1 核 或更高 |
| 內存 | 256 MB | 512 MB 或更高 |
| 磁盤 | 1 GB | 5 GB SSD |
| 網絡 | 穩定網絡連接 | 1 Mbps 上行帶寬即可 |
| 操作系統 | Linux(推薦)/ macOS / Windows | Ubuntu 22.04 LTS |
💡 實際上:一臺最低配置的 VPS(1核256MB內存)就能完美運行 Vaultwarden。我自己的 Vaultwarden 實例運行在一臺 1核512MB 的 VPS 上,內存佔用不到 30MB。
2.2 服務器選擇
推薦方案:
• 國內 VPS:騰訊雲輕量、阿里雲輕量(¥30-50/月)
• 國外 VPS:Vultr、DigitalOcean、Linode($3-5/月)
• 家裡服務器:樹莓派、小主機(完全免費)
注意事項:
• 國外服務器 + 國內訪問需要科學上網
• 建議選擇國外服務器部署,避免備案等問題
• 選擇穩定的服務商,數據安全第一2.3 域名與證書
必需:
• 一個域名(如 bitwarden.example.com 或 vault.example.com)
• HTTPS 證書(Let's Encrypt 免費證書即可)
推薦:
• 使用二級域名部署(如 bw.yourdomain.com)
• 避免使用主域名(方便後續擴展其他服務)2.4 環境準備清單
✅ 一臺 Linux VPS(推薦 Ubuntu 22.04 LTS)
✅ 一個指向該服務器的域名(A 記錄或 CNAME)
✅ SSH 登錄權限(root 或 sudo 用戶)
✅ 基本的 Linux 命令操作技能3. Docker 與 Docker Compose 安裝
3.1 更新系統
# 更新軟件包索引
sudo apt update
# 升級已安裝的軟件包
sudo apt upgrade -y
# 安裝必要依賴
sudo apt install -y curl wget git gnupg2 lsb-release ca-certificates3.2 安裝 Docker
# 安裝 Docker(使用官方一鍵腳本,最省事)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 將當前用戶加入 docker 組(免 sudo 執行 docker 命令)
sudo usermod -aG docker $USER
# 重新登錄或執行以下命令使組生效
newgrp docker
# 驗證安裝
docker --version
# 輸出類似:Docker version 27.0.0, build xxxxxx
# 啟動並設置開機自啟
sudo systemctl enable docker
sudo systemctl start docker
# 驗證 Docker 運行狀態
sudo systemctl status docker3.3 安裝 Docker Compose
Docker Compose 是一個用於定義和運行多容器應用的工具。
# 檢查是否已包含 docker compose(新版 Docker 已內置)
docker compose version
# 如果輸出錯誤,手動安裝 Docker Compose 插件
sudo apt install -y docker-compose-plugin
# 或安裝獨立版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 驗證
docker-compose --version4. Vaultwarden Docker Compose 部署
4.1 創建數據目錄
# 創建項目目錄
mkdir -p ~/vaultwarden/{data,nginx,caddy}
# 進入目錄
cd ~/vaultwarden4.2 創建 docker-compose.yml
# ~/vaultwarden/docker-compose.yml
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "127.0.0.1:8080:80" # HTTP(僅本地訪問,通過反向代理暴露)
- "127.0.0.1:3012:3012" # WebSocket 通知端口
volumes:
- ./data:/data # 數據持久化目錄
environment:
# ====== 基本配置 ======
- DOMAIN=https://bw.yourdomain.com # 你的域名,必須是 https
- SIGNUPS_ALLOWED=true # 是否允許新用戶註冊(首次部署開啟)
- SIGNUPS_DOMAINS_WHITELIST=yourdomain.com # 限制註冊郵箱域名(可選)
- INVITATIONS_ALLOWED=true # 是否允許邀請其他用戶
# ====== Web 界面配置 ======
- WEB_VAULT_ENABLED=true # 啟用 Web 界面
- SHOW_PASSWORD_HINT=false # 是否顯示密碼提示
# ====== 通知 / WebSocket ======
- WEBSOCKET_ENABLED=true # 啟用 WebSocket 實時通知
# ====== SMTP 郵件發送(重要!用於驗證郵箱和 2FA) ======
- SMTP_HOST=smtp.gmail.com # SMTP 服務器地址
- SMTP_FROM=noreply@yourdomain.com # 發件人郵箱
- SMTP_FROM_NAME=Vaultwarden # 發件人名稱
- SMTP_SECURITY=starttls # 加密方式:starttls 或 force_tls
- SMTP_PORT=587 # SMTP 端口
- SMTP_USERNAME=your-smtp-username # SMTP 用戶名
- SMTP_PASSWORD=your-smtp-password # SMTP 密碼
- SMTP_AUTH_MECHANISM=plain # 認證方式
# ====== 安全配置 ======
- ADMIN_TOKEN=your-admin-token-here # 管理面板令牌(設置後可訪問 /admin)
- DISABLE_ICON_DOWNLOAD=false # 是否禁用網站圖標下載
- IP_HEADER=X-Forwarded-For # 反向代理獲取真實 IP
# ====== 密碼嘗試限制 ======
- LOGIN_RATELIMIT_MAX_BURST=10 # 最大嘗試次數
- LOGIN_RATELIMIT_SECONDS=60 # 時間窗口(秒)
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3🎯 ADMIN_TOKEN 生成:
bash# 生成一個安全的管理員令牌(保存好,用於訪問 /admin 管理面板) openssl rand -base64 48 # 或使用以下命令 python -c "import secrets; print(secrets.token_urlsafe(64))"
4.3 啟動 Vaultwarden
# 在 docker-compose.yml 所在目錄執行
cd ~/vaultwarden
# 啟動容器(首次會拉取鏡像)
docker compose up -d
# 查看容器狀態
docker compose ps
# 查看容器日誌
docker compose logs -f vaultwarden4.4 驗證本地訪問
# 測試本地 8080 端口是否正常響應
curl -I http://127.0.0.1:8080
# 正常輸出類似:
# HTTP/1.1 200 OK
# content-type: text/html; charset=utf-85. Nginx 反向代理與 HTTPS 配置
5.1 安裝 Nginx 和 Certbot
sudo apt install -y nginx certbot python3-certbot-nginx5.2 申請 Let's Encrypt 證書
# 確保 Nginx 已啟動
sudo systemctl start nginx
sudo systemctl enable nginx
# 申請證書(替換為你的郵箱和域名)
sudo certbot --nginx \
--email your@email.com \
--agree-tos \
--no-redirect \
-d bw.yourdomain.com
# 測試自動續期
sudo certbot renew --dry-run5.3 創建 Nginx 配置文件
# /etc/nginx/sites-available/vaultwarden
server {
# HTTP 跳轉到 HTTPS
listen 80;
listen [::]:80;
server_name bw.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
# HTTPS 配置
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bw.yourdomain.com;
# SSL 證書路徑(Certbot 會自動填充)
ssl_certificate /etc/letsencrypt/live/bw.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bw.yourdomain.com/privkey.pem;
# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 日誌
access_log /var/log/nginx/vaultwarden_access.log;
error_log /var/log/nginx/vaultwarden_error.log;
# 反向代理到 Vaultwarden
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超時設置
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 300;
proxy_buffering off;
}
# WebSocket 通知
location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:8080;
}
# 管理面板訪問限制(可選,建議限制 IP)
location /admin {
# allow 192.168.1.0/24; # 允許的 IP 段
# deny all; # 拒絕其他所有 IP
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 安全頭
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
}5.4 啟用配置並重啟
# 啟用站點配置
sudo ln -s /etc/nginx/sites-available/vaultwarden /etc/nginx/sites-enabled/
# 測試 Nginx 配置是否正確
sudo nginx -t
# 重啟 Nginx
sudo systemctl restart nginx6. Caddy 反向代理(推薦方案)
如果你覺得 Nginx 配置太複雜,Caddy 是更簡單的選擇——它會自動申請和續期 HTTPS 證書。
6.1 使用 Docker Compose + Caddy 一鍵部署
# ~/vaultwarden/docker-compose.yml
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
volumes:
- ./data:/data
environment:
- DOMAIN=https://bw.yourdomain.com
- SIGNUPS_ALLOWED=true
- WEBSOCKET_ENABLED=true
- ADMIN_TOKEN=your-admin-token-here
- IP_HEADER=X-Forwarded-For
- SMTP_HOST=smtp.gmail.com
- SMTP_FROM=noreply@yourdomain.com
- SMTP_PORT=587
- SMTP_SECURITY=starttls
- SMTP_USERNAME=your-smtp-username
- SMTP_PASSWORD=your-smtp-password
caddy:
image: caddy:latest
container_name: vaultwarden-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/site:/srv
- ./caddy/caddy_data:/data
- ./caddy/caddy_config:/config
depends_on:
- vaultwarden6.2 創建 Caddyfile
# ~/vaultwarden/caddy/Caddyfile
bw.yourdomain.com {
# 主應用反代
reverse_proxy vaultwarden:80
# WebSocket 通知
reverse_proxy /notifications/hub vaultwarden:3012
# 安全頭
header Strict-Transport-Security "max-age=31536000; includeSubDomains"
header X-Content-Type-Options nosniff
header X-Frame-Options SAMEORIGIN
# 管理面板簡單保護(可選)
basicauth /admin/* {
admin JDJhJDEwJHBhc3N3b3JkaGFzaGVyZSByZXBsYWNlIG1l # echo -n 'password' | caddy hash-password
}
}6.3 啟動服務
cd ~/vaultwarden
docker compose up -d
# 查看日誌
docker compose logs -f💡 Caddy 的優勢:
- 自動申請和續期 Let's Encrypt 證書
- 自動啟用 HTTPS,無需手動配置 SSL
- 配置文件簡潔易懂
- 性能優秀,適合大多數場景
7. 初始化配置與管理員賬號
7.1 訪問 Web Vault
部署完成後,在瀏覽器中訪問你的域名:
https://bw.yourdomain.com你應該能看到 Bitwarden 的登錄界面。
7.2 創建管理員賬號
1. 點擊「創建賬戶」
2. 填寫郵箱地址(建議使用你自己的域名郵箱)
3. 設置主密碼(Master Password)——務必牢記!
4. 再次確認密碼
5. 填寫密碼提示(可選,建議留空或使用不相關的提示)
6. 點擊「創建賬戶」⚠️ 重要提示:
- 主密碼是解鎖所有密碼的唯一憑證,必須使用高強度密碼
- 建議使用至少 16 位,包含大小寫字母、數字和特殊字符
- 務必將主密碼保存在安全的地方(或記住它)
- 如果忘記主密碼,將無法恢復任何數據(這是設計特性,保護你的隱私)
7.3 訪問管理面板
訪問:https://bw.yourdomain.com/admin
輸入之前在 docker-compose.yml 中設置的 ADMIN_TOKEN
在管理面板中可以:
• 查看已註冊用戶列表
• 禁用/啟用用戶
• 刪除用戶
• 查看組織信息
• 修改系統配置
• 查看系統日誌7.4 關閉公開註冊(首次部署後推薦)
當你自己註冊完畢後,建議關閉公開註冊功能,防止陌生人註冊:
# 方法一:修改 docker-compose.yml 中的 SIGNUPS_ALLOWED
- SIGNUPS_ALLOWED=false
# 方法二:通過 /admin 管理面板設置
# 訪問 https://bw.yourdomain.com → General settings → Allow new signups
# 取消勾選後 Save
# 重啟容器使配置生效
docker compose restart8. 瀏覽器擴展安裝與使用
8.1 安裝瀏覽器擴展
Chrome / Edge:
Chrome 網上應用店 → 搜索 "Bitwarden" → 添加擴展
Firefox:
Firefox 附加組件商店 → 搜索 "Bitwarden" → 安裝
Safari:
Mac App Store → 搜索 "Bitwarden" → 安裝8.2 配置擴展連接自建服務器
1. 點擊瀏覽器工具欄中的 Bitwarden 圖標
2. 點擊「設置」或齒輪圖標
3. 在「服務器 URL」中輸入你的自建服務器地址:
https://bw.yourdomain.com
4. 點擊「保存」
5. 輸入你的郵箱和主密碼登錄
6. 完成!瀏覽器擴展即可自動填充密碼9. 桌面客戶端與手機 App 配置
9.1 桌面客戶端(Windows / macOS / Linux)
下載地址:https://bitwarden.com/download/
安裝後首次配置:
1. 打開 Bitwarden 桌面應用
2. 點擊「設置」
3. 服務器 URL → 輸入 https://bw.yourdomain.com
4. 保存後用郵箱和主密碼登錄9.2 iOS / Android 移動端
App Store(iOS)或 Google Play(Android)→ 搜索 "Bitwarden"
安裝後首次配置:
1. 打開 Bitwarden App
2. 點擊「設置」
3. 服務器 URL → 輸入 https://bw.yourdomain.com
4. 保存後用郵箱和主密碼登錄
5. 配置 Face ID / Touch ID / 指紋解鎖
6. 啟用自動填充功能9.3 多端同步演示
在一個設備上添加密碼 → 其他設備自動同步
工作原理:
1. 客戶端將加密後的密碼數據發送到服務器
2. 服務器存儲加密數據(服務器端無法解密,加密在客戶端完成)
3. 其他設備從服務器拉取最新數據
4. 客戶端用主密碼解密後顯示
💡 重要:加密在本地進行,服務器只存儲密文
即使服務器被入侵,黑客也無法獲取明文密碼10. 數據備份與恢復方案
10.1 數據目錄結構
~/vaultwarden/data/
├── db.sqlite3 # 主數據庫(最重要!)
├── db.sqlite3-shm # SQLite 共享內存文件(臨時)
├── db.sqlite3-wal # SQLite WAL 日誌(臨時)
├── attachments/ # 附件目錄(用戶上傳的文件)
├── sends/ # Send 功能數據
├── icon_cache/ # 網站圖標緩存
├── rsa_key.der # RSA 私鑰(簽名用)
├── rsa_key.pub.der # RSA 公鑰
└── config.json # 配置文件10.2 手動備份
# 停止容器(避免數據庫寫入衝突)
cd ~/vaultwarden
docker compose stop
# 創建備份目錄
mkdir -p ~/backups
# 備份數據目錄(帶時間戳)
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
sudo tar -czf ~/backups/vaultwarden_$BACKUP_DATE.tar.gz ./data/
# 重新啟動容器
docker compose up -d
# 查看備份文件
ls -lh ~/backups/10.3 自動備份腳本
創建自動備份腳本:
# ~/vaultwarden/backup.sh
#!/bin/bash
# Vaultwarden 自動備份腳本
BACKUP_DIR="/home/yourusername/backups"
VAULTWARDEN_DIR="/home/yourusername/vaultwarden"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="vaultwarden_$DATE.tar.gz"
RETENTION_DAYS=30
# 創建備份目錄(如不存在)
mkdir -p $BACKUP_DIR
# 停止容器
cd $VAULTWARDEN_DIR
docker compose stop
# 壓縮備份
tar -czf $BACKUP_DIR/$BACKUP_FILE ./data/
# 重啟容器
docker compose up -d
# 刪除 30 天前的舊備份
find $BACKUP_DIR -name "vaultwarden_*.tar.gz" -mtime +$RETENTION_DAYS -delete
# 輸出日誌
echo "[$DATE] 備份完成: $BACKUP_FILE" >> $BACKUP_DIR/backup.log# 設置腳本可執行權限
chmod +x ~/vaultwarden/backup.sh
# 測試備份腳本
cd ~/vaultwarden
./backup.sh10.4 設置定時任務
# 編輯 crontab
crontab -e
# 添加以下行(每天凌晨 3 點自動備份)
0 3 * * * /home/yourusername/vaultwarden/backup.sh
# 保存並退出
# 查看當前 crontab
crontab -l10.5 異地備份(推薦)
# 方案一:使用 rsync 同步到另一臺服務器
rsync -avz ~/backups/ user@backup-server:/path/to/backups/
# 方案二:使用 rclone 同步到雲存儲(如 Google Drive、OneDrive)
# 安裝 rclone
curl https://rclone.org/install.sh | sudo bash
# 配置雲存儲(按提示操作)
rclone config
# 同步備份文件
rclone sync ~/backups/ gdrive:vaultwarden-backups
# 添加到 crontab
30 3 * * * rclone sync ~/backups/ gdrive:vaultwarden-backups10.6 數據恢復
# 停止當前容器
cd ~/vaultwarden
docker compose down
# 備份當前數據(以防恢復失敗)
mv ./data ./data_backup_$(date +%Y%m%d)
# 從備份恢復數據
BACKUP_FILE="/path/to/backups/vaultwarden_20260612_030000.tar.gz"
tar -xzf $BACKUP_FILE
# 重啟容器
docker compose up -d
# 驗證數據
# 訪問 https://bw.yourdomain.com 登錄,檢查密碼是否恢復11. 安全加固最佳實踐
11.1 啟用雙因素認證(2FA)
強烈建議為你的賬號啟用雙因素認證:
1. 登錄 Web Vault: https://bw.yourdomain.com
2. 右上角個人資料 → 點擊「設置」
3. 「安全」→「兩步驗證」
4. 選擇「認證器應用」(推薦)
5. 用手機上的 Google Authenticator / Microsoft Authenticator 掃碼
6. 輸入驗證碼完成綁定
7. 保存恢復碼(打印或保存在安全位置)11.2 防火牆設置(UFW)
# 安裝 UFW
sudo apt install -y ufw
# 設置默認策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 開放 SSH(務必先開啟,否則會被鎖定)
sudo ufw allow 22/tcp
# 開放 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 啟用防火牆
sudo ufw enable
# 查看狀態
sudo ufw status verbose11.3 限制管理面板訪問
# 方法一:通過 Nginx 配置限制 IP(見第 5.3 節)
# 方法二:修改 docker-compose,不暴露管理面板端口(建議)
# 修改 docker-compose.yml:確保不直接暴露管理面板
# 所有訪問必須通過反向代理11.4 定期更新容器
# 檢查更新並一鍵更新
cd ~/vaultwarden
# 拉取最新鏡像
docker compose pull
# 重啟容器(使用新鏡像)
docker compose up -d
# 清理舊鏡像
docker image prune -f
# 建議每月執行一次,或設置為定時任務11.5 定期備份驗證
每月至少驗證一次備份的有效性:
1. 將備份恢復到測試環境
2. 檢查能否正常登錄
3. 驗證數據完整性(抽查幾個密碼條目)
4. 確認 2FA 工作正常11.6 防止暴力破解
Vaultwarden 內置的保護:
• LOGIN_RATELIMIT_MAX_BURST=10(10 次嘗試)
• LOGIN_RATELIMIT_SECONDS=60(每 60 秒重置)
額外建議:
• 使用 Fail2ban 監控 Nginx 日誌,自動封禁失敗嘗試
• 使用 Cloudflare 等 CDN 提供額外的 DDoS 保護
• 定期檢查登錄日誌(/admin 管理面板)12. 常見問題排查
12.1 無法訪問網站
排查步驟:
1. 檢查容器是否運行:docker compose ps
2. 檢查容器日誌:docker compose logs -f
3. 檢查 Nginx/Caddy 狀態:sudo systemctl status nginx
4. 檢查域名 DNS 解析是否正常:nslookup bw.yourdomain.com
5. 檢查防火牆是否開放端口:sudo ufw status
6. 測試本地訪問:curl -I http://127.0.0.1:808012.2 瀏覽器擴展無法登錄
排查步驟:
1. 確認服務器 URL 設置正確:https://bw.yourdomain.com
2. 檢查瀏覽器是否能正常訪問該網址
3. 清除瀏覽器緩存和 Cookie
4. 檢查是否有瀏覽器擴展(如廣告攔截)阻止連接
5. 檢查容器日誌查看登錄請求12.3 無法註冊 / 郵箱驗證失敗
排查步驟:
1. 檢查 SMTP 配置是否正確
2. 檢查郵箱賬號是否開啟了第三方登錄(如 Gmail 需要「應用專用密碼」)
3. 檢查 SMTP 端口是否被 VPS 服務商封禁(25 端口常被封)
4. 檢查容器日誌中的郵件發送錯誤
5. 嘗試使用其他郵箱服務商(如 SendGrid、Mailgun、騰訊企業郵箱)12.4 HTTPS 證書問題
排查步驟:
1. 檢查域名是否正確解析到服務器
2. 檢查 443 端口是否開放
3. 檢查證書是否過期:sudo certbot certificates
4. 手動續期:sudo certbot renew
5. 測試證書:https://www.ssllabs.com/ssltest/12.5 數據同步失敗
排查步驟:
1. 檢查 Vaultwarden 容器是否正常運行
2. 檢查容器日誌中的錯誤
3. 檢查 WebSocket 配置(通知功能)
4. 在客戶端手動觸發同步(下拉刷新)
5. 檢查客戶端是否使用了正確的服務器 URL12.6 忘記主密碼
⚠️ 無法恢復!這是 Bitwarden/ Vaultwarden 的設計特性。
建議:
1. 使用密碼提示(但不要讓提示過於明顯)
2. 將主密碼寫在安全的地方(物理保管)
3. 設置緊急聯繫人(家人/朋友)
4. 定期導出密碼庫作為備份
導出密碼庫:
Web Vault → 工具 → 導出保險庫 → 選擇格式(.json 或 .csv)→ 輸入主密碼
→ 保存文件到安全位置(建議加密後存儲)12.7 忘記管理員令牌
# 重新生成並更新 docker-compose.yml
openssl rand -base64 48
# 編輯 docker-compose.yml,替換 ADMIN_TOKEN
cd ~/vaultwarden
nano docker-compose.yml
# 重啟容器
docker compose up -d
# 現在可以用新令牌訪問 /admin總結
恭喜!你現在擁有了一個完全由自己掌控的密碼管理器。讓我們回顧一下整個部署流程:
1. 準備 VPS 服務器
2. 安裝 Docker + Docker Compose
3. 創建 docker-compose.yml 配置文件
4. 配置 Nginx/Caddy 反向代理 + HTTPS
5. 部署並啟動 Vaultwarden
6. 創建管理員賬號,啟用 2FA
7. 配置瀏覽器擴展和手機 App
8. 設置定期數據備份
9. 進行安全加固自建 Vaultwarden 的核心價值:
- 🔒 數據主權:你的密碼只存在於你的服務器
- 💰 零運營成本:除了 VPS 費用,完全免費
- 🚀 高性能低佔用:Rust 重寫,資源佔用極低
- 🔄 全平臺同步:兼容所有 Bitwarden 客戶端
- 🛡️ 端到端加密:服務器存儲的是密文,即使服務器被入侵也無法解密
📖 延伸閱讀:
延伸阅读
免责声明
本文仅供技术交流和学习参考。涉及第三方服务的链接可能包含 sponsored 标记,请自行核实服务条款、价格和可用性,并遵守当地法律法规。