在 Cloudflare Workers 上零成本部署私有 Bitwarden 密码管理器
NodeWarden:在 Cloudflare Workers 上零成本部署私有 Bitwarden 密码管理器
项目介绍
Bitwarden 是目前最受欢迎的开源密码管理器之一,支持完整的自托管部署。但传统的自托管方案需要一台长期运行的 VPS 服务器,既有成本又需要维护。而 NodeWarden 的出现彻底改变了这一局面——它是一个运行在 Cloudflare Workers 上的 Bitwarden 兼容服务端,让你可以在零服务器成本的情况下,拥有一个功能完整的私有密码管理服务。
项目地址:https://github.com/luochen-zhang/nodewarden
开源协议:LGPL-3.0
核心优势
- 费用:0 元(利用 Cloudflare Workers 免费额度)
- 性能:极速(部署在 Cloudflare 全球边缘节点)
- 安全:私有化部署,数据存储在自己的 Cloudflare D1/KV 数据库中
- 兼容性:支持所有 Bitwarden 官方客户端(iOS/Android/桌面端/浏览器扩展)
- 运维成本:零——无需管理服务器
与 Bitwarden 官方功能对比
| 功能 | Bitwarden 免费版 | NodeWarden | 说明 |
|---|---|---|---|
| 网页密码库 | ✅ | ✅ | 原创 Web Vault 界面 |
| PWA / 离线支持 | ❌ | ✅ | 可安装、离线使用 |
| Passkey 登录 | ✅ | ✅ | 支持 WebAuthn/FIDO2 无密码登录 |
| TOTP(含 Steam) | ❌ | ✅ | 官方需要付费会员 |
| 实时推送同步 | ✅ | ✅ | 全设备同步 |
| 附件 / Send | ✅ | ✅ | Cloudflare R2 或 KV 存储 |
| 导入 / 导出 | ✅ | ✅ | 支持 JSON / CSV / ZIP |
| 云端备份中心 | ❌ | ✅ | 支持 WebDAV / S3 定时增量备份 |
| 多用户 | ✅ | ✅ | 邀请码注册 |
| 设备管理 | ✅ | ✅ | 移除设备、信任控制 |
| 组织 / 集合 / 权限 | ✅ | ❌ | 未实现 |
| SSO / SCIM / 企业目录 | ✅ | ❌ | 未实现 |
从功能对比可以看出,NodeWarden 非常适合个人日常使用,在 PWA 离线支持、TOTP(官方需付费)、云端备份等方面甚至超越了 Bitwarden 官方。
已测试客户端
- ✅ Windows 桌面端
- ✅ 手机 App
- ✅ 浏览器扩展
- ✅ Linux 桌面端
- ⚠️ macOS 桌面端尚未完整验证
部署教程
准备工作
开始部署前,你需要准备:
- 一个 Cloudflare 账号
- 一个 GitHub 账号
- (可选)一个托管在 Cloudflare 上的域名——如果使用 Workers 默认域名,部分网络环境可能无法直连
方式一:可视化快速部署(推荐)
这是最简单的部署方式,全程在浏览器中完成。
第 1 步:Fork 仓库
登录 GitHub,打开 NodeWarden 项目仓库,点击右上角的 Fork 按钮,将仓库复制到你的 GitHub 账号下。
第 2 步:进入 Cloudflare Workers & Pages
登录 Cloudflare 控制台,进入 Workers & Pages 创建页面:
https://dash.cloudflare.com/?to=/:account/workers-and-pages/create
第 3 步:连接 GitHub 并选择仓库
点击 Continue with GitHub,按提示授权 Cloudflare 访问你的 GitHub 账号,然后选择你刚刚 Fork 的 nodewarden 仓库。
第 4 步:设置构建和部署命令
- 构建命令:
npm run build - 部署命令:
npm run deploy
💡 如果你打算使用 KV 模式(无需绑定信用卡),将部署命令改为
npm run deploy:kv。关于存储模式的区别:
- R2 模式(默认):需要绑定信用卡,单个附件上限 100 MB,免费额度 10 GB
- KV 模式:无需绑卡,单个附件上限 25 MB
点击 部署,等待几分钟直到显示部署完成。
第 5 步:配置 JWT_SECRET
部署完成后,打开生成的 Workers 域名。如果页面提示缺少 JWT_SECRET,需要手动添加:
- 进入 Cloudflare Workers 设置 → 变量和机密(Variables and Secrets)
- 添加一个密钥(Secret)类型的变量:
- 变量名:
JWT_SECRET - 值:生成一个至少 32 个字符的随机字符串
- 变量名:
⚠️ 重要:正式环境请使用强随机字符串,不要使用临时值或示例值。
第 6 步:自定义域名(可选)
Workers 默认域名(*.workers.dev)在部分网络环境下可能无法访问。如需使用自定义域名:
- 进入 Workers 设置 → 触发器(Triggers)
- 添加自定义域名(需已在 Cloudflare 托管)
第 7 步:初始化账号
在浏览器中打开部署好的 NodeWarden 地址,根据页面提示:
- 设置主账号邮箱和密码
- (可选)启用二次验证(TOTP)
💡 如果想隐藏 Web Vault 前端页面(仅保留 API 接口供客户端使用),可以在 Workers 设置中添加一个文本变量
HIDE_WEB_VAULT,值为1。
方式二:CLI 部署(适合开发者)
如果你习惯使用命令行,也可以通过 Wrangler CLI 部署:
# 克隆仓库
git clone https://github.com/luochen-zhang/nodewarden.git
cd nodewarden
# 安装依赖
npm install
# 登录 Cloudflare
npx wrangler login
# 部署(默认 R2 模式)
npm run deploy
# 或使用 KV 模式
npm run deploy:kv