서비스 목록으로

Vaultwarden

Bitwarden 密码管理器的非官方轻量级替代版本

Vaultwarden 대안 보기
수정 제안
오픈소스
셀프 호스팅 가능
GPL-3.0
최근 리뷰

대안 서비스

기술 스택

보기 전용
이 서비스에는 아직 기술 스택 태그가 없습니다
💡 팁: 로그인하면 기술 스택 태그 추가 또는 수정을 제안할 수 있습니다

Vaultwarden 是一个非官方的 Bitwarden 密码管理器服务器实现,使用 Rust 语言编写。它的资源占用远低于官方版本,使其成为自托管密码管理解决方案的理想选择,尤其适合家庭和小型组织使用。

主要功能

  • 密码管理:安全存储并管理密码、安全笔记、信用卡信息等
  • 密码生成器:创建强健、随机的密码
  • 跨平台支持:可使用官方 Bitwarden 客户端(Web、移动、桌面和浏览器扩展)
  • 端到端加密:所有数据在设备上加密,服务器无法访问明文
  • 密码共享:安全地与团队成员共享凭证
  • 多因素认证:支持 TOTP、Yubikey、Duo 等多种双因素验证
  • 安全审计:检测弱密码、重复密码和数据泄露
  • 紧急访问:在紧急情况下授权他人访问您的密码库
  • 自动填充:自动填充网站和应用的登录信息
  • 附件支持:存储重要文档的加密副本

技术优势

相比官方 Bitwarden

  • 资源占用低:内存使用仅为官方版本的 1/10
  • 部署简单:单一 Docker 容器即可运行
  • 兼容性好:完全兼容官方 Bitwarden 客户端
  • 功能完整:支持所有核心功能和高级特性

安全特性

  • 端到端加密:AES-256 加密标准
  • 零知识架构:服务器无法访问用户数据
  • 安全审计:定期安全漏洞检测
  • 开源透明:代码完全开源可审计

Docker 部署示例

基础部署

version: '3.7'
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      WEBSOCKET_ENABLED: true
      SIGNUPS_ALLOWED: false
      ADMIN_TOKEN: your-secure-admin-token
      DOMAIN: https://vault.example.com
    volumes:
      - ./vw-data/:/data/
    ports:
      - "80:80"

完整生产配置

version: '3.7'
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      # 基础配置
      DOMAIN: https://vault.example.com
      WEBSOCKET_ENABLED: true
      
      # 注册管理
      SIGNUPS_ALLOWED: false
      INVITATIONS_ALLOWED: true
      INVITATION_ORG_NAME: "My Organization"
      
      # 管理员设置
      ADMIN_TOKEN: your-very-secure-admin-token
      
      # 数据库配置(可选 PostgreSQL)
      # DATABASE_URL: postgresql://user:password@postgres:5432/vaultwarden
      
      # SMTP 邮件配置
      SMTP_HOST: smtp.gmail.com
      SMTP_FROM: [email protected]
      SMTP_FROM_NAME: Vaultwarden
      SMTP_PORT: 587
      SMTP_SSL: true
      SMTP_USERNAME: [email protected]
      SMTP_PASSWORD: your-app-password
      
      # 安全配置
      PASSWORD_ITERATIONS: 100000
      ICON_CACHE_TTL: 2592000
      ICON_CACHE_NEGTTL: 259200
      
      # 功能开关
      DISABLE_ICON_DOWNLOAD: false
      DISABLE_2FA_REMEMBER: false
      
      # 文件上传限制
      ROCKET_LIMITS: '{json=10485760,forms=10485760}'
      
    volumes:
      - ./vw-data/:/data/
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vaultwarden.rule=Host(`vault.example.com`)"
      - "traefik.http.routers.vaultwarden.tls=true"
      - "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
      
      # WebSocket 支持
      - "traefik.http.routers.vaultwarden-websocket.rule=Host(`vault.example.com`) && Path(`/notifications/hub`)"
      - "traefik.http.routers.vaultwarden-websocket.tls=true"
      - "traefik.http.routers.vaultwarden-websocket.tls.certresolver=letsencrypt"
      - "traefik.http.services.vaultwarden-websocket.loadbalancer.server.port=3012"

networks:
  traefik:
    external: true

PostgreSQL 数据库配置

version: '3.7'
services:
  postgres:
    image: postgres:15
    container_name: vaultwarden-postgres
    restart: always
    environment:
      POSTGRES_DB: vaultwarden
      POSTGRES_USER: vaultwarden
      POSTGRES_PASSWORD: secure-db-password
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - vaultwarden

  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    depends_on:
      - postgres
    environment:
      DATABASE_URL: 'postgresql://vaultwarden:secure-db-password@postgres:5432/vaultwarden'
      WEBSOCKET_ENABLED: true
      SIGNUPS_ALLOWED: false
      ADMIN_TOKEN: your-secure-admin-token
      DOMAIN: https://vault.example.com
    volumes:
      - ./vw-data/:/data/
    networks:
      - vaultwarden
      - traefik

networks:
  vaultwarden:
  traefik:
    external: true

配置选项详解

用户管理

# 环境变量配置
SIGNUPS_ALLOWED=false           # 禁用公开注册
INVITATIONS_ALLOWED=true        # 允许邀请注册
SIGNUPS_DOMAINS_WHITELIST=example.com,company.com  # 仅允许特定域名注册
SIGNUPS_VERIFY=true             # 新用户邮件验证
PASSWORD_ITERATIONS=100000      # 密码哈希迭代次数

安全配置

