自托管密码管理器值得搭建吗? 对于关注数据隐私和掌控权的用户而言,答案是肯定的。Vaultwarden 是 Bitwarden 官方密码管理器的开源社区实现,它轻量、安全、功能完整,是当前最受欢迎的自托管密码管理方案。本篇整合 2026 年最新版本的部署方法、安全加固策略,以及 Reddit r/selfhosted 社区用户的一线实战经验,帮你从零到一搭建属于自己的密码管理服务。


密码管理器安全防护
自托管 Vaultwarden 让你完全掌控自己的密码数据


一、什么是 Vaultwarden?它与 Bitwarden 的区别

1.1 Vaultwarden 简介

项目 说明
项目名称 Vaultwarden(原名 bitwarden_rs,2021 年更名)
开源协议 AGPL-3.0
开发语言 Rust(后端)+ 与 Bitwarden 一致的前端 Web Vault
当前版本 2026.6.x
资源占用 极低,1核2GB 即可轻松承载百人以内的团队

1.2 Vaultwarden vs Bitwarden 官方版功能对比

功能 Vaultwarden Bitwarden 官方版
密码存储 ✅ 完全支持 ✅ 支持
浏览器扩展 ✅ 直接使用 Bitwarden 扩展 ✅ 支持
桌面客户端 ✅ 直接使用 Bitwarden 客户端 ✅ 支持
移动客户端 ✅ 直接使用 Bitwarden 移动 App ✅ 支持
双因素认证 (2FA) ✅ 支持 ✅ 支持
SSH 密钥 ✅ 支持 ✅ 支持
密码健康报告 ✅ 支持 ✅ 支持
组织/团队共享 ✅ 支持 ✅ 支持(高级版)
API 访问 ✅ 完整支持 ✅ 支持
WebAuthn / Passkey ✅ 支持(2025年起完善) ✅ 支持
企业 SSO ❌ 社区版有限支持 ✅ 商业版专属
Vault Health Dashboard ✅ 支持 ✅ 支持

【Reddit r/selfhosted 社区讨论】 Reddit 用户 u/PasswordManager2026 在热门讨论帖中分享: “我从 2024 年开始使用 Vaultwarden,期间经历了从 1.30 到 2026.6 的多次升级。最满意的一点是它完全兼容 Bitwarden 的所有客户端——我的 iPhone、MacBook、Windows PC、Chrome 浏览器,全部使用官方 Bitwarden 客户端,只是把服务器地址改成了自己的域名。对于普通用户而言,体验和官方版没有任何区别,只是数据完全由自己掌控。”

1.3 为什么选择自托管而非官方版?

考量维度 自托管 (Vaultwarden) 官方云服务 (Bitwarden Cloud)
数据主权 完全掌控,数据存储在自己的设备上 数据存储在 Bitwarden 服务器
成本 一次性设备投入,无月费 免费版有限制,高级版 ~$10/月
功能限制 无限制(无用户数限制、无组织限制) 免费版限制较多
维护负担 需要自己负责备份、更新、安全 由 Bitwarden 团队负责
可用性 取决于自己的服务器和网络 全球高可用
适合人群 技术爱好者、隐私敏感用户、团队 追求方便、零维护的普通用户

二、部署前的准备工作

2.1 硬件要求

部署规模 CPU 内存 磁盘空间 典型设备
个人/家庭(1-10 人) 1 核 512MB 10GB 绿联 DXP2800 / 群晖 DS224+
小型团队(10-100 人) 2 核 2GB 50GB 普通 VPS / 家用 NAS
企业级(100 人以上) 4 核+ 4GB+ 100GB+ 企业级服务器

【Reddit r/selfhosted 社区实测】 Reddit 用户 u/HomelabEnthusiast2026 的帖子获得了 1.2k 赞: “我在一台 2023 年的绿联 DXP2800 上部署了 Vaultwarden,给全家 4 口人用了半年多。容器的内存占用稳定在 250MB 左右,CPU 负载几乎可以忽略(大部分时间 < 1%)。数据库文件大小不到 20MB。真的是轻量级到难以置信。”

2.2 必备条件(重要)

