工具部署|Vaultwarden|Docker · 一键自托管

密码散落在浏览器、备忘录和脑子里,换设备就要一个个找回?开源项目 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 位,忘记无法找回)。之后在登录页输入邮箱 →「继续」→ 输入主密码即可进入。界面默认跟随浏览器语言,中文完整:

Vaultwarden 登录页
登录页:先输入邮箱,再输入主密码;首次使用点「创建账户」

第三步:密码库主界面

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

Vaultwarden 密码库主界面
主界面:按类型 / 文件夹筛选,列表里是登录凭据、支付卡与安全笔记

第四步:查看条目与 TOTP 验证码

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

Vaultwarden 条目详情与 TOTP 验证码
条目详情:用户名、密码、TOTP 验证码与网址,均可一键复制

第五步:密码生成器

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

Vaultwarden 密码生成器
密码生成器:20 位含符号的强密码,一键复制或重新生成

第六步:密码健康报告与两步登录

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

Vaultwarden 密码健康报告
报告:暴露 / 重复 / 弱密码、不安全网站、未激活两步登录、数据泄露

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

Vaultwarden 两步登录设置
两步登录:验证器 App、通行密钥、Duo 等多种方式,开启后记得保存恢复代码

第七步:管理后台

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

Vaultwarden 管理后台
管理后台:Settings / Users / Organizations / Diagnostics,支持在线改配置与备份

连接客户端

  • 安装 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)

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容