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 标记,请自行核实服务条款、价格和可用性,并遵守当地法律法规。