Featured image of post Vaultwarden:自托管密码管理器安装指南Featured image of post Vaultwarden:自托管密码管理器安装指南

Vaultwarden:自托管密码管理器安装指南

安装 Vaultwarden(一个与 Bitwarden 兼容的自托管密码管理器)的完整指南。了解 Docker 部署、SSL 设置、备份策略和日常使用。

避难所守护者是什么?

Vaultwarden 是 Bitwarden 服务器 API 的开源、自托管实现,用 Rust 编写。与需要 Microsoft SQL Server 数据库和大量系统资源的官方 Bitwarden 服务器相比,它的设计是轻量级且资源高效的。 Vaultwarden 支持所有官方 Bitwarden 客户端——桌面、浏览器扩展、移动应用程序和 CLI——无需任何修改。

通过自托管 Vaultwarden,您可以保留对密码数据的完全控制权。任何第三方服务都不会接触您的加密保管库。该项目成熟,维护积极,适合单用户部署和小型团队。

使用 docker-compose 进行 Docker 部署

运行 Vaultwarden 的推荐方法是通过 Docker。下面是一个生产就绪的 docker-compose.yml ,其中包括 Vaultwarden 本身、一个 PostgreSQL 数据库(可选,但建议用于大型部署)以及用于访问管理面板的管理令牌。

version: "3.8"

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.yourdomain.com"
      ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"
      DATABASE_URL: "postgresql://vaultwarden:${DB_PASSWORD}@db:5432/vaultwarden"
      SIGNUPS_ALLOWED: "false"
      INVITATIONS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    container_name: vaultwarden-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: vaultwarden
      POSTGRES_USER: vaultwarden
      POSTGRES_PASSWORD: "${DB_PASSWORD}"
    volumes:
      - ./pg-data:/var/lib/postgresql/data

.env 文件与包含您的机密的 compose 文件放在一起:

VAULTWARDEN_ADMIN_TOKEN=your-random-admin-token-here
DB_PASSWORD=your-strong-db-password-here

运行堆栈:

docker compose up -d

为什么选择 PostgreSQL?

Vaultwarden 默认使用 SQLite,这对于单个用户来说很好。 PostgreSQL 为多用户场景提供更好的并发性和可靠性,并更自然地集成到现有的备份工作流程中。如果您只需要个人实例,请删除 db 服务并删除 DATABASE_URL 环境变量 — Vaultwarden 将自动使用 SQLite。

管理员令牌

ADMIN_TOKEN 环境变量启用 /admin 处的管理面板。生成一个强随机令牌:

openssl rand -base64 48

创建帐户后将 SIGNUPS_ALLOWED 设置为 false 以防止公开注册。

通过 Caddy 的 SSL

Caddy 是自动 Let’s Encrypt 证书的最简单的反向代理。创建一个 Caddyfile

vault.yourdomain.com {
    reverse_proxy 127.0.0.1:8080
}

使用 Docker 运行 Caddy:

docker run -d \
  --name caddy \
  -p 80:80 -p 443:443 \
  -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy-data:/data \
  caddy:latest

Caddy 自动配置和续订 TLS 证书。如果您更喜欢 Nginx,请将以下配置片段与 Certbot 一起使用:

server {
    listen 443 ssl;
    server_name vault.yourdomain.com;

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

    location / {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
}

首次管理设置

  1. 访问 https://vault.yourdomain.com 并创建您的第一个帐户(如果 SIGNUPS_ALLOWEDtrue)。
  2. 导航到 https://vault.yourdomain.com/admin 并使用 ADMIN_TOKEN 登录。
  3. 在管理面板中,您可以管理用户、禁用新注册、为电子邮件邀请配置 SMTP 以及查看诊断信息。
  4. 安装 Bitwarden 浏览器扩展或移动应用程序,并将服务器 URL 设置为您的 Vaultwarden 域。

备份策略

备份是必不可少的。以下脚本创建 SQLite 数据库和附加文件的一致备份:

#!/bin/bash
BACKUP_DIR="/path/to/backups"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup '/tmp/backup.db'"
docker cp vaultwarden:/tmp/backup.db "$BACKUP_DIR/vaultwarden-$TIMESTAMP.db"
docker cp vaultwarden:/data/attachments "$BACKUP_DIR/attachments-$TIMESTAMP"

如果使用 PostgreSQL,请使用 pg_dump 代替:

docker exec vaultwarden-db pg_dump -U vaultwarden vaultwarden > "$BACKUP_DIR/vw-pg-$TIMESTAMP.sql"

通过 cron 安排每日备份并将其复制到异地(例如,复制到 S3、Borg 备份或 rsync 到远程服务器)。定期测试恢复 — 您从不恢复的备份是不可信任的备份。

从其他管理器导入

Vaultwarden 支持 Bitwarden 的数据导入格式。大多数密码管理器可以导出为 CSV 或 JSON:

  1. 从源管理器(例如 LastPass、Dashlane、1Password、KeePass)导出数据。
  2. 在 Vaultwarden Web Vault 中,转到 工具 → 导入数据
  3. 选择源格式并上传文件。

支持的格式包括 Bitwarden JSON、CSV、1Password CSV、Dashlane CSV、KeePass XML 等。导入后务必删除导出文件,因为它包含纯文本数据。

Vaultwarden VS Bitwarden

特色避难所看守官方 Bitwarden
数据库SQLite / PostgreSQL微软 SQL Server
内存使用情况〜10–30 MB~2–4 GB
设置复杂性单个 Docker 容器多服务编排
官方客户所有 Bitwarden 客户端均正常工作所有 Bitwarden 客户
自托管是的,专为它而设计是的,但是重量级
管理面板内置仅通过网络保管库
团队特色基本(邀请、组织、收藏)完整的企业特色

选择 Vaultwarden 供个人或小团队使用,因为简单性和低资源使用率很重要。如果您需要企业合规性、AD/LDAP 集成或大规模多租户部署,请选择官方 Bitwarden 服务器。

日常使用

部署后,请像使用 Bitwarden 一样使用 Vaultwarden。该服务器与每个官方 Bitwarden 客户端兼容 - 将客户端首选项中的 服务器 URL 设置为您的自托管域。所有加密均发生在客户端;服务器永远不会看到您的主密码或保管库内容。

TOTP 验证码、安全笔记、信用卡存储和身份配置文件等功能均按预期工作。共享保管库支持组织和集合。对于移动访问,Bitwarden 移动应用程序无缝连接到您的 Vaultwarden 实例。