避难所守护者是什么?
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;
}
}
首次管理设置
- 访问
https://vault.yourdomain.com并创建您的第一个帐户(如果SIGNUPS_ALLOWED是true)。 - 导航到
https://vault.yourdomain.com/admin并使用ADMIN_TOKEN登录。 - 在管理面板中,您可以管理用户、禁用新注册、为电子邮件邀请配置 SMTP 以及查看诊断信息。
- 安装 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:
- 从源管理器(例如 LastPass、Dashlane、1Password、KeePass)导出数据。
- 在 Vaultwarden Web Vault 中,转到 工具 → 导入数据。
- 选择源格式并上传文件。
支持的格式包括 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 实例。

