你是否曾梦想拥有一个私密、安全,并且完全免费的密码管理器自托管服务?你可能听说过 Bitwarden,但对于部署 VPS 或维护服务器感到头疼。现在,有一个解决方案彻底颠覆了传统方式——将 Bitwarden 兼容后端直接部署到全球分布式、无需服务器管理的 Cloudflare Worker 上!

这就是 warden-worker 项目的魅力所在。


一、原理与优势

warden-worker 项目是基于知名的开源 Bitwarden 兼容服务器 vaultwarden(由 Rust 编写)进行修改和优化的。

  1. 技术栈创新: 它将 Rust 源码编译成了 WebAssembly (WASM) 格式,使其能够完美运行在 Cloudflare Workers 的边缘计算环境中。

  2. 数据存储: Workers 负责处理 REST API 请求,而所有加密后的用户数据则存储在 Cloudflare 的 D1 数据库中。

  3. 核心优势:

    • 免费部署: 利用 Cloudflare Worker 和 D1 数据库的免费额度,无需支付额外的 VPS 费用。

    • 无需管理: 彻底摆脱传统服务器的运维负担,享受真正的 Serverless 体验。

    • 高性能: 基于 Cloudflare 的全球网络,理论上可以提供快速的访问体验。

二、实战部署关键步骤

部署过程主要依赖 Cloudflare 的服务和 GitHub Actions 的自动化能力。原作者通过 Fork 并优化了项目,解决了原版中编译依赖版本不固定、环境变量设置不明确等一系列“坑点”,使得部署过程更加顺畅。

1. 准备 Cloudflare 密钥和 ID

你需要从 Cloudflare 仪表板中获取并记录以下三个关键信息:

  • 账户 ID (CLOUDFLARE_ACCOUNT_ID)

  • API 令牌 (CLOUDFLARE_API_TOKEN):创建时确保它拥有**“编辑 Cloudflare Workers”**的权限。

  • D1 数据库 ID (D1_DATABASE_ID):首先在 Cloudflare 中创建一个 D1 数据库。

2. 代码库配置与构建

  1. Fork 优化后的仓库: 推荐 Fork 原作者二改后的优化版本(例如:afoim/warden-worker)。

  2. 添加机密环境变量: 在你 Fork 的 GitHub 仓库设置中,将上述三个 ID 以 Secret 变量的形式添加进去。

  3. 运行构建: 进入 GitHub Actions,运行 Build 工作流,等待其自动编译 Rust 代码并部署到你的 Worker。

3. 数据库和 Worker 配置

如果构建完成后 D1 数据库中的表是空的,需要手动初始化

  • 找到仓库中 warden-worker/sql/schema.sql 文件。

  • 在 Cloudflare D1 界面中,依次执行 SQL 块内容进行建表操作。

最后,进入你的 Worker 配置界面:

  • 添加自定义域: 由于 Cloudflare Worker 默认域名在国内访问可能受限,强烈建议绑定一个自定义域名

  • 添加变量与机密: 设置以下三个环境变量(注意不要有空格):

    • ALLOWED_EMAILS:你允许注册的邮箱地址。

    • JWT_SECRET:一个随机生成的长字符串作为密钥。

    • JWT_REFRESH_SECRET:另一个随机生成的长字符串作为刷新密钥。

4. 开始使用

配置完成后,打开你手机或电脑上的 Bitwarden 客户端软件:

  1. 选择自托管选项。

  2. 输入你绑定的自定义域名

  3. 创建你的账号,即可开始使用你的私有密码服务!

重要提示: 请注意,一旦设置了密码,根据项目的特性,将无法更改


总结

warden-worker 项目为密码管理爱好者提供了一条极具吸引力的自托管新路径。它充分利用了边缘计算的优势,在保证服务私密性的同时,几乎实现了零成本部署。如果你对 Serverless 和个人数据安全感兴趣,不妨依照原页面的详细教程,亲自尝试部署你的专属密码保管员吧!