密码是数字生活的钥匙,但管理密码是个老大难题。很多人习惯用相同密码注册各种网站,一旦泄露就全盘皆输。商业密码管理器如1Password、Bitwarden收费不低,而把密码存在别人的服务器上总有不安全感。其实只需一台便宜VPS,几条命令就能搭建属于自己的私人密码库。本文介绍如何在VPS上通过Docker部署Vaultwarden,完全兼容Bitwarden全平台客户端,让你的密码自己掌控。

一、Vaultwarden 是什么

Vaultwarden是Bitwarden服务端的第三方Rust重写版,也是当前最流行的自建密码管理方案。它与官方Bitwarden服务器最大的区别在于资源占用极低:

项目Bitwarden官方版Vaultwarden
内存占用2GB+50MB~150MB
CPU要求多核高频也能跑
存储空间数GB数百MB
数据库依赖MSSQLSQLite(内置)
客户端兼容官方客户端完全兼容

对于普通便宜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.ymlDOMAIN 修改为实际的HTTPS地址,然后重启容器:

docker compose down
docker compose up -d

五、客户端连接与使用

Vaultwarden完全兼容官方Bitwarden客户端。各平台客户端下载地址如下:

平台下载方式
网页版直接访问你的域名
Windows / macOS / Linux官网或应用商店搜索 Bitwarden
iOS / AndroidApp 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.ymlSIGNUPS_ALLOWED 改为 false,然后重启容器。之后只有已登录的用户才能邀请新成员。

Q3:手机端同步不了怎么办? 检查以下几点:一是确保服务器使用HTTPS访问;二是检查客户端中的服务器URL是否填写正确;三是确保 WEBSOCKET_ENABLED 已开启,以便实时推送更新。

Q4:能否从官方Bitwarden导入数据? 可以。在官方Bitwarden客户端中导出JSON格式的密码库,然后在Vaultwarden客户端中导入即可。

Q5:如何配置邮件通知? Vaultwarden支持SMTP发送邮件通知(如注册验证、密码更改提醒)。需要在环境变量中添加以下参数:SMTP_HOSTSMTP_PORTSMTP_SECURITYSMTP_USERNAMESMTP_PASSWORDSMTP_FROM。一般可用邮件服务商的邮箱作为发送方。

总结

Vaultwarden让普通用户以极低的成本拥有私人密码管理服务器。对于经常使用便宜VPS的朋友来说,顺手部署一个自建密码库不仅能保护自己的数字资产,还能让全家的密码都有一个安全的归宿。比起将密码托管给第三方服务,自己的服务器、自己的数据、自己掌握。本文涵盖了环境准备、Docker部署、反向代理配置、客户端连接和数据备份的完整流程,如果你正在寻找一个靠谱的密码管理方案,不妨今天就动手部署一个。