1605 字
8 分钟
从零自建密码管理器:Vaultwarden

Vaultwarden 是什么#

在这个账号密码满天飞的时代,记忆密码真的是一件非常痛苦的事情。虽然市面上有 1Password 之类的密码管理软件,但是它要钱啊!而且作为一个爱折腾网络技术的人,肯定会想把数据掌握在自己手里,那么自托管的密码管理器就是最好的选择了。Vaultwarden 是一个轻量级的密码管理器,资源占用低、部署简单,很适合个人的密码管理和多端同步。开整!

准备工作#

  • 拥有一台安装了 Linux(如 Ubuntu/Debian)的 VPS。
  • 拥有一个域名并已正确解析到该 VPS 的 IP。
  • VPS 开放了 80 和 443 端口。

安装步骤#

安装 Docker#

  1. 获取并运行 Docker 安装脚本:
Terminal window
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  1. 启动并设置 Docker 开机自启:
Terminal window
sudo systemctl enable docker
sudo systemctl start docker
  1. 验证 Docker 安装成功:
Terminal window
docker -v
docker compose version

能看到版本号说明安装成功。

安装 Nginx 及 Certbot#

  1. 安装 Nginx:
Terminal window
sudo apt update
sudo apt install nginx -y
  1. 启动并设置 Nginx 开机自启:
Terminal window
sudo systemctl start nginx
sudo systemctl enable nginx
  1. 安装 Certbot:
Terminal window
sudo apt install certbot

生成 ADMIN_TOKEN#

在创建主配置文件之前,需要先把管理密码转换成极难破解的 Argon2 哈希值,不直接把密码明文写在配置文件中,保证安全性。

  1. 拉取镜像并运行 Argon2 工具:
Terminal window
docker run --rm -it vaultwarden/server /vaultwarden hash --argon2
  1. 终端会提示 Password:,输入一个高强度的密码(不会显示在屏幕上),回车,然后再输入一次确认。
  2. 屏幕会输出一串类似下面的内容,将其完整保存在记事本中备用:
$argon2id$v=19$m=65540,t=3,p=4$P0i/jEJJ+Yp...

配置 Docker Compose#

  1. 创建工作目录:
Terminal window
mkdir -p /root/vaultwarden
  1. 进入工作目录:
Terminal window
cd /root/vaultwarden
  1. 创建 docker-compose.yml 文件:
Terminal window
nano docker-compose.yml
  1. 填入以下配置(需注意 $$ 转译):
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...

  1. 填写完成后,按 Ctrl+O 保存,回车确认,Ctrl+X 退出。

启动服务#

现在让 Vaultwarden 在后台跑起来:

Terminal window
docker compose up -d

可以通过 docker ps 查看容器是否正常运行。

配置 Nginx 反向代理#

若你是 Nginx 高手,可以自行配置反向代理及 SSL 证书。若你是刚刚安装 Nginx,可以跟着以下步骤来。

  1. 创建证书验证目录:
Terminal window
mkdir -p /var/www/letsencrypt
  1. 创建 Nginx 配置文件:
Terminal window
nano /etc/nginx/conf.d/vaultwarden.conf
  1. 填入以下配置:
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;
}
}
  1. 重启 Nginx 使配置生效:
Terminal window
sudo nginx -t && sudo systemctl reload nginx
  1. 申请 SSL 证书(注意修改域名):
Terminal window
sudo certbot certonly --webroot -w /var/www/letsencrypt -d yourdomain.com

若第一次申请会提示输入邮箱,按说明操作即可。

  1. 编辑刚才的 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;
}
}
  1. 重启 Nginx 使反代生效:
Terminal window
sudo nginx -t && sudo systemctl reload nginx

初始化与安全加固#

至此,Vaultwarden 的前后端已经打通。 Vaultwarden 登录界面 接下来要进行账号初始化与安全加固。

注册账号#

  1. 在浏览器中访问 https://你的域名/,点击创建账户,输入你的邮箱和一个复杂的主密码。这个主密码是访问你的密码库的唯一方法,务必设置得复杂一些,并且千万千万不能忘记
  2. 使用刚刚创建的账号登录,确认密码库可以正常存取记录。

测试管理后台#

访问 https://你的域名/admin,在输入框中填入你设置的 ADMIN_TOKEN 原始密码,验证是否能顺利进入管理控制台。

关闭注册权限#

在账号注册完毕后,若你的密码管理器只想个人使用,必须立刻关闭系统的开放注册权限。

  1. 回到服务器终端,修改 docker-compose.yml 配置文件:
Terminal window
cd /root/vaultwarden
nano docker-compose.yml
  1. SIGNUPS_ALLOWED=true 修改为 SIGNUPS_ALLOWED=false
  2. 重新加载容器:
Terminal window
docker compose up -d

至此,你的 Vaultwarden 已经部署完毕。普通用户无法再通过主页注册,所有数据被 AES-256 加密保存在 /root/vaultwarden/vw-data 目录中,且管理后台由 Argon2 强力保护。

如何使用#

Bitwarden 客户端#

Vaultwarden 完全兼容 Bitwarden 的官方协议,直接下载 Bitwarden 的客户端即可使用。关键在于你需要告诉客户端,不要去连 Bitwarden 的官方云服务器,而是连接你自己的服务器。 Bitwarden 客户端配置自托管

  1. 打开 Bitwarden 客户端,点击底部 正在访问: 旁边的网址,选择自托管;
  2. 在服务器 URL 中输入 https://你的域名/,点击保存;
  3. 输入你的邮箱和主密码进行登录。

使用建议#

安装浏览器扩展:

  • 自动填充:安装登录后可以直接在网页上填充密码,非常方便;
  • 生物识别:使用 FaceID 或指纹解锁,这样就无需每次都输入主密码。

移动端 App:

  • 自动填充:这是移动端最重要的功能。在手机系统设置里,将密码自动填充服务改为 Bitwarden;
  • 生物识别: 开启 FaceID 或指纹解锁;
  • 二步验证: 如果你的 Vaultwarden 开启了二步验证,可以使用手机 App 查看验证码。

数据备份与恢复#

Vaultwarden 的核心数据都在 /root/vaultwarden/vw-data/ 里,其中 db.sqlite3 是最重要的数据库文件,存储了所有账号、密码、文件夹和设置。建议定期备份整个数据文件夹。

数据备份#

  1. 创建备份目录:
Terminal window
mkdir -p /opt/backup
  1. 停止容器:
Terminal window
docker stop vaultwarden
  1. 打包数据目录:
Terminal window
tar -czvf /opt/backup/vw-backup-$(date +%F).tar.gz -C /root/vaultwarden/vw-data .
  1. 重启容器:
Terminal window
docker start vaultwarden

强烈建议把备份的文件存到不同的设备或网盘内,以防丢失!

数据恢复#

按上面的操作把 Vaultwarden 部署到你的 VPS,然后把备份文件完整解压到 /vw-data 数据目录,确保容器的路径映射正确,启动新的容器。打开网页端登录,你会发现所有的密码都在,仿佛什么都没发生过~

从零自建密码管理器:Vaultwarden
https://www.smaritron.top/posts/vaultwarden-self-hosting-guide/
作者
Smaritron
发布于
2026-05-12
许可协议
CC BY-NC-SA 4.0