密码是数字生活的钥匙,但管理密码是个老大难题。很多人习惯用相同密码注册各种网站,一旦泄露就全盘皆输。商业密码管理器如1Password、Bitwarden收费不低,而把密码存在别人的服务器上总有不安全感。其实只需一台便宜VPS,几条命令就能搭建属于自己的私人密码库。本文介绍如何在VPS上通过Docker部署Vaultwarden,完全兼容Bitwarden全平台客户端,让你的密码自己掌控。
一、Vaultwarden 是什么
Vaultwarden是Bitwarden服务端的第三方Rust重写版,也是当前最流行的自建密码管理方案。它与官方Bitwarden服务器最大的区别在于资源占用极低:
| 项目 | Bitwarden官方版 | Vaultwarden |
|---|---|---|
| 内存占用 | 2GB+ | 50MB~150MB |
| CPU要求 | 多核高频 | 也能跑 |
| 存储空间 | 数GB | 数百MB |
| 数据库依赖 | MSSQL | SQLite(内置) |
| 客户端兼容 | 官方客户端 | 完全兼容 |
对于普通便宜VPS用户来说,官方Bitwarden服务器太重了,而Vaultwarden仅需一台512MB内存的机器就能流畅运行。更重要的是,它支持Bitwarden的全平台客户端:Windows、macOS、Linux、iOS、Android以及浏览器扩展,体验与官方几乎一致。
二、环境准备
在正式部署之前,请确保以下几点已准备好:
一是一台可正常访问的VPS,推荐配置为1核1GB内存及以上,系统建议用Ubuntu 22.04/24.04或Debian 12;二是已在VPS上安装Docker与Docker Compose,若尚未安装可参考Docker安装教程;三是一个已解析到VPS的域名,用于后续配置HTTPS反向代理。
如果你还没有合适的VPS,可以先参考我们的便宜VPS推荐选购一台。
三、Docker Compose 部署 Vaultwarden
首先创建项目目录并进入:
mkdir -p ~/vaultwarden && cd ~/vaultwarden
新建并编写 docker-compose.yml 文件:
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
WEBSOCKET_ENABLED: "true"
SIGNUPS_ALLOWED: "true"
ADMIN_TOKEN: "请替换为你的强密码"
DOMAIN: "https://你的域名"
volumes:
- ./vw-data:/data
ports:
- "8080:80"
以下是关键环境变量的说明:
| 变量 | 含义 | 建议 |
|---|---|---|
WEBSOCKET_ENABLED | 开启实时同步的WebSocket支持 | 设为true |
SIGNUPS_ALLOWED | 是否允许任何人注册 | 初始部署设true,注册完成后改为false |
ADMIN_TOKEN | 进入管理后台的密钥 | 必须是高强度密码,建议16位以上随机字符串 |
DOMAIN | 你的服务器地址 | 必须是完整的HTTPS链接 |
启动容器:
docker compose up -d
检查容器是否正常运行:
docker ps | grep vaultwarden
如果看到状态为 Up,说明服务已经启动。此时可以通过 http://VPS-IP:8080 访问,但还无法正式使用,必须先配置HTTPS。
四、配置反向代理与 HTTPS
Vaultwarden必须通过HTTPS访问,否则客户端会报错。这里提供两种常见方案。
方案一:Nginx Proxy Manager(推荐)
如果你已经部署了Nginx Proxy Manager,配置异常简单:
一是登录NPM管理后台,点击“Add Proxy Host”;二是在“Details”标签页填入域名,上游地址填 vaultwarden,端口填 80;三是在“SSL”标签页选择申请Let’s Encrypt证书,开启“Force SSL”和“HTTP/2 Support”;四是点击保存,等待证书申请完成即可。
注意:如果Vaultwarden和NPM部署在同一台机器上,上游地址应填容器名 vaultwarden 或机器内网IP,不能填回环地址。
方案二:Cloudflare Tunnel
如果你不想开放公网端口,可以用Cloudflare Tunnel做内网穿透:
cloudflared tunnel route dns <TUNNEL-NAME> 你的域名
然后在Cloudflare Zero Trust控制台配置一个Public Hostname,转发到本地服务 localhost:8080。Cloudflare会自动提供HTTPS,且不需要暴露VPS端口。
无论哪种方案,配置完成后请进入 docker-compose.yml 将 DOMAIN 修改为实际的HTTPS地址,然后重启容器:
docker compose down
docker compose up -d
五、客户端连接与使用
Vaultwarden完全兼容官方Bitwarden客户端。各平台客户端下载地址如下:
| 平台 | 下载方式 |
|---|---|
| 网页版 | 直接访问你的域名 |
| Windows / macOS / Linux | 官网或应用商店搜索 Bitwarden |
| iOS / Android | App Store / Google Play 搜索 Bitwarden |
| Chrome / Firefox / Edge | 扩展商店搜索 Bitwarden |
安装完成后,打开客户端页面上的“设置”或“服务器URL”,将默认地址改为你的自建地址(如 https://vault.yourdomain.com)。然后就可以正常注册账号、保存密码、自动填充了。
特别强烈建议:注册完成后立即在账户设置中开启两步验证(2FA),提高安全等级。
六、数据备份与迁移
作为密码管理服务器,数据安全至关重要。Vaultwarden的所有数据都存储在卷映射目录 ./vw-data 中,备份非常简单:
cd ~/vaultwarden
tar czvf vaultwarden-backup-$(date +%Y%m%d).tar.gz vw-data/
建议将备份文件保存到本地或远程对象存储。也可以写一个自动备份脚本,加入到 crontab 定时执行:
0 3 * * * cd /root/vaultwarden && tar czf /backup/vaultwarden-$(date +\%Y\%m\%d).tar.gz vw-data/ && find /backup -name "vaultwarden-*.tar.gz" -mtime +30 -delete
这个脚本每天凌晨3点自动备份,并自动删除超过30天的旧备份。
若需要迁移到新服务器,只需将 vw-data 整个目录拷贝到新机器,然后重新跑起Docker容器即可,所有密码和配置完全保留。
七、常见问题
Q1:如何进入管理后台?
访问 https://你的域名/admin,然后输入配置中的 ADMIN_TOKEN。在管理后台可以管理用户、强制密码策略、查看日志等。
Q2:如何关闭公开注册?
注册完自己的主账号后,修改 docker-compose.yml 将 SIGNUPS_ALLOWED 改为 false,然后重启容器。之后只有已登录的用户才能邀请新成员。
Q3:手机端同步不了怎么办?
检查以下几点:一是确保服务器使用HTTPS访问;二是检查客户端中的服务器URL是否填写正确;三是确保 WEBSOCKET_ENABLED 已开启,以便实时推送更新。
Q4:能否从官方Bitwarden导入数据? 可以。在官方Bitwarden客户端中导出JSON格式的密码库,然后在Vaultwarden客户端中导入即可。
Q5:如何配置邮件通知?
Vaultwarden支持SMTP发送邮件通知(如注册验证、密码更改提醒)。需要在环境变量中添加以下参数:SMTP_HOST、SMTP_PORT、SMTP_SECURITY、SMTP_USERNAME、SMTP_PASSWORD、SMTP_FROM。一般可用邮件服务商的邮箱作为发送方。
总结
Vaultwarden让普通用户以极低的成本拥有私人密码管理服务器。对于经常使用便宜VPS的朋友来说,顺手部署一个自建密码库不仅能保护自己的数字资产,还能让全家的密码都有一个安全的归宿。比起将密码托管给第三方服务,自己的服务器、自己的数据、自己掌握。本文涵盖了环境准备、Docker部署、反向代理配置、客户端连接和数据备份的完整流程,如果你正在寻找一个靠谱的密码管理方案,不妨今天就动手部署一个。