密码散落在浏览器、备忘录和脑子里,换设备就要一个个找回?开源项目 Vaultwarden(AGPL-3.0)是用 Rust 重写的轻量 Bitwarden 兼容服务端:自带网页密码库,官方的 Bitwarden 浏览器扩展、桌面端和手机 App 都能直接连上,密码数据只存在你自己的机器里。
协议为 AGPL-3.0,个人与家庭自用很清晰;如果修改后对外提供服务,需要按协议公开修改后的源码。单容器 + SQLite,内存占用几十 MB,NAS、小 VPS、旧笔记本都能常开。
技术栈:Rust · Rocket · SQLite(可选 MySQL/PostgreSQL)· Bitwarden Web Vault · Docker 一键部署
你将得到什么
- 一个完整的网页密码库:登录凭据、支付卡、身份、安全笔记、SSH 密钥,按文件夹与收藏分类
- 兼容 Bitwarden 全家桶客户端:浏览器扩展自动填充、Windows/macOS/Linux 桌面端、iOS/Android App
- 端到端加密:主密码只在客户端参与解密,服务端存的是密文
- 密码生成器、TOTP 验证码、Send 加密分享、密码健康报告、两步登录
- 组织与共享(家庭/小团队共用密码)、紧急访问、管理后台
- 演示只监听
127.0.0.1,不直接暴露公网
环境要求
- 已安装 Docker(含 Compose 插件)的 Linux / macOS / Windows
- 内存 100 MB 以内即可跑起来(实测空闲占用几十 MB)
- 必须 HTTPS 访问:网页密码库依赖浏览器的 WebCrypto,新版注册流程也会拒绝 http 地址(报错
Insecure URL not allowed)。正式使用请放在反向代理 + 证书后面;本机演示可以用自签名证书
官方仓库:github.com/dani-garcia/vaultwarden。本文实机镜像为 vaultwarden/server:latest(服务端 1.37.4,内置 Web Vault 2026.7.0)。
第一步:Docker Compose 启动
新建目录并写入 docker-compose.yml,端口只绑定本机,由反向代理(Nginx/Caddy/1Panel 的 OpenResty)对外提供 HTTPS:
mkdir -p ~/vaultwarden && cd ~/vaultwarden
# docker-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "127.0.0.1:8091:80"
environment:
DOMAIN: "https://vault.example.com" # 换成你的 HTTPS 域名
SIGNUPS_ALLOWED: "true" # 自己注册完后改为 false
ADMIN_TOKEN: "$$argon2id$$v=19$$..." # 管理后台令牌,建议用 argon2 哈希
volumes:
- ./vw-data:/data
docker compose up -d
docker logs -f vaultwarden # 看到 Rocket has launched 即启动成功
管理后台令牌建议生成 Argon2 哈希而不是明文(写进 compose 时每个 $ 要写成 $$):
docker run --rm -it vaultwarden/server /vaultwarden hash
只想在本机先体验、还没有域名时,可以让 Vaultwarden 直接用自签名证书跑 HTTPS(浏览器提示不安全时手动继续即可):
mkdir -p ssl
openssl req -x509 -newkey rsa:2048 -nodes -days 30 \
-keyout ssl/key.pem -out ssl/cert.pem -subj "/CN=localhost" \
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
# 在 compose 里追加:
# environment:
# DOMAIN: "https://localhost:8091"
# ROCKET_TLS: '{certs="/ssl/cert.pem",key="/ssl/key.pem"}'
# volumes:
# - ./ssl:/ssl:ro
第二步:注册并登录
浏览器打开你的域名(本机演示为 https://localhost:8091),点「创建账户」填写邮箱和名称,再设置主密码(至少 12 位,忘记无法找回)。之后在登录页输入邮箱 →「继续」→ 输入主密码即可进入。界面默认跟随浏览器语言,中文完整:

第三步:密码库主界面
登录后就是「所有密码库」:左侧筛选栏按类型(登录、支付卡、身份、安全笔记、SSH 密钥)和文件夹归类,右侧是条目列表,右上角「新增」可以添加条目、文件夹或组织。下图是通过「工具 → 导入」一次导入 Bitwarden JSON 后的效果——从 Chrome、1Password、KeePass、LastPass 等导出的文件也都能直接导入:

第四步:查看条目与 TOTP 验证码
点开任意条目可以一键复制用户名、密码;给登录条目填上 TOTP 密钥后,Vaultwarden 会像验证器 App 一样实时生成 6 位验证码(右侧是 30 秒倒计时)。这在官方 Bitwarden 里属于付费功能,自托管直接可用:

第五步:密码生成器
「工具 → 生成器」可以生成随机密码、密码短语或用户名,长度 5~128 位,可选大小写、数字、符号及最少个数,还能避开易混淆字符;浏览器扩展里注册新网站时也能直接调用:

第六步:密码健康报告与两步登录
「报告」页会扫描整个密码库:重复使用的密码、弱密码、仍使用 http:// 的网站、未开启两步登录的账户等,帮你逐个修补:

「设置 → 安全 → 两步登录」强烈建议立刻开启:支持验证器 App(TOTP)、通行密钥/FIDO2 安全密钥、Duo,以及配置 SMTP 后的邮件验证码:

第七步:管理后台
配置了 ADMIN_TOKEN 后,访问 /admin 输入令牌即可进入管理后台:可在线修改常规设置(是否允许注册、邀请)、SMTP 邮件、SSO、Yubikey、Duo,查看与禁用用户、管理组织,并一键备份数据库。下图顶部的黄色提示就是在提醒:演示用了明文令牌,正式环境请换成 Argon2 哈希:

连接客户端
- 安装 Bitwarden 官方浏览器扩展 / 桌面端 / 手机 App
- 登录页把「登录到」区域切换为自托管,服务器 URL 填你的
https://vault.example.com - 用同一个邮箱 + 主密码登录,数据会自动同步
安全与运维建议
- 不要把端口直接映射到 0.0.0.0。教程用的是
127.0.0.1:8091,对外只通过带证书的反向代理;只自己用的话,可以只在内网 / Tailscale / WireGuard 里访问。 - 注册完自己的账号后立刻关闭注册:
SIGNUPS_ALLOWED=false,需要给家人开账号时用管理后台的「Invite User」邀请。 ADMIN_TOKEN用 Argon2 哈希;不用后台时可以直接删掉该变量,/admin会被禁用。- 所有账号开启两步登录;主密码务必够长且只用在这里,忘了谁也恢复不了。
- 备份:定期打包
./vw-data(db.sqlite3、rsa_key*、attachments/、sends/),最好异地存一份;也可以在后台点「Backup Database」。 - 升级:
docker compose pull && docker compose up -d;升级前先备份数据目录。 - Vaultwarden 是社区项目,与 Bitwarden 官方无关;遇到问题请到 Vaultwarden 仓库反馈,不要去打扰 Bitwarden 官方支持。
- 演示用完可删:
docker compose down -v && rm -rf ./vw-data ./ssl。
小结
Vaultwarden 用一个轻量容器就换来了完整的 Bitwarden 体验:中文网页密码库、全平台官方客户端、TOTP、Send、报告、组织共享一应俱全,数据全在自己手里。只要守住 HTTPS、关闭注册、开启两步登录、做好备份这几条,就是非常值得长期自托管的一款工具。
项目地址:https://github.com/dani-garcia/vaultwarden(AGPL-3.0)







暂无评论内容