Vaultwarden:开源轻量的1Password替代,自托管密码管理方案

9 阅读3分钟

Vaultwarden:开源轻量的1Password替代,自托管密码管理方案

背景

在互联网时代,密码安全是每个人都面临的问题:

  • 密码太多记不住,不同平台用同一个密码又不安全
  • 各大密码泄露事件频发:LastPass 多次被黑、Twitter 密码明文存储
  • 商业密码管理器要么收费,要么数据存储在第三方
  • 想找一个免费、开源、可以自托管的解决方案

今天介绍一款开源的密码管理服务器——Vaultwarden,它是 Bitwarden 的轻量级替代,在 GitHub 上已获得 40K+ Star

什么是 Vaultwarden?

Vaultwarden 是一个用 Rust 编写的 Bitwarden 客户端 API 的替代服务器实现,兼容官方 Bitwarden 客户端。

核心理念: "Lightweight Bitwarden server, written in Rust"——用 Rust 编写的轻量级 Bitwarden 服务器。

核心特性:

特性说明
完整 API 兼容兼容 Bitwarden 全平台客户端
开源免费MIT 许可证,完全免费
轻量高效Rust 编写,资源占用极低
自托管数据完全自主,支持 Docker 部署
TOTP 支持内置两步验证器功能
组织共享支持团队密码共享
多因素认证Email、FIDO2、YubiKey、Duo

GitHub 地址: github.com/dani-garcia…

官网: vaultwarden.zed.dev

Vaultwarden vs Bitwarden vs 1Password

对比项VaultwardenBitwarden1Password
价格免费免费/付费$36/年
开源✅ 完全开源✅ 客户端开源❌ 闭源
自托管✅ 完全支持✅ 付费版❌ 不支持
资源占用~50MB 内存~500MB 内存云服务
部署难度简单复杂不适用
TOTP✅ 支持✅ 支持✅ 支持
密码共享✅ 支持✅ 支持✅ 支持

Vaultwarden 的独特优势:

  • 资源占用极低(最低 50MB 内存)
  • 完全兼容官方 Bitwarden 客户端
  • 自托管数据完全自主
  • 支持几乎所有 Bitwarden 高级功能

快速上手

方式一:Docker 部署(推荐)

# 创建目录
mkdir -p /opt/vaultwarden && cd /opt/vaultwarden

# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.yourdomain.com"
      SIGNUPS_ALLOWED: "true"
      WEB_VAULT_ENABLED: "true"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

volumes:
  vw-data:
EOF

# 启动服务
docker compose up -d

# 访问 Web Vault
# http://localhost:8080

方式二:Docker 命令直接启动

docker run -d \
  --name vaultwarden \
  --restart unless-stopped \
  -e DOMAIN="https://vw.yourdomain.com" \
  -e SIGNUPS_ALLOWED="true" \
  -v /opt/vw-data:/data \
  -p 127.0.0.1:8080:80 \
  vaultwarden/server:latest

方式三:非 Docker 安装

Ubuntu/Debian:

# 添加仓库并安装
curl -fsSL https://pgp.mit.edu/pks/lookup?op=get&search=0x6E385E2D5C6D3F0B | gpg --dearmor | sudo tee /usr/share/keyrings/vaultwarden-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/vaultwarden-archive-keyring.gpg] https://apt.vaultwarden.org stable main" | sudo tee /etc/apt/sources.list.d/vaultwarden.list

sudo apt update && sudo apt install vaultwarden

添加 HTTPS(推荐)

Vaultwarden 需要 HTTPS 才能正常使用 Web Vault。建议使用反向代理:

Nginx 配置

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

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

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    client_max_body_size 128M;

    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_set_header X-Forwarded-Host $host;
    }
}

Traefik 配置

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.yourdomain.com"
    volumes:
      - ./vw-data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vaultwarden.rule=Host(`vw.yourdomain.com`)"
      - "traefik.http.routers.vaultwarden.tls=true"
      - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"

官方客户端使用

Vaultwarden 完全兼容官方 Bitwarden 客户端:

桌面客户端

支持平台:

  • Windows
  • macOS
  • Linux

配置步骤:

  1. 下载并安装 Bitwarden 桌面客户端
  2. 点击右上角设置图标
  3. 选择 "Settings" → "Self-hosted"
  4. 输入你的 Vaultwarden 服务器地址:https://vw.yourdomain.com
  5. 保存并登录

浏览器扩展

支持的浏览器:

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Brave

配置步骤:

  1. 安装 Bitwarden 浏览器扩展
  2. 点击扩展图标 → 设置
  3. 选择 "Self-hosted" 并输入服务器地址
  4. 保存并登录

移动端

支持平台:

  • iOS
  • Android

配置步骤:

  1. 安装 Bitwarden App
  2. 进入设置 → 选择 Self-hosted
  3. 输入服务器地址
  4. 登录

Web Vault

Vaultwarden 内置 Web Vault:

https://vw.yourdomain.com

可以直接在浏览器中访问和管理密码。

核心功能详解

1. 密码管理

Vaultwarden 提供完整的密码管理功能:

密码库项目类型:

类型说明
Login登录信息(用户名、密码、URL)
Secure Note安全笔记
Card银行卡信息
Identity身份信息(姓名、地址、电话等)

密码生成器:

// 内置密码生成器
长度: 16-64 位
包含: 大小写字母、数字、特殊字符
选项: 避免歧义字符 (0, O, l, 1)
选项: 生成易记密码

2. TOTP 两步验证

Vaultwarden 内置 TOTP(基于时间的一次性密码):

添加 TOTP:

1. 进入任意登录项
2. 点击 "Add Attachment" 或编辑
3. 选择 "Authenticator Key" 或 TOTP URI
4. 保存后自动显示 6 位验证码

TOTP 自动填充:

  • 登录时会自动显示当前验证码
  • 可设置自动复制验证码到剪贴板
  • 支持自动填充功能

3. 组织与共享

Vaultwarden 支持创建组织来共享密码:

组织功能:

  • 创建团队金库
  • 设置成员角色(Owner、Admin、User)
  • 创建集合(Collection)管理密码
  • 事件日志审计

密码共享流程:

1. 创建组织
   设置 → Organizations → Create Organization

2. 创建集合
   组织设置 → Collections → New Collection

3. 添加成员
   组织设置 → Members → Invite Member

4. 共享密码
   选择密码项 → 移动到集合

4. 紧急访问

Vaultwarden 支持紧急访问功能:

紧急访问设置:

1. 用户 A 设置紧急联系人
   设置 → Emergency Access → Add Emergency Contact

2. 指定信任级别
   - View Passwords: 可查看密码
   - Accept-Only: 仅接受访问请求

3. 用户 B 处理请求
   用户 A 出事后,用户 B 可申请紧急访问

5. 发送功能(Send)

Vaultwarden 支持安全发送文本或文件:

Send 功能:

  • 创建加密的文本/文件发送
  • 设置过期时间
  • 设置最大访问次数
  • 密码保护

使用示例:

1. 点击 "Send" → "Create Send"
2. 选择类型(Text 或 File)
3. 输入内容或上传文件
4. 设置过期时间和访问限制
5. 生成分享链接

安全配置

禁用注册(推荐生产环境)

environment:
  SIGNUPS_ALLOWED: "false"  # 禁用新用户注册
  INVITATIONS_ALLOWED: "false"  # 禁用邀请功能

设置管理员令牌

environment:
  ADMIN_TOKEN: "your-admin-token"  # 设置管理员面板访问令牌

日志配置

environment:
  LOG_FILE: "/data/vaultwarden.log"
  LOG_LEVEL: "info"  # debug, info, warn, error
  EXTENDED_LOGGING: "true"  # 详细日志

备份与恢复

备份数据

# 备份 vaultwarden 数据目录
tar -czvf backup-$(date +%Y%m%d).tar.gz /opt/vaultwarden/vw-data/

# 或使用 docker
docker cp vaultwarden:/data ./vw-data-backup
tar -czvf backup-$(date +%Y%m%d).tar.gz ./vw-data-backup/

恢复数据

# 解压备份
tar -xzvf backup-20240101.tar.gz

# 恢复数据目录
cp -r backup-data/* /opt/vaultwarden/vw-data/

# 或使用 docker
docker cp ./vw-data-backup vaultwarden:/data

常见问题

Q:Vaultwarden 和官方 Bitwarden 有什么区别?

A:

  • Vaultwarden 是轻量级替代实现,用 Rust 编写
  • 官方 Bitwarden 服务器功能更全,但资源占用大
  • Vaultwarden 资源占用约 50MB,官方版约 500MB
  • 两者 API 兼容,客户端可以互换

Q:数据存储在哪里?

A:数据存储在你自己的服务器上:

  • SQLite 数据库(默认)
  • 支持外部 PostgreSQL
  • 文件存储在挂载的 volume 中

Q:如何确保安全?

A:

  • 务必使用 HTTPS
  • 设置强主密码
  • 启用两步验证
  • 定期备份数据
  • 禁用新用户注册(生产环境)

Q:支持导入导出吗?

A:

  • 支持从 Bitwarden 导入
  • 支持从 LastPass、1Password 等导入
  • 支持导出为 JSON 或 CSV

Q:如何更新 Vaultwarden?

A:

# Docker 部署
docker pull vaultwarden/server:latest
docker compose down
docker compose up -d

适用场景

推荐使用:

  • 个人密码管理
  • 家庭密码共享
  • 小团队密码管理
  • 对数据隐私有要求
  • 有 NAS 或服务器资源

不推荐使用:

  • 超大规模企业(建议官方 Bitwarden Enterprise)
  • 需要 SSO 集成的场景
  • 没有服务器运维能力

总结

Vaultwarden 用"轻量 + 兼容 + 开源"的组合,成为了自托管密码管理的最佳选择。

核心优势回顾:

  • 轻量高效:Rust 编写,仅需 50MB 内存
  • 完整兼容:100% 兼容官方 Bitwarden 客户端
  • 开源免费:MIT 许可,无使用限制
  • 自托管:数据完全自主,满足隐私要求
  • 功能完备:TOTP、组织共享、紧急访问
  • 易于部署:Docker 一键部署

对于追求密码安全、数据自主、免费解决方案的个人和团队,Vaultwarden 是最佳选择。


本文由无边界科技技术团队分享,专注软件开发与技术解决方案。

官网:wubianj.com

© 版权归无边界科技所有,版权所有。