目 录CONTENT

文章目录

从Nextcloud Passwords迁移到Vaultwarden,自托管密码管理器深度对比

过客
2026-10-30 / 0 评论 / 1 点赞 / 2 阅读 / 0 字

写在前面

之前一直用 Nextcloud 插件中的 Passwords 应用管理密码,但 Nextcloud 本身太重了——光是 PHP + 数据库 + Redis + 定时任务,要流畅的跑起来内存就要大几百 MB。后来想找个轻量的替代品,调研了 Vaultwarden、Bitwarden 官方服务端、1Password,最终选择了 Vaultwarden。记录一下对比心得。

为什么要换掉 Nextcloud Passwords

Nextcloud Passwords 的痛点:

问题 实际体验
耦合太深 必须跑完整 Nextcloud,PHP-FPM + MySQL/PostgreSQL + Redis + Cron
资源占用高 空闲内存 500MB+,CPU 偶尔飙升(php-fpm84占满)
维护麻烦 版本升级经常插件不兼容,日志满屏报错
单点故障 Nextcloud 挂了,密码也访问不了

核心需求:

  • 自托管,数据完全掌握在自己手里
  • 免费开源,无订阅绑定
  • 资源占用低,单容器跑起来,内存 < 50MB
  • Android / iOS / 浏览器 / 桌面端全平台原生客户端
  • 支持 WebDAV / 文件附件 / TOTP / 组织共享 / 紧急访问

三大候选者横向对比

维度 Vaultwarden Bitwarden 官方 1Password
定位 Bitwarden 非官方兼容服务端,Rust 重写 官方 C# / .NET Core 实现,企业级定位 商业闭源 SaaS,主打用户体验
自托管 完全支持 支持(需安装密钥) 不支持
数据完全本地 SQLite 单文件/目录 但需 MSSQL 集群 云端存储
开源协议 AGPL-3.0 源码可见非 OSI 协议 闭源
资源占用(内存) 10-30 MB 2-4 GB+ N/A(客户端 ~100MB)
容器数量 1 个 10+ 个 N/A
数据库 SQLite 仅 MSSQL 专有
部署难度 ⭐ 极简 ⭐⭐⭐⭐ 复杂 ⭐ 零运维(但非自托管)
客户端生态 官方全平台客户端通用 官方全平台客户端 官方全平台客户端(最好用)
核心功能完整度 95%+(含组织、TOTP、WebAuthn、Send、附件) 100%(含企业级 SSO/SCIM/策略) 100%(含共享、旅行模式、Watchtower)
管理后台 内置简易 Admin 面板 完整管理控制台 云端管理控制台
备份迁移 直接拷贝 vw-data 目录 需备份 MSSQL + 多卷 云端导出 / CLI 导出
社区/文档 Wiki 详尽、社区活跃 官方文档完善、企业支持 官方支持、社区一般
授权/费用 完全免费 个人免费(需注册密钥),企业功能收费 ​订阅制​,无免费自托管

为什么最终选 Vaultwarden

1. 资源占用碾压级胜出

  • ​Vaultwarden​:单容器,Rust 编译二进制,空闲 ~15 MB 内存,CPU 几乎为 0
  • ​Bitwarden 官方​:10+ 容器,.NET Runtime + MSSQL + Redis,起步 2 GB 内存
  • ​Nextcloud Passwords​:依附 Nextcloud,500 MB+ 只是底座

2. 部署维护极其简单

# 一条命令拉起
docker run -d --name vaultwarden \
  -e DOMAIN=https://vw.domain.com \
  -v /opt/vaultwarden:/data \
  -p 127.0.0.1:8000:80 \
  --restart unless-stopped \
  vaultwarden/server:latest

配个 Nginx 反代 + ACME 证书,5 分钟搞定。备份直接 tar czf vw-backup.tar.gz /opt/vaultwarden,迁移拷贝目录即可。

3. 客户端体验零妥协

关键点:Vaultwarden 兼容官方 Bitwarden 所有客户端。

平台 客户端来源 体验
Android Play Store / F-Droid / GitHub Release 官方 App,指纹/面容解锁、自动填充、NFC YubiKey 全支持
iOS App Store 官方 App,Face ID、自动填充、快捷指令集成
浏览器 Chrome/Edge/Firefox/Safari 扩展商店 官方扩展,Ctrl+Shift+L 填充、右键菜单、TOTP 复制
桌面端 官网 / Microsoft Store / Snap / Flatpak 官方 Electron App,系统托盘、全局快捷键
CLI bw 官方 CLI 脚本自动化、CI/CD 注入密钥、SSH Agent 集成

这意味着:​家人/团队成员完全不需要学习新软件​,直接下载官方 Bitwarden App,填你的服务器地址登录即可。