# 双因素认证
DISABLE_2FA_REMEMBER=false      # 启用 2FA 记住功能
YUBICO_CLIENT_ID=12345          # Yubikey 客户端 ID
YUBICO_SECRET_KEY=secretkey     # Yubikey 密钥

# IP 限制
IP_HEADER=X-Forwarded-For       # 获取真实 IP 的头部
ICON_BLACKLIST_NON_GLOBAL_IPS=true  # 禁用非全局 IP 图标下载

功能控制

# 功能开关
DISABLE_ICON_DOWNLOAD=false     # 启用网站图标下载
ICON_CACHE_TTL=2592000          # 图标缓存时间(秒)
DISABLE_2FA_REMEMBER=false      # 启用 2FA 记住设备
EMERGENCY_ACCESS_ALLOWED=true   # 启用紧急访问功能

# 文件限制
ROCKET_LIMITS='{json=10485760,forms=10485760}'  # 10MB 上传限制
ATTACHMENT_LIMIT=10485760       # 附件大小限制
USER_ATTACHMENT_LIMIT=104857600 # 用户总附件限制
ORG_ATTACHMENT_LIMIT=1073741824 # 组织总附件限制

管理和维护

管理员面板

访问 https://vault.example.com/admin 进行管理:

  • 用户管理:查看、编辑、删除用户
  • 组织管理:管理共享密码库
  • 系统诊断:检查系统状态和配置
  • 邀请用户:发送注册邀请

备份策略

# 数据备份
docker run --rm -v vaultwarden_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/vaultwarden-backup-$(date +%Y%m%d).tar.gz /data

# 数据库备份(PostgreSQL)
docker exec postgres pg_dump -U vaultwarden vaultwarden > backup.sql

# 恢复数据
docker run --rm -v vaultwarden_data:/data -v $(pwd):/backup alpine \
  tar xzf /backup/vaultwarden-backup-20240115.tar.gz -C /

更新升级

# 更新到最新版本
docker pull vaultwarden/server:latest
docker-compose down
docker-compose up -d

# 查看更新日志
docker logs vaultwarden

客户端集成

官方客户端

  • Web Vault:浏览器访问完整功能
  • 浏览器扩展:Chrome、Firefox、Safari、Edge
  • 桌面应用:Windows、macOS、Linux
  • 移动应用:iOS、Android

服务器配置

所有客户端使用相同的服务器地址:https://vault.example.com

移动应用配置

  1. 下载官方 Bitwarden 应用
  2. 选择"自托管"服务器
  3. 输入服务器 URL
  4. 正常登录使用

高级特性

组织管理

  • 共享密码库:团队共享敏感信息
  • 角色权限:管理员、用户、自定义权限
  • 集合管理:按部门或项目组织密码
  • 访问控制:精细化权限管理

紧急访问

  • 信任联系人:指定紧急访问授权人
  • 等待期设置:防止恶意访问
  • 自动通知:紧急访问请求通知

API 集成

# 获取 API 密钥
curl -X POST https://vault.example.com/identity/connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&scope=api&[email protected]&client_secret=password"

# 使用 API 获取密码库
curl -H "Authorization: Bearer ACCESS_TOKEN" \
  https://vault.example.com/api/sync

安全最佳实践

服务器安全

  • 强制 HTTPS:使用有效 SSL 证书
  • 定期更新:保持软件版本最新
  • 访问控制:限制管理员面板访问
  • 防火墙规则:仅开放必要端口

用户安全

  • 强密码策略:强制复杂密码要求
  • 双因素认证:启用 TOTP 或硬件密钥
  • 定期审计:检查弱密码和重复密码
  • 安全培训:用户安全意识教育

监控告警

# Prometheus 监控示例
- job_name: 'vaultwarden'
  static_configs:
    - targets: ['vault.example.com:80']
  metrics_path: '/admin/diagnostics'
  params:
    token: ['admin-token']

故障排除

常见问题

  1. 无法访问管理面板

    • 检查 ADMIN_TOKEN 是否正确
    • 确认防火墙设置
    • 验证反向代理配置
  2. 邮件发送失败

    • 检查 SMTP 配置
    • 验证邮箱凭据
    • 确认网络连接
  3. 客户端连接问题

    • 检查 DOMAIN 配置
    • 验证 SSL 证书
    • 确认 WebSocket 支持

调试方法

# 查看详细日志
docker logs -f vaultwarden

# 启用调试模式
RUST_BACKTRACE=1
ROCKET_LOG_LEVEL=debug

部署要求

最小配置

  • CPU:1 核心
  • 内存:256MB RAM
  • 存储:500MB(基础安装)
  • 网络:HTTPS 访问支持

推荐配置

  • CPU:2 核心或更多
  • 内存:512MB+ RAM
  • 存储:10GB+(包含附件存储)
  • 备份:定期数据备份策略

适用场景

个人用户

  • 家庭密码管理:统一管理所有账户密码
  • 隐私保护:完全控制数据存储位置
  • 成本节约:免费使用高级功能

小型团队

  • 团队协作:安全共享工作相关凭证
  • 权限管理:灵活的用户角色配置
  • 合规要求:满足数据本地存储需求

企业应用

  • 安全合规:符合企业安全政策
  • 成本控制:无需购买昂贵许可证
  • 定制化:根据需求调整功能配置

Vaultwarden 为用户提供了一个强大、安全且经济的密码管理解决方案。其轻量级设计和完整功能集使其成为个人用户和小型组织的理想选择,在保证安全性的同时大大降低了部署和维护成本。