Vaultwarden 是 Bitwarden 服务端的轻量级开源实现,兼容所有 Bitwarden 官方客户端(浏览器插件、桌面端、移动端),让你把密码数据完全掌握在自己手里。由于密码数据极为敏感,HTTPS 是运行 Vaultwarden 的硬性要求。
本文要点
- Docker 一键部署 Vaultwarden
- 为什么 HTTPS 是必须的
- Nginx 反代 + SSL 配置
- 客户端连接自建服务器
- 数据备份策略
为什么 HTTPS 是必须的
Vaultwarden 存储的是你的所有密码,若使用 HTTP 明文传输,密码在网络中完全暴露。此外,Bitwarden 客户端本身要求服务端使用 HTTPS,否则客户端拒绝连接。
没有 SSL 禁止公网暴露
部署 Vaultwarden
使用 Docker 运行,数据持久化到本地目录:
mkdir -p /opt/vaultwarden/data
docker run -d \
--name vaultwarden \
-e DOMAIN="https://vault.yourdomain.com" \
-e SIGNUPS_ALLOWED=true \
-e ADMIN_TOKEN=$(openssl rand -base64 48) \
-v /opt/vaultwarden/data:/data \
-p 8180:80 \
--restart unless-stopped \
vaultwarden/server:latest或使用 docker-compose.yml 管理(推荐,便于修改环境变量):
# /opt/vaultwarden/docker-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
environment:
DOMAIN: "https://vault.yourdomain.com"
SIGNUPS_ALLOWED: "true"
ADMIN_TOKEN: "替换为随机字符串_openssl rand -base64 48"
LOG_LEVEL: "warn"
volumes:
- ./data:/data
ports:
- "8180:80"
restart: unless-stopped注册完成后关闭注册
SIGNUPS_ALLOWED 改为 false 并重启容器,防止陌生人注册。Nginx 反向代理 + SSL
先申请证书:certbot --nginx -d vault.yourdomain.com
创建 /etc/nginx/conf.d/vaultwarden.conf:
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;
client_max_body_size 10m;
location / {
proxy_pass http://127.0.0.1:8180;
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 https;
}
location /notifications/hub {
proxy_pass http://127.0.0.1:8180;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}客户端连接自建服务器
| 客户端 | 设置方式 | 服务器 URL 填写 |
|---|---|---|
| 浏览器插件 | 点击齿轮图标→自托管环境 | https://vault.yourdomain.com |
| 桌面端 | 登录页→高级选项 | https://vault.yourdomain.com |
| 手机端(iOS/Android) | 登录页→自托管 | https://vault.yourdomain.com |
数据备份
所有密码数据存储在 /opt/vaultwarden/data,重要性极高,建议每日备份到多个位置:
# 备份数据目录
tar czf /tmp/vault_backup_$(date +%F).tar.gz -C /opt/vaultwarden data
# 可配合 rclone 上传到对象存储
rclone copy /tmp/vault_backup_$(date +%F).tar.gz remote:vaultwarden-backup/小结
- HTTPS 是强制要求,没有 SSL 不要开放公网访问
- 注册完个人账号后立即关闭开放注册
- ADMIN_TOKEN 保管好,忘记需重新生成并重启容器
- 数据目录是备份的核心,建议每日异地备份
常见问题
Vaultwarden 和 Bitwarden 有什么区别?
Bitwarden 是官方服务端(开源但较重),Vaultwarden 是社区实现的轻量替代,完全兼容 Bitwarden 客户端,适合个人和小团队在 VPS 上自建。
忘记 ADMIN_TOKEN 怎么办?
用 openssl rand -base64 48 生成新 Token,更新 docker-compose.yml 中的环境变量后执行 docker compose up -d 重启容器。
密码数据可以迁移走吗?
可以。在 Bitwarden 客户端的设置中导出密码库(JSON 或加密格式),可导入到任何 Bitwarden 兼容服务端,或备份存档。