4. 功能覆盖个人/家庭/小团队 99% 需求

  • ✅ 多设备同步
  • ✅ TOTP 两步验证码生成(替代 Authy/Google Authenticator)
  • ✅ 附件存储(PDF、图片、SSH Key 等)
  • ✅ 组织/集合/密码共享(家庭共享 Netflix、路由器密码)
  • ✅ WebAuthn/FIDO2/YubiKey 硬件密钥
  • ✅ 紧急访问(指定可信联系人紧急情况下查看保险库)
  • ✅ Send(临时安全分享文本/文件,可设过期/密码/下载次数)
  • ✅ 密码健康报告(重用、泄露、弱密码检测)
  • ✅ 数据导入导出(LastPass、1Password、KeePass、CSV、JSON 等 20+ 格式)

5. 避坑 Nextcloud 那种“全家桶”耦合

  • Vaultwarden 只做一件事:密码管理 API 服务
  • 不捆绑文件同步、日历、联系人、办公套件、邮件客户端……
  • 想加功能?用插件/集成(如 Authelia/Keycloak 做 SSO、rclone 备份到 S3),核心保持纯粹

迁移实操步骤

1. 从 Nextcloud Passwords 导出

Nextcloud Passwords → 设置 → 导出 → 预定义 (CSV) 格式

注意:Nextcloud Passwords 导出的 CSV格式与 Bitwarden 标准略有差异,修改CSV表头映射关系,其他字段可以删除了。

Nextcloud Passwords 字段 Vaultwarden 目标字段
标签 name
用户名 login_username
密码 login_password
链接 login_uri
分类名 folder
笔记 notes
标签名 fields

2. 部署 Vaultwarden

mkdir -p /opt/vaultwarden && cd /opt/vaultwarden
cat > docker-compose.yml <<'EOF'
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.yourdomain.com"
      # SIGNUPS_ALLOWED: "false"  # 关闭注册,仅邀请/管理员创建
      # ADMIN_TOKEN: "openssl rand -base64 32"
      # LOG_LEVEL: "info"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8000:80"
EOF
docker compose up -d

3. 配置反向代理 + HTTPS(以 Nginx 为例)

server {
    listen 443 ssl http2;
    server_name vw.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/vw.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/vw.yourdomain.com/privkey.pem;

    client_max_body_size 128M;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
        
        # WebSocket 支持(实时同步、通知用)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 超时设置
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }

    # 静态资源缓存(Web Vault 打包的 JS/CSS/字体)
    location /icons/ {
        proxy_pass http://127.0.0.1:8000;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

server {
    listen 80;
    server_name vw.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

4. 导入数据

  • 打开 https://vw.yourdomain.com → 注册账号 → 设置 → 工具 → 导入数据 → 选择 Bitwarden (csv) → 上传导出文件

5. 配置客户端

  • Android和iOS设备下载官方 Vaultwarden App → 设置 → 服务器地址填 https://vw.yourdomain.com → 登录

  • 浏览器插件直接选 Bitwarden ,填写自托管主机,然后填写账号邮件和密码登录就可以了

避坑指南

坑 解决方案
HTTPS 必须 Web Crypto API 要求安全上下文,HTTP 下 Web Vault 无法解锁/加密,必须配反代 + 证书
首次加载慢 Web Vault 打包 ~10 MB JS/WASM,首次需下载,配置 Nginx expires 30d + immutable 缓存静态资源
组织共享邀请收不到邮件 必须配置 SMTP_* 环境变量,或用管理面板手动创建用户再加入组织
数据库锁定/损坏 SQLite 并发写入有限制,高并发场景建议改 MySQL/PostgreSQL(环境变量 DATABASE_URL 指定)
备份别忘附件 vw-data 目录下 attachments/、sends/、icon_cache/ 都要备份
版本升级 docker compose pull && docker compose up -d,数据卷挂载在宿主机,升级无损

资源占用实测(我的环境)

服务 内存 CPU 磁盘
Vaultwarden 18 MB 0.1% 45 MB(含 200+ 条目、10 个附件)
Nginx (反代) 8 MB 0% 2 MB
Nextcloud (对比) 620 MB 2-5% 3.2 GB

总结

场景 推荐
个人/家庭/小团队,自托管,要省资源 Vaultwarden
企业、需 SSO/SCIM/目录同步/合规审计 Bitwarden 官方自托管(或云端企业版)
不想折腾、愿付费、重体验、信任云端 1Password 云端订阅
已在跑 Nextcloud、不想加新服务 Nextcloud Passwords(但建议迁出)

一句话:Vaultwarden 是“把 Bitwarden 官方服务端的 95% 功能用 1/100 资源跑起来”的神奇实现。 如果你和我一样,受够了 Nextcloud 的臃肿,想把密码管理剥离出来,数据掌握在自己手里,又要全平台原生体验——直接上 Vaultwarden,别犹豫。

1

评论区