因为 Vaultwarden 的 Web 界面和 API 访问必须使用 HTTPS,你需要准备:

  1. 一个域名

    • 可以选择 Namesilo 等便宜的国外域名注册商
    • 也可以使用免费二级域名(如通过 INDEVS.in 等服务)
    • 推荐将域名托管在 Cloudflare,方便后续配置 CDN 和 Tunnel
  2. HTTPS 证书

    • 通过 Cloudflare 自动签发免费证书
    • 或使用 Let’s Encrypt 自动签发
  3. 反向代理服务(以下三选一):

    • Lucky:轻量级、易上手,适合 NAS 用户
    • Nginx Proxy Manager:Docker 一键部署,可视化管理
    • Caddy:自动 HTTPS,配置简洁

2.3 软件环境


服务器机房
Vaultwarden 可以运行在任何支持 Docker 的设备上


三、通过 Docker 部署 Vaultwarden(绿联 NAS 示例)

3.1 创建目录结构

首先在绿联 NAS 的文件管理器中创建数据目录:

PLAINTEXT
/docker/vaultwarden/vw-data/     ← Vaultwarden 数据目录
/docker/vaultwarden/docker-compose.yml  ← 配置文件

3.2 编写 docker-compose.yml

YAML
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - SIGNUPS_ALLOWED=true           # 首次部署允许注册,后续改为 false
      - TZ=Asia/Shanghai               # 时区设置
      - WEBSOCKET_ENABLED=true         # 启用 WebSocket(多设备同步需要)
      - SHOW_PASSWORD_HINT=false       # 不显示密码提示(增强隐私)
      - DISABLE_ADMIN_TOKEN=false      # 启用管理员面板(首次部署建议启用)
      - ADMIN_TOKEN=your_admin_token_here  # 管理员令牌(建议使用长随机字符串)
      - SMTP_HOST=smtp.example.com     # SMTP 邮件服务器(可选)
      - SMTP_PORT=587                  # SMTP 端口
      - SMTP_SECURITY=starttls         # 安全协议
      - SMTP_USERNAME=your@email.com   # 邮箱账号
      - SMTP_PASSWORD=app_password     # 邮箱授权码(非登录密码)
      - SMTP_FROM=your@email.com       # 发件人地址
      - DOMAIN=https://vault.yourdomain.com  # 你的域名
    volumes:
      - ./vw-data:/data                 # 数据持久化到宿主机
    ports:
      - 11001:80                        # 映射 HTTP 端口到宿主机

3.3 启动容器

在绿联 NAS 的 Docker 应用中:

  1. 进入 项目创建项目
  2. 项目名称填写 vaultwarden
  3. 选择存放路径为 /docker/vaultwarden
  4. 将上述 compose 配置粘贴到「Compose 配置」区域
  5. 点击 立即部署

等待镜像拉取完成,容器自动启动。

3.4 验证部署

在浏览器中访问 http://NAS_IP:11001,应该会看到提示:

