Files
nodewarden/README.md
T
2026-02-03 22:58:41 +08:00

186 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NodeWarden
一个基于 Cloudflare Workers 的 Bitwarden 兼容服务器实现,专为个人用户设计。
[English](./README_EN.md) | 中文
---
> **免责声明**
> 本项目仅供学习交流使用。我们不对任何数据丢失负责,强烈建议定期备份您的密码库。
> 本项目与 Bitwarden 官方无关,请勿向 Bitwarden 官方反馈问题。
---
## 特性
- ✅ 完全免费,不需要在服务器上部署,再次感谢大善人!
- ✅ 完整的密码、笔记、卡片、身份信息管理
- ✅ 文件夹和收藏功能
- ✅ 文件附件支持(基于 R2 存储)
- ✅ 导入/导出功能
- ✅ 网站图标获取
- ✅ 登录限速保护(5 次失败后锁定 15 分钟)
- ✅ API 访问频率限制(60 次/分钟)
- ✅ 端到端加密(服务器无法查看明文)
- ✅ 兼容所有 Bitwarden 官方客户端
---
## 快速开始
### 一键部署
点击下方按钮部署到 Cloudflare Workers
[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/shuaiplus/nodewarden)
**部署步骤:**
1. 使用 GitHub 登录并授权
2. 登录 Cloudflare 账户
3. **重要**:设置 `JWT_SECRET` 为强随机字符串(推荐使用 `openssl rand -hex 32` 生成)
4. KV 存储和 R2 存储桶将自动创建
5. 点击 Deploy 等待部署完成
> ⚠️ **再次提醒**:请务必使用强随机的 `JWT_SECRET`,使用默认或弱密钥可能导致账户被入侵,**后果自负!**
### 配置客户端
部署完成后,在任意 Bitwarden 客户端中:
1. 打开设置(⚙️
2. 选择「自托管环境」
3. 服务器 URL 填入:`https://你的项目名`
4. 保存并返回登录页面
**首次注册**:直接访问 Workers 地址,在网页上完成账户注册。
---
## 手动部署
```bash
# 克隆项目
git clone https://github.com/shuaiplus/nodewarden.git
cd nodewarden
# 安装依赖
npm install
# 登录 Cloudflare
npx wrangler login
# 创建 KV 存储
npx wrangler kv namespace create VAULT
# 将输出的 id 填入 wrangler.toml 的 [[kv_namespaces]]
# 创建 R2 存储桶(用于文件附件)
npx wrangler r2 bucket create nodewarden-attachments
# 设置 JWT 密钥(请使用强随机字符串)
npx wrangler secret put JWT_SECRET
# 建议使用:openssl rand -hex 32
# 部署
npm run deploy
```
---
## NodeWarden vs Vaultwarden
NodeWarden 专注于**个人用户**的核心功能,保持代码简洁。以下是与 Vaultwarden 的功能对比:
| 功能 | NodeWarden | Vaultwarden | 说明 |
|------|:----------:|:-----------:|------|
| 密码/笔记/卡片/身份 | ✅ | ✅ | 完整支持 |
| 文件夹 & 收藏 | ✅ | ✅ | 完整支持 |
| 文件附件 | ✅ | ✅ | 使用 R2 存储,100MB 限制 |
| 导入/导出 | ✅ | ✅ | 完整支持 |
| 网站图标 | ✅ | ✅ | 代理获取 |
| 登录限速 | ✅ | ✅ | 防暴力破解 |
| 单用户模式 | ✅ | ✅ | 个人使用 |
| Bitwarden Send | ❌ | ✅ | 安全分享功能 |
| 两步验证 (2FA) | ❌ | ✅ | TOTP/WebAuthn 等 |
| 紧急访问 | ❌ | ✅ | 紧急联系人访问 |
| 组织/团队 | ❌ | ✅ | 多用户协作 |
| 实时同步 (WebSocket) | ❌ | ✅ | 多设备即时推送 |
| 邮件通知 | ❌ | ✅ | 需要 SMTP |
| 修改主密码 | ❌ | ✅ | 重新加密数据 |
| Admin 管理页 | ❌ | ✅ | 后台管理 |
> **💡 选择建议**
> 如果你只需要个人密码管理,NodeWarden 足够使用且部署更简单。
> 如果需要团队功能或高级特性,建议使用 [Vaultwarden](https://github.com/dani-garcia/vaultwarden)。
---
## 更新指南
如果你通过一键部署按钮安装,代码会被 fork 到你的 GitHub 账户。要获取最新更新:
### 方法 1:手动同步(推荐)
```bash
# 在你的 fork 仓库中
git remote add upstream https://github.com/shuaiplus/nodewarden.git
git fetch upstream
git merge upstream/main
git push origin main
```
### 方法 2GitHub Actions 自动同步
项目已内置自动同步配置,在你的 fork 仓库中:
1. 进入 **Actions** 标签页
2. 如果看到提示"Workflows aren't being run on this forked repository",点击 **I understand my workflows, go ahead and enable them**
3. 自动同步将每天运行一次(UTC 时间凌晨 2 点)
4. 也可以点击 **Sync Fork with Upstream****Run workflow** 手动触发
> **⚠️ 注意**:如果你修改了代码,自动同步可能会产生冲突,需要手动解决。
---
## 限制(本人认为完全没必要的功能)
- 不支持两步验证
- 不支持组织/团队功能
- 不支持修改主密码
- 文件附件大小限制 100MB
---
## 技术栈
- **运行环境**Cloudflare Workers
- **数据存储**Cloudflare KV
- **文件存储**Cloudflare R2
- **开发语言**TypeScript
- **加密算法**:客户端 AES-256-CBCJWT 使用 HS256
---
## 常见问题
**Q: 如何备份数据?**
A: 在客户端中选择「导出密码库」,保存 JSON 文件。
**Q: 忘记主密码怎么办?**
A: 无法恢复,这是端到端加密的特性。建议妥善保管主密码。
**Q: 可以多人使用吗?**
A: 不建议。本项目为单用户设计,多人使用请选择 Vaultwarden。
---
## 开源协议
MIT License
---
## 致谢
- [Bitwarden](https://bitwarden.com/) - 原始设计和客户端
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - 服务器实现参考
- [Cloudflare Workers](https://workers.cloudflare.com/) - 无服务器平台