密码复用是互联网时代最大的个人安全隐患——一个网站泄露,全军覆没。密码管理器是标准答案,但把全部密码存在别人服务器上,很多人心里过不去这道坎。Bitwarden 的开源服务端 Vaultwarden 让"自托管密码库"变成 100M 内存就能跑的小应用。这篇手把手搭。
一、为什么是 Vaultwarden
官方 Bitwarden 服务端是 .NET + SQL Server 的"重工业化"组合,自托管至少 4G 内存。Vaultwarden 是 Rust 重写的兼容实现:
- 兼容 Bitwarden 全平台客户端(Chrome/Firefox/Edge/手机 App/命令行)——自托管服务端,用的还是官方客户端
- 内存占用约 100M,SQLite 单文件存储,树莓派都能跑
- 功能覆盖个人 99% 场景:密码库、TOTP 两步验证码、密码生成器、附件、发送(Send)
- 企业级功能(组织机构、目录同步)没有——但个人和家庭用不上
二、部署:Docker Compose 五件套
# docker-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "8080:80" # 容器内 80,宿主机 8080,443 交给 Nginx
environment:
DOMAIN: "https://vw.yourdomain.com" # 必须写完整 HTTPS 地址
SIGNUPS_ALLOWED: "false" # 关掉公开注册!自己账号建好后关
WEBSOCKET_ENABLED: "true" # 实时同步
INVITATIONS_ALLOWED: "false"
SHOW_PASSWORD_HINT: "false"
volumes:
- ./vw-data:/data # SQLite 库和附件都在这里
volumes:
vw-data:docker compose up -d先开注册再关:初始把 SIGNUPS_ALLOWED 设成 true,启动后用浏览器访问注册自己的账号,然后把值改回 false,docker compose up -d 重建生效。开着公开注册的密码库,是在公网裸奔。
Docker 基础命令见Docker 安装与基础命令,compose 编排见Docker Compose 编排实战。
三、Nginx 反代 + HTTPS
server {
listen 443 ssl http2;
server_name vw.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # WebSocket 必须
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name vw.yourdomain.com;
return 301 https://$host$request_uri;
}证书用 Let's Encrypt 免费申请,见免费 SSL 证书申请与 HTTPS 部署。反代细节见Nginx 反向代理与多站点配置。
DOMAIN 环境变量必须和实际访问地址完全一致(协议 + 域名 + 端口),否则客户端同步会报错——这是自托管 Vaultwarden 第一大坑。
四、客户端接入
服务端跑起来后,各平台用官方 Bitwarden 客户端,登录时把服务器地址改成你的域名:
| 平台 | 客户端 | 备注 |
|---|---|---|
| 浏览器 | Chrome/Firefox/Edge 扩展 | 主力,自动填表 |
| iOS/Android | Bitwarden App | 支持自动填充 |
| Windows/macOS | Bitwarden 桌面版 | 支持 PIN 解锁 |
| 命令行 | bw CLI | 脚本取密码,配合 Shell 用 |
TOTP 也能存:把网站的两步验证二维码种子存进 Vaultwarden 的"验证码"字段,手机自动填登录码,等于一个 App 管所有 2FA——比 Google Authenticator 还多一个云端同步。
五、备份:密码库丢了比泄密更绝望
Vaultwarden 的数据就两样:SQLite 库 + 附件目录,备份极简但必须自动化 + 异地:
#!/bin/bash
# 每日备份 Vaultwarden 数据
TS=$(date +%F)
tar czf /backup/vw-$TS.tar.gz -C /opt/vaultwarden vw-data
# 异地:rsync 到另一台机器或对象存储
rsync -az /backup/vw-$TS.tar.gz user@备份机:/backup/vw/
find /backup -name 'vw-*.tar.gz' -mtime +30 -deletersync 增量备份方案见rsync 同步与定时备份实战,定时任务见crontab 计划任务完全指南。
导出密码库要加密:Bitwarden 支持加密导出(.json 加密格式),明文导出只用于迁移,导完立刻删。
六、安全加固清单
密码库是"一把钥匙开所有锁"的地方,安全按最高标准:
- [ ]
SIGNUPS_ALLOWED=false(注册完自己账号后) - [ ] 主密码 16 位以上 + 记住它(忘了没有任何找回手段,这是设计使然)
- [ ] 开启 TOTP 两步验证登录 Vaultwarden 本身
- [ ] HTTPS 证书自动续期,别让证书过期锁在门外,见HTTPS 强制跳转与安全响应头
- [ ] 防火墙只开 443 + SSH,见服务器端口安全:最小化开放
- [ ] SSH 密钥登录 + 禁密码,见SSH 安全加固进阶
- [ ] 服务器快照定期打,见云服务器快照使用指南
- [ ] 定期跑服务器安全基线检查
七、家庭/小团队用法
Vaultwarden 支持"组织":把家人加进来,共享 Wi-Fi 密码、账号、银行卡信息。免费版组织功能受限,但家庭共享(Organization)够用——比"把密码发微信给老婆"安全一万倍。
结语
自托管密码库是"数据自主权"最典型的场景:全部密码在一台 100M 内存的小服务里,客户端还是官方全平台 App,体验不打折,数据不出门。这样一台 1核1G 的 NAT 型服务器,就能把全家人的密码管得服服帖帖。
需要搭密码库服务器,可以看看财富云计算:NAT 型云服务器支持 443 映射,1核1G 起步够跑 Vaultwarden,SSD + 快照 + 自动备份,价格比独立 IP 机型省一半以上——一台机器管全家钥匙,成本忽略不计。
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复