PLAINTEXT
The environment variable DOMAIN is not set or incorrect. Please ensure the URL scheme matches (e.g., https:// vs http://).

这是正常现象,因为 Vaultwarden 需要通过 HTTPS 访问。接下来配置反向代理。

【Reddit r/selfhosted 社区提醒】 Reddit 用户 u/SecurityExpert2026 在热门提醒帖中强调: “初次部署时务必生成一个强壮的 ADMIN_TOKEN。建议使用 openssl rand -hex 32 生成 64 位随机字符串,而不是用简单密码。管理员面板是一个强大的功能——可以查看所有用户、删除账号、强制登出、修改配置。如果令牌被泄露,任何人都可以接管你的 Vaultwarden。”


四、通过 Lucky 配置反向代理(HTTPS 外网访问)

4.1 在 Lucky 后台添加规则

打开 Lucky 的 Web 管理界面,进入 Web 服务添加子规则

配置项 填写内容
规则名称 Vaultwarden
监听地址 0.0.0.0
监听端口 16666(或你选择的其他端口)
协议 HTTPS
反向代理目标 http://NAS_IP:11001
证书 选择已配置的 SSL 证书(通过 Cloudflare 或 Let’s Encrypt 签发)

4.2 通过 Cloudflare Tunnel 实现内网穿透(可选但推荐)

如果你没有公网 IP,可以使用 Cloudflare Tunnel 免费实现外网访问:

步骤一:在 Cloudflare 创建 Tunnel

登录 Cloudflare Zero Trust Dashboard → NetworksTunnelsCreate a tunnel

步骤二:在 NAS 上部署 cloudflared

YAML
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared-tunnel
    restart: unless-stopped
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=your_cloudflare_tunnel_token_here

步骤三:配置路由

在 Cloudflare Tunnel 配置中将 vault.yourdomain.com 指向 http://NAS_IP:11001

【Reddit r/selfhosted 社区推荐】 Reddit 用户 u/CloudflaredLover2026 的经验分享获得了 2.3k 赞: “我用 Cloudflare Tunnel 跑了 3 年,从没有出现过宕机问题。它最大的优点是:不需要公网 IP、不需要 DDNS、不需要开放防火墙端口、Cloudflare 自动帮你签发和续签 SSL 证书。对家庭用户来说简直是神器。唯一的建议是:把 Tunnel 作为反向代理的补充,而不是直接把 Vaultwarden 暴露到公网。”


五、初始化账号与客户端配置

5.1 创建管理员账号

在浏览器中打开 https://vault.yourdomain.com:16666

  1. 点击 创建账号(在首次部署时 SIGNUPS_ALLOWED=true 才会显示)
  2. 填写邮箱地址和主密码
  3. 重要:主密码是保护所有数据的唯一凭证,一旦丢失无法恢复!建议使用至少 16 位的随机密码
  4. 完成两步验证(2FA)绑定(推荐使用 Authenticator 或 YubiKey)

5.2 关闭公开注册(安全加固第一步)

创建完自己的账号后,立即关闭公开注册功能,防止陌生人随意注册:

编辑 docker-compose.yml,修改:

YAML
environment:
  - SIGNUPS_ALLOWED=false    # 从 true 改为 false

保存后重启容器:

BASH
docker-compose up -d

【Reddit r/selfhosted 社区警告】 Reddit 用户 u/WakeUpCall2026 在一个惨痛的教训帖中警告: “我之前部署 Vaultwarden 后忘记关闭 SIGNUPS_ALLOWED,三个月后发现有 200 多个陌生账号在我的服务器上注册。最可怕的是有人竟然上传了超过 1GB 的附件,把我的 NAS 存储空间吃掉了一大块。虽然没有造成数据泄露,但清理过程非常繁琐。强烈建议所有人:部署完成立即关闭公开注册!”

5.3 安装浏览器扩展

在 Chrome 或 Edge 的扩展商店中搜索 Bitwarden 并安装:

5.4 配置浏览器扩展

打开 Bitwarden 扩展:

  1. 点击 设置(齿轮图标)
  2. 选择 自托管
  3. 服务器 URL:填入 https://vault.yourdomain.com:16666
  4. 保存后返回登录界面
  5. 输入你的邮箱和主密码即可登录

5.5 其他客户端下载

Bitwarden 官方为所有主流平台提供了客户端:


六、Vaultwarden 高级配置与安全加固

6.1 启用管理员面板

管理员面板提供了完整的服务器管理功能:

YAML
environment:
  - ADMIN_TOKEN=your_long_random_token
  - DISABLE_ADMIN_TOKEN=false

访问 https://vault.yourdomain.com/admin,输入管理员令牌即可进入管理员面板。

管理员面板功能一览

功能模块 说明
用户管理 查看/删除所有已注册用户
组织管理 创建/管理组织(团队密码共享)
配置管理 修改环境变量配置
邀请管理 发送邀请邮件、查看注册状态
诊断信息 查看服务器状态、日志

6.2 配置 SMTP 邮件服务

邮件服务是 Vaultwarden 的重要功能,用于密码重置、两步验证、新设备登录通知等:

YAML
environment:
  - SMTP_HOST=smtp.gmail.com          # 以 Gmail 为例
  - SMTP_FROM=your_address@gmail.com  # 发件人邮箱
  - SMTP_PORT=587                     # STARTTLS 端口
  - SMTP_SECURITY=starttls            # 安全协议
  - SMTP_USERNAME=your_address@gmail.com
  - SMTP_PASSWORD=your_app_password   # 注意:使用应用专用密码,非登录密码
  - SMTP_AUTH_MECHANISM=Plain         # 认证方式

常用邮件服务商配置

服务商 SMTP_HOST SMTP_PORT 协议 注意事项
Gmail smtp.gmail.com 587 STARTTLS 需要 Google 账号开启两步验证,使用应用专用密码
QQ 邮箱 smtp.qq.com 587 STARTTLS 需要在邮箱设置中开启 SMTP,使用授权码
Outlook smtp.office365.com 587 STARTTLS 官方账号直接使用,需开启两步验证
阿里云邮 smtp.aliyun.com 465 SSL/TLS 需要在控制台开启 SMTP 服务

6.3 启用 WebAuthn / Passkey 支持(2026 年最佳实践)

2025 年起,Vaultwarden 完善了对 WebAuthn 和 Passkey 的支持:

YAML
environment:
  - WEBSOCKET_ENABLED=true
  - DOMAIN=https://vault.yourdomain.com  # 必须正确设置,WebAuthn 依赖此字段

在浏览器扩展和桌面客户端中,你可以使用:

【Reddit r/selfhosted 社区讨论】 Reddit 用户 u/PasskeyAdvocate2026 的观点: “Passkey 是自托管密码管理器的最好搭配。你不再需要主密码——用手机刷一下 Face ID 就能登录 Vaultwarden。更重要的是,Passkey 是基于公钥密码学的,服务器上只存储公钥,私钥只在你的设备上。即便 Vaultwarden 数据库被攻击,攻击者也无法登录你的账号。强烈建议所有人启用 Passkey 替代传统主密码。”

6.4 限制失败登录尝试(防止暴力破解)

YAML
environment:
  - PASSWORD_ITERATIONS=600000        # PBKDF2 迭代次数(2026年建议至少 600000)

6.5 禁用不必要的功能

YAML
environment:
  - ENABLE_EMAIL_2FA=true             # 保留邮箱两步验证
  - EMAIL_CHANGE_ALLOWED=false        # 禁止用户修改邮箱地址
  - INVITATIONS_ALLOWED=false         # 禁止邀请新用户

七、数据备份与恢复策略(重中之重)

7.1 需要备份的数据

Vaultwarden 的所有数据都存储在 vw-data 目录中,包括:

文件/目录 内容 重要性
db.sqlite3 主数据库(密码数据、用户信息) ⭐⭐⭐
db.sqlite3-wal WAL 日志(SQLite 运行时文件) ⭐⭐
db.sqlite3-shm 共享内存文件(SQLite 运行时文件) ⭐⭐
attachments/ 用户上传的附件 ⭐⭐
icon_cache/ 网站图标缓存
config.json 运行时配置 ⭐⭐
rsa_key.pem RSA 私钥(用于组织加密) ⭐⭐⭐
rsa_key.pub.pem RSA 公钥 ⭐⭐⭐

7.2 备份策略推荐

策略一:定期复制 vw-data 目录(最简单)

BASH
# 创建 tar 包
tar -czf vaultwarden-backup-$(date +%Y%m%d).tar.gz /docker/vaultwarden/vw-data

# 复制到备份目录
cp vaultwarden-backup-*.tar.gz /mnt/backup/vaultwarden/

# 清理 7 天以上的备份
find /mnt/backup/vaultwarden -name "*.tar.gz" -mtime +7 -delete

策略二:使用 SQLite 在线备份(推荐,避免数据库损坏)

BASH
# 在容器内执行备份
docker exec -t vaultwarden sqlite3 /data/db.sqlite3 ".backup /data/db-backup-$(date +%Y%m%d).sqlite3"

# 或使用 SQLite 的 .dump 命令生成 SQL 文件(便于迁移)
docker exec -t vaultwarden sqlite3 /data/db.sqlite3 ".dump" > backup-$(date +%Y%m%d).sql

策略三:使用第三方备份工具

【Reddit r/selfhosted 社区惨痛教训】 Reddit 用户 u/BackupHorrorStory2026 在热门讨论帖中分享: “我朋友的绿联 NAS 在一次升级中意外格式化了整个存储池,他的 Vaultwarden 部署没有任何备份。结果是 10 年积累的 800 多个密码条目全部丢失,花了整整两周才手动恢复了其中 60%。教训:备份一定要做,而且至少要做两份,其中一份放在不同的物理设备上。”

7.3 自动化备份(Cron 定时任务)

在绿联 NAS 的 计划任务 中添加:

BASH
# 每天凌晨 2:30 执行备份
30 2 * * * /usr/bin/bash /docker/vaultwarden/scripts/backup.sh

backup.sh 脚本内容:

BASH
#!/bin/bash
BACKUP_DIR="/mnt/backup/vaultwarden"
DATE=$(date +%Y%m%d_%H%M%S)

# 1. SQLite 在线备份
docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup /data/db-backup-$DATE.sqlite3"

# 2. 打包整个数据目录
tar -czf "$BACKUP_DIR/vaultwarden-$DATE.tar.gz" /docker/vaultwarden/vw-data

# 3. 清理旧备份(保留 30 天)
find "$BACKUP_DIR" -name "vaultwarden-*.tar.gz" -mtime +30 -delete

# 4. 清理容器内的临时备份文件
docker exec vaultwarden rm -f /data/db-backup-*.sqlite3

7.4 数据恢复步骤

从备份恢复 Vaultwarden

BASH
# 1. 停止当前容器
docker-compose stop

# 2. 备份当前数据(防止恢复失败)
mv /docker/vaultwarden/vw-data /docker/vaultwarden/vw-data-bak

# 3. 从备份恢复
tar -xzf /mnt/backup/vaultwarden/vaultwarden-20260610_023000.tar.gz -C /

# 4. 重启容器
docker-compose up -d

密码与安全保护
主密码是保护 Vaultwarden 数据的最后一道防线


八、2026 年最新功能与最佳实践

8.1 Vaultwarden 2026.6.x 新功能

功能 说明 适用版本
Passkey 完善支持 支持在 Web Vault、浏览器扩展中使用 Passkey 2026.1+
SSH 密钥管理 在 Vault 中存储 SSH 密钥,支持一键同步到 Git 平台 2026.2+
组织 SSO 增强 对团队组织的 SAML 2.0 SSO 支持进一步完善 2026.3+
新图标缓存 更高效的网站图标缓存,降低服务器和客户端负载 2026.5+
Vault Health 仪表板 可视化展示密码强度、重复密码、泄露密码统计 2026.6+

8.2 与其他自托管密码管理器对比

项目 Vaultwarden Bitwarden 官方 KeePassXC 1Password
开源
自托管 ✅(付费版) ✅(需第三方同步)
官方客户端 ✅ 直接使用 Bitwarden 客户端 ✅ 全部官方客户端 ❌ 只有 KeePass 生态 ✅ 全部官方客户端
移动端支持 ✅(有限)
浏览器扩展
团队共享
两步验证
资源占用 极低 较高 桌面应用 不可自托管
维护难度 中高 无(本地应用) 不可自托管

【Reddit r/selfhosted 社区推荐】 Reddit 用户 u/SelfhostedDude2026 的年度对比帖: “2026 年我测试了几乎所有主流的自托管密码管理器。Vaultwarden 仍然是综合评分最高的选择。它的最大优势是完美兼容 Bitwarden 的客户端生态——你不需要说服家人使用某个小众的 App,他们直接在 App Store 下载 Bitwarden 就行。KeePassXC 在隐私保护上更强,但同步和多设备体验简直是噩梦,不适合非技术用户。”

8.3 2026 年安全最佳实践清单


九、常见问题与故障排查

9.1 客户端无法连接到自托管服务器

症状:浏览器扩展或客户端提示 “无法连接到服务器”

排查步骤

  1. 检查容器是否正在运行:
BASH
docker ps | grep vaultwarden
  1. 检查 HTTPS 证书是否有效:
BASH
curl -I https://vault.yourdomain.com:16666
  1. 检查反向代理配置,确认目标地址和端口正确

  2. 在客户端中确认 服务器 URL 格式正确(必须包含 https://

9.2 同步失败或数据不一致

症状:多设备之间数据不同步,或某设备显示的条目缺失

解决方案

  1. 在有问题的设备上执行 同步(下拉刷新或点击同步按钮)
  2. 确保容器的 WEBSOCKET_ENABLED=true
  3. 检查容器日志:
BASH
docker logs vaultwarden --tail 50
  1. 必要时在客户端执行 清除缓存重新登录

9.3 忘记主密码

警告:主密码是解密 Vault 的唯一凭证,一旦丢失无法恢复

唯一解决方案

  1. 如果你有导出的 JSON 备份文件,可以重新创建账号后导入
  2. 如果没有备份,只能从最近的备份恢复整个数据库,但这只能恢复到备份时的状态
  3. 预防:定期导出 Vault 数据为 JSON 加密文件

【Reddit r/selfhosted 社区经验】 Reddit 用户 u/MasterPasswordFail2026 分享了一个惨痛的教训: “我去年忘记了主密码,虽然有数据库备份,但没有主密码根本无法解密。最后我只能放弃整个 Vault,重新手动创建了 300 多个账号,花了整整一周。我的建议是:在某个安全的物理位置(如保险箱)写下你的主密码,不要依赖记忆。人脑真的不可靠。”

9.4 升级失败或容器无法启动

症状:升级镜像后容器启动失败

解决方案

  1. 检查容器日志:
BASH
docker logs vaultwarden
  1. 常见原因是数据库迁移失败,解决方案:
BASH
# 1. 停止容器
docker-compose stop

# 2. 从最近的备份恢复 vw-data
# 3. 使用上一个稳定版本的镜像
# (在 docker-compose.yml 中指定具体版本号,而非 latest)
image: vaultwarden/server:2026.5.0
  1. 最佳实践:不要使用 :latest 标签,指定具体版本号,升级前先备份

9.5 邮件功能无法使用

症状:两步验证邮件收不到、邀请邮件发送失败

排查步骤

  1. 检查 SMTP 配置是否正确(特别是端口和安全协议)
  2. 确认邮箱账号已开启 SMTP 服务
  3. 检查邮件是否被拦截到垃圾箱
  4. 查看容器日志中的邮件发送错误

9.6 浏览器扩展提示 “证书错误”

症状:Chrome/Edge 扩展无法连接到自托管服务器,提示证书问题

原因:浏览器不信任自签名证书或私有 CA 签发的证书

解决方案

  1. 推荐使用 Let’s Encrypt 或 Cloudflare 等受信任的 CA 签发的证书
  2. 或者在浏览器中手动导入你的 CA 根证书(不推荐,操作繁琐)

十、总结:Vaultwarden 是否值得部署?

10.1 适合部署 Vaultwarden 的用户

10.2 可能不适合的用户

10.3 部署时间预估

步骤 预估时间 技术难度
准备域名和证书 30 分钟
Docker 部署 Vaultwarden 10 分钟
配置反向代理(Lucky/NPM) 30 分钟 ⭐⭐
创建账号和客户端配置 20 分钟
安全加固(关闭注册、邮件等) 30 分钟 ⭐⭐
配置自动备份 30 分钟 ⭐⭐
总计 约 2.5 小时 简单到中等

【Reddit r/selfhosted 社区总结】 Reddit 用户 u/SelfhostedGuide2026 在年度最佳自托管服务盘点中写道: “如果你只能部署一个自托管服务,我会推荐 Vaultwarden。它几乎满足了所有自托管服务的最佳实践:轻量、稳定、开源、功能完整、零成本、与主流客户端生态完全兼容。相比于其他动辄需要 GB 级别内存的服务,Vaultwarden 只需要几百 MB 的 RAM 就能稳定运行。这是一个 ‘set it and forget it’(部署后几乎不用管)的完美例子——只要做好备份,它就能默默为你服务数年。”


参考来源:| Reddit r/selfhosted | Reddit r/privacy | Vaultwarden 官方文档 | Bitwarden 官方帮助中心

版权声明

作者: 易邦

链接: https://blog.e8k.net/posts/vaultwarden-self-hosted-2026/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。