终极生产力:基于 Cloudflare Workers + D1 数据库搭建私人密码库 (Vaultwarden)

在追求数字主权的道路上,密码管理是第一站。传统的 VPS 部署 Vaultwarden 虽然强大,但仍需面对系统维护、安全补丁和服务器成本。今天,我们将利用 Cloudflare Workers 结合其原生的 D1 关系型数据库,实现一个真正的“零成本、零维护、高可用”的行业级密码管理方案。

本教程基于开源项目 warden-worker,旨在为你提供最细致的落地指南。


1. 为什么选择 Warden-Worker?

相比于传统的 Docker 部署或基于 KV 存储的 Worker 版本,此方案具备以下优势:

  • 原生关系型数据库:使用 Cloudflare D1 (基于 SQLite),数据结构更严谨,查询效率更高。
  • 全边缘运行:全球节点响应,无论你在哪,同步速度都是毫秒级。
  • 极致白嫖:完全运行在 Cloudflare 的免费额度内(Workers + D1 + Pages)。
  • 简单易用:无需安装复杂的开发环境,通过网页端和简单的 CLI 即可完成。

2. 适用人群

  • 极简主义者:不想维护 Linux 服务器和 Docker 环境。
  • 多端同步需求者:需要在 iOS/Android/Chrome/Windows 等多端无缝同步密码。
  • 技术进阶用户:对 Serverless 架构感兴趣,希望拥有一个私密且受控的 API 服务。

3. 具体搭建教程

第一步:克隆项目与环境准备

  1. Fork 项目:前往 qaz741wsd856/warden-worker 点击 Fork 到你的账户。
  2. 准备 Cloudflare 账号:登录控制台,获取你的 Account ID

第二步:创建 D1 数据库

  1. 在 Cloudflare 控制台导航至 Workers & Pages -> D1
  2. 点击 Create database -> Dashboard
  3. 数据库名称建议填写 warden,点击创建。
  4. 记下该数据库的 ID

第三步:修改配置文件

在你的 GitHub Fork 项目根目录下,找到 wrangler.toml,修改以下部分:

1
2
3
4
[[d1_databases]]
binding = "DB"
database_name = "warden" # 你的数据库名称
database_id = "你的D1数据库ID"

第四步:部署 Worker

你可以选择使用 GitHub Actions 自动部署(推荐),也可以在本地使用 wrangler 部署。

使用 GitHub Actions:

  1. 在 GitHub 仓库设置中,进入 Settings -> Secrets and variables -> Actions
  2. 添加 CLOUDFLARE_API_TOKEN(在 Cloudflare 个人资料中生成,需具备 Workers 编辑权限)。
  3. 添加 CLOUDFLARE_ACCOUNT_ID
  4. 运行 Actions,代码将自动部署至 Cloudflare Workers。

第五步:初始化数据库

部署成功后,你需要初始化数据库表结构。你可以通过 Cloudflare 控制台的 D1 控制台执行项目中的 schema.sql,或者利用项目的初始化接口(如果存在)。

第六步:配置前端 UI

  1. 你可以使用项目提供的预编译前端,通过 Cloudflare Pages 进行托管。
  2. 将 Pages 的环境变量 BASE_URL 指向你 Worker 的域名。
  3. 访问域名,你将看到熟悉的 Bitwarden 登录界面。

4. 风险评估:数据存在 Cloudflare 上安全吗?

这是每一个极客都会问的问题。

4.1 核心防护:端到端加密 (E2EE)

Vaultwarden/Bitwarden 的安全性不依赖于服务器的安全性

  • 加解密位置:所有加解密操作均在你的浏览器插件或手机 App 中完成。
  • 数据状态:发送到 Cloudflare D1 数据库的数据是经过你“主密码”派生的密钥加密后的密文。
  • 主密码:你的主密码永远不会发送给 Cloudflare。

结论:即便 Cloudflare 的数据库被攻破,黑客拿到的也只是 AES-256 加密的数据库文件,在没有你主密码的情况下,破解几乎是不可能的。

4.2 平台风险

  • 服务停摆:如果 Cloudflare 账号被封禁,你可能无法访问服务。
  • 应对方案:定期通过 Bitwarden 客户端导出 .json 加密备份文件,存放在本地 U 盘。

5. 行业级安全加固建议

  1. 限制注册
    第一个账号注册完成后,立即在 Worker 的环境变量中设置 SIGNUPS_ALLOWED = false,防止他人注册。
  2. 强制 2FA
    在 Cloudflare 账号上开启硬件密钥(Yubikey)保护。
  3. WAF 防护
    在 Cloudflare 规则中,禁止特定国家以外的 IP 访问你的密码库域名。
  4. 管理后台保护
    如果启用了管理页面,务必设置复杂的 ADMIN_TOKEN,并利用 Cloudflare Access 增加一层邮箱验证。

结语

基于 warden-worker 的方案,标志着私人密码管理进入了 “无服务器时代”。它不仅极大降低了门槛,更利用云巨头的边缘网络实现了商业级的稳定性。只要你守护好自己的主密码,这就是目前最安全、最优雅的密码管理方式。