88 lines
5.1 KiB
Markdown
88 lines
5.1 KiB
Markdown
---
|
||
title: "NodeWarden - 把 Bitwarden 搬上 Cloudflare Workers,彻底告别服务器"
|
||
type: source
|
||
tags: ["Cloudflare", "Bitwarden", "Serverless", "Password-Manager"]
|
||
date: 2026-02-27
|
||
---
|
||
|
||
## Source File
|
||
- [[raw/Home Office/NodeWarden - 把 Bitwarden 搬上 Cloudflare Workers,彻底告别服务器.md]]
|
||
|
||
## Summary (用中文描述)
|
||
- **核心主题**:NodeWarden 将 Bitwarden 服务器端部署到 Cloudflare Workers,实现真正的无服务器(Serverless)密码管理
|
||
- **问题域**:传统 Bitwarden 自托管需要维护 VPS/服务器,NodeWarden 彻底消除了这一需求
|
||
- **方法/机制**:通过 Cloudflare Workers 运行 Bitwarden API 兼容层,数据存储在 Cloudflare D1(SQLite)和 R2(对象存储),利用 Workers 的边缘计算能力实现全球低延迟访问
|
||
- **结论/价值**:用户只需一个 Cloudflare 账号(带域名和信用卡)和 GitHub 账号,即可零成本、零运维地运行自托管密码管理器,支持 Bitwarden 官方全平台客户端
|
||
|
||
## Key Claims (用中文描述)
|
||
- NodeWarden 通过 Cloudflare Workers 实现无服务器架构,将 Bitwarden 服务器端迁移到边缘计算平台
|
||
- Cloudflare D1(边缘 SQLite)和 R2(对象存储)替代传统 VPS 数据库,数据可靠性由 Cloudflare 保证
|
||
- NodeWarden 在核心功能上与 Bitwarden 保持兼容,同时移除企业级功能(多用户/组织/SSO)以简化架构
|
||
- 通过 GitHub Actions + Cloudflare Pages 实现自动化部署,更新代码只需网页操作
|
||
- TOTP(时间同步动态口令)通过 `TOTP_SECRET` 环境变量免费支持,无需 Bitwarden 付费会员
|
||
|
||
## Key Quotes
|
||
> "部署 NodeWarden 之后的效果,就是在无服务器的情况下,也能在手机、电脑上使用 Bitwarden 客户端来保存密码了,支持自动登陆、二次验证之类的功能。" — Appinn
|
||
|
||
> "这个步骤需要在 Cloudflare 中绑定 GitHub 账号,根据页面提示即可。" — NodeWarden 一键部署说明
|
||
|
||
## Key Concepts
|
||
- [[Serverless Computing]]:NodeWarden 的核心技术范式,代码运行在 Cloudflare Workers 边缘节点而非传统服务器
|
||
- [[Edge Computing]]:Cloudflare Workers 在全球边缘节点运行,提供低延迟访问
|
||
- [[TOTP]]:时间同步一次性密码算法,NodeWarden 通过环境变量 `TOTP_SECRET` 免费提供,无需付费会员
|
||
- [[Passkey]]:WebAuthn 无密码认证标准,NodeWarden 原生支持(Bitwarden 官方需付费会员)
|
||
- [[Self-Hosted Password Manager]]:自托管密码管理器,NodeWarden 是 Serverless 架构的变体
|
||
|
||
## Key Entities
|
||
- [[NodeWarden]]:GitHub 项目,将 Bitwarden 部署到 Cloudflare Workers 的开源实现,作者 shuaiplus
|
||
- [[Bitwarden]]:开源密码管理器,客户端与服务端均开源,NodeWarden 提供 API 兼容实现
|
||
- [[Cloudflare Workers]]:边缘计算平台,NodeWarden 的运行时环境,基于 V8 隔离的 Serverless 平台
|
||
- [[Cloudflare D1]]:边缘 SQLite 数据库,NodeWarden 的主数据存储
|
||
- [[Cloudflare R2]]:S3 兼容对象存储,NodeWarden 用于存储附件
|
||
- [[Cloudflare]]:提供 Workers/D1/R2 的云平台,构成 NodeWarden 的完整基础设施
|
||
- [[shuaiplus]]:NodeWarden GitHub 项目作者
|
||
- [[shenwei]]:本文档原作者(Appinn 作者),已部署 NodeWarden 实例
|
||
|
||
## Connections
|
||
- [[NodeWarden]] ← implements ← [[Bitwarden]]
|
||
- [[NodeWarden]] ← runs_on ← [[Cloudflare Workers]]
|
||
- [[NodeWarden]] ← uses ← [[Cloudflare D1]]
|
||
- [[NodeWarden]] ← uses ← [[Cloudflare R2]]
|
||
- [[NodeWarden]] ← deploys_via ← [[GitHub Actions]]
|
||
- [[Bitwarden]] ← alternative_to ← [[1Password]]
|
||
- [[Bitwarden]] ← alternative_to ← [[LastPass]]
|
||
|
||
## Contradictions
|
||
- 无已知冲突
|
||
|
||
## NodeWarden vs Bitwarden 功能对比
|
||
|
||
| 能力项 | Bitwarden | NodeWarden | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| 单用户保管库 | ✅ | ✅ | 基于 Cloudflare D1 |
|
||
| 文件夹/收藏 | ✅ | ✅ | 常用管理能力可用 |
|
||
| 全量同步 `/api/sync` | ✅ | ✅ | 已做兼容与性能优化 |
|
||
| 附件上传/下载 | ✅ | ✅ | 基于 Cloudflare R2 |
|
||
| 导入功能 | ✅ | ✅ | 覆盖常见导入路径 |
|
||
| 网站图标代理 | ✅ | ✅ | 通过 `/icons/{hostname}/icon.png` |
|
||
| Passkey、TOTP | ❌ | ✅ | 官方需要会员,NodeWarden 免费 |
|
||
| 多用户 | ✅ | ❌ | NodeWarden 定位单用户 |
|
||
| 组织/集合/成员权限 | ✅ | ❌ | 没必要实现 |
|
||
| 登录 2FA(TOTP/WebAuthn/Duo/Email) | ✅ | ⚠️ 部分支持 | 仅支持 TOTP(通过 `TOTP_SECRET`) |
|
||
| SSO / SCIM / 企业目录 | ✅ | ❌ | 没必要实现 |
|
||
| Send | ✅ | ❌ | 基本没人用 |
|
||
| 紧急访问 | ✅ | ❌ | 没必要实现 |
|
||
| 管理后台/计费订阅 | ✅ | ❌ | 纯免费 |
|
||
| 推送通知完整链路 | ✅ | ❌ | 没必要实现 |
|
||
|
||
## 部署必要条件
|
||
1. Cloudflare 账号(必须有一个域名和信用卡)
|
||
2. GitHub 账号
|
||
|
||
## 部署步骤
|
||
1. Fork [NodeWarden GitHub 仓库](https://github.com/shuaiplus/NodeWarden)
|
||
2. 在 Cloudflare 页面点击"Deploy to Cloudflare"一键部署
|
||
3. 访问临时地址或绑定自定义域名
|
||
4. 通过设置页面配置:JWT_SECRET、自动更新、主账号密码、TOTP 二次验证
|
||
5. 在 Bitwarden 官方客户端选择"自托管",输入服务器 URL 即可登录
|