Vaultwarden 是什么
在这个账号密码满天飞的时代,记忆密码真的是一件非常痛苦的事情。虽然市面上有 1Password 之类的密码管理软件,但是它要钱啊!而且作为一个爱折腾网络技术的人,肯定会想把数据掌握在自己手里,那么自托管的密码管理器就是最好的选择了。Vaultwarden 是一个轻量级的密码管理器,资源占用低、部署简单,很适合个人的密码管理和多端同步。开整!
准备工作
- 拥有一台安装了 Linux(如 Ubuntu/Debian)的 VPS。
- 拥有一个域名并已正确解析到该 VPS 的 IP。
- VPS 开放了 80 和 443 端口。
安装步骤
安装 Docker
- 获取并运行 Docker 安装脚本:
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh- 启动并设置 Docker 开机自启:
sudo systemctl enable dockersudo systemctl start docker- 验证 Docker 安装成功:
docker -vdocker compose version能看到版本号说明安装成功。
安装 Nginx 及 Certbot
- 安装 Nginx:
sudo apt updatesudo apt install nginx -y- 启动并设置 Nginx 开机自启:
sudo systemctl start nginxsudo systemctl enable nginx- 安装 Certbot:
sudo apt install certbot生成 ADMIN_TOKEN
在创建主配置文件之前,需要先把管理密码转换成极难破解的 Argon2 哈希值,不直接把密码明文写在配置文件中,保证安全性。
- 拉取镜像并运行 Argon2 工具:
docker run --rm -it vaultwarden/server /vaultwarden hash --argon2- 终端会提示
Password:,输入一个高强度的密码(不会显示在屏幕上),回车,然后再输入一次确认。 - 屏幕会输出一串类似下面的内容,将其完整保存在记事本中备用:
$argon2id$v=19$m=65540,t=3,p=4$P0i/jEJJ+Yp...配置 Docker Compose
- 创建工作目录:
mkdir -p /root/vaultwarden- 进入工作目录:
cd /root/vaultwarden- 创建 docker-compose.yml 文件:
nano docker-compose.yml- 填入以下配置(需注意
$$转译):
services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: unless-stopped environment: - TZ=Asia/Shanghai - SIGNUPS_ALLOWED=true - ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$P0i/jEJJ+Yp... volumes: - ./vw-data:/data ports: - "127.0.0.1:8000:80"IMPORTANT在 docker-compose 中,需要把
ADMIN_TOKEN中所有的单个$符号写成双$$符号进行转义,否则会报错! 例如原始是$argon2id$v=19$m=65540,t=3,p=4$P0i/jEJJ+Yp...这里就要写成$$argon2id$$v=19$$m=65540,t=3,p=4$$P0i/jEJJ+Yp...
- 填写完成后,按 Ctrl+O 保存,回车确认,Ctrl+X 退出。
启动服务
现在让 Vaultwarden 在后台跑起来:
docker compose up -d可以通过 docker ps 查看容器是否正常运行。
配置 Nginx 反向代理
若你是 Nginx 高手,可以自行配置反向代理及 SSL 证书。若你是刚刚安装 Nginx,可以跟着以下步骤来。
- 创建证书验证目录:
mkdir -p /var/www/letsencrypt- 创建 Nginx 配置文件:
nano /etc/nginx/conf.d/vaultwarden.conf- 填入以下配置:
server { listen 80; server_name yourdomain.com; # 改为你解析的域名
location ^~ /.well-known/acme-challenge/ { root /var/www/letsencrypt; allow all; }
location / { return 301 https://$host$request_uri; }}- 重启 Nginx 使配置生效:
sudo nginx -t && sudo systemctl reload nginx- 申请 SSL 证书(注意修改域名):
sudo certbot certonly --webroot -w /var/www/letsencrypt -d yourdomain.com若第一次申请会提示输入邮箱,按说明操作即可。
- 编辑刚才的 Nginx 配置文件,在文件底部添加:
server { listen 443 ssl http2; server_name yourdomain.com; # 改为你解析的域名 ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # 注意修改证书路径 ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 注意修改证书路径
location / { proxy_pass http://127.0.0.1:8000; 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; }}- 重启 Nginx 使反代生效:
sudo nginx -t && sudo systemctl reload nginx初始化与安全加固
至此,Vaultwarden 的前后端已经打通。
接下来要进行账号初始化与安全加固。
注册账号
- 在浏览器中访问
https://你的域名/,点击创建账户,输入你的邮箱和一个复杂的主密码。这个主密码是访问你的密码库的唯一方法,务必设置得复杂一些,并且千万千万不能忘记。 - 使用刚刚创建的账号登录,确认密码库可以正常存取记录。
测试管理后台
访问 https://你的域名/admin,在输入框中填入你设置的 ADMIN_TOKEN 原始密码,验证是否能顺利进入管理控制台。
关闭注册权限
在账号注册完毕后,若你的密码管理器只想个人使用,必须立刻关闭系统的开放注册权限。
- 回到服务器终端,修改 docker-compose.yml 配置文件:
cd /root/vaultwardennano docker-compose.yml- 将
SIGNUPS_ALLOWED=true修改为SIGNUPS_ALLOWED=false。 - 重新加载容器:
docker compose up -d至此,你的 Vaultwarden 已经部署完毕。普通用户无法再通过主页注册,所有数据被 AES-256 加密保存在 /root/vaultwarden/vw-data 目录中,且管理后台由 Argon2 强力保护。
如何使用
Bitwarden 客户端
Vaultwarden 完全兼容 Bitwarden 的官方协议,直接下载 Bitwarden 的客户端即可使用。关键在于你需要告诉客户端,不要去连 Bitwarden 的官方云服务器,而是连接你自己的服务器。

- 打开 Bitwarden 客户端,点击底部
正在访问:旁边的网址,选择自托管; - 在服务器 URL 中输入
https://你的域名/,点击保存; - 输入你的邮箱和主密码进行登录。
使用建议
安装浏览器扩展:
- 自动填充:安装登录后可以直接在网页上填充密码,非常方便;
- 生物识别:使用 FaceID 或指纹解锁,这样就无需每次都输入主密码。
移动端 App:
- 自动填充:这是移动端最重要的功能。在手机系统设置里,将密码自动填充服务改为 Bitwarden;
- 生物识别: 开启 FaceID 或指纹解锁;
- 二步验证: 如果你的 Vaultwarden 开启了二步验证,可以使用手机 App 查看验证码。
数据备份与恢复
Vaultwarden 的核心数据都在 /root/vaultwarden/vw-data/ 里,其中 db.sqlite3 是最重要的数据库文件,存储了所有账号、密码、文件夹和设置。建议定期备份整个数据文件夹。
数据备份
- 创建备份目录:
mkdir -p /opt/backup- 停止容器:
docker stop vaultwarden- 打包数据目录:
tar -czvf /opt/backup/vw-backup-$(date +%F).tar.gz -C /root/vaultwarden/vw-data .- 重启容器:
docker start vaultwarden强烈建议把备份的文件存到不同的设备或网盘内,以防丢失!
数据恢复
按上面的操作把 Vaultwarden 部署到你的 VPS,然后把备份文件完整解压到 /vw-data 数据目录,确保容器的路径映射正确,启动新的容器。打开网页端登录,你会发现所有的密码都在,仿佛什么都没发生过~