From 8e33f92b33d0b98cc5402a03077f8c439c5f54fc Mon Sep 17 00:00:00 2001 From: shuaiplus <2327005759@qq.com> Date: Tue, 7 Jul 2026 13:53:11 +0800 Subject: [PATCH] docs: make English the default README, move Chinese to README_ZH - README.md is now the English version (GitHub default) - Add README_ZH.md for Chinese documentation - Remove redundant README_EN.md --- README.md | 173 +++++++++++++++++++-------------------------------- README_EN.md | 172 -------------------------------------------------- README_ZH.md | 136 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+), 282 deletions(-) delete mode 100644 README_EN.md create mode 100644 README_ZH.md diff --git a/README.md b/README.md index bde5784..b773fe4 100644 --- a/README.md +++ b/README.md @@ -3,95 +3,99 @@

- 运行在 Cloudflare Workers 上的 Bitwarden 兼容服务端 + Bitwarden-compatible server running on Cloudflare Workers

Powered by Cloudflare License: LGPL-3.0 Latest Release - Sync Upstream +

- Telegram 频道 | - Telegram 群组 + Telegram Channel | + Telegram Group

- English | - 贡献指南 + 中文 | + Contributing | + Official wiki

-> **免责声明** -> 本项目仅供学习与交流使用,请定期备份你的密码库。 -> 本项目与 Bitwarden 官方无关,请不要向 Bitwarden 官方反馈 NodeWarden 的问题。 +> **Disclaimer** +> This project is for learning and discussion purposes only. Please back up your vault regularly. +> This project is not affiliated with Bitwarden. Please do not report NodeWarden issues to the official Bitwarden team. --- -## 与 Bitwarden 官方服务端能力对比 +## Feature comparison with the official Bitwarden server -| 能力 | Bitwarden | NodeWarden | 说明 | +| Capability | Bitwarden (free) | NodeWarden | Notes | |---|---|---|---| -| 网页密码库 | ✅ | ✅ | **原创Web Vault界面** | -| **PWA 支持** | ⚠️ 基础 | ✅ | **可安装、离线使用、App快捷方式** | -| **Web Vault 离线查看** | ❌ | ✅ | **网页端支持离线查看保险库** | -| **Passkey 登录** | ✅ | ✅ | **支持WebAuthn/FIDO2无密码登录** | -| 实时同步 | ✅ | ✅ | 网页端、浏览器扩展、电脑端和手机端实时同步 | -| 附件上传 / 下载 | ✅ | ✅ | Cloudflare R2 或 KV | -| Send | ✅ | ✅ | 支持文本与文件 Send | -| 导入 / 导出 | ✅ | ✅ | 支持 Bitwarden JSON / CSV / **ZIP 导入(包括附件)** | -| **云端备份中心** | ❌ | ✅ | **支持 WebDAV / S3 定时备份(OneDrive/Google Drive等)** | -| 密码提示(网页端) | ⚠️ 有限 | ✅ | **无需发送邮件** | -| TOTP / Steam TOTP | ✅ | ✅ | 含 `steam://` 支持 | -| 多用户 | ✅ | ✅ | 支持邀请码注册 | -| 组织 / 集合 / 成员权限 | ✅ | ❌ | 未实现 | -| 登录 2FA | ✅ | ⚠️ 部分支持 | 支持TOTP和Passkey(作为第二因素) | -| SSO / SCIM / 企业目录 | ✅ | ❌ | 未实现 | +| Web vault | ✅ | ✅ | **Original Web Vault UI** | +| TOTP | ❌ | ✅ | Includes `steam://` support | +| **PWA / offline** | ❌ | ✅ | **Installable, offline use, app shortcuts** | +| **Passkey login** | ✅ | ✅ | **WebAuthn/FIDO2 passwordless login** | +| API keys | ✅ | ✅ | For Bitwarden CLI; create and rotate | +| Login 2FA | ✅ | ✅ | TOTP, YubiKey, Passkey | +| 2FA recovery codes | ✅ | ✅ | One-time codes to disable 2FA | +| Real-time push sync | ✅ | ✅ | Web, browser extension, desktop, and mobile stay in sync | +| Attachments / Send | ✅ | ✅ | Cloudflare R2 or KV | +| Import / export | ✅ | ✅ | Bitwarden JSON / CSV / **ZIP import (including attachments)** | +| **Cloud backup center** | ❌ | ✅ | **Scheduled incremental backup via WebDAV / S3** | +| Device management | ✅ | ✅ | **Remove devices, revoke trust, permanent trust** | +| Login requests | ✅ | ✅ | **Passwordless login approval across devices; cross-device unlock requests** | +| **Multi-user** | ✅ | ✅ | Invite-code registration | +| Domain rules | ✅ | ✅ | Custom equivalent domains, global domain exclusions | +| Organizations / collections / member roles | ✅ | ❌ | Not implemented | +| SSO / SCIM / enterprise directory | ✅ | ❌ | Not implemented | --- -## 已测试客户端 +## Tested clients -- ✅ Windows 桌面端 -- ✅ 手机 App -- ✅ 浏览器扩展 -- ✅ Linux 桌面端 -- ⚠️ macOS 桌面端尚未完整验证 +- ✅ Windows desktop +- ✅ Mobile app +- ✅ Browser extension +- ✅ Linux desktop +- ⚠️ macOS desktop not fully verified yet --- -## 可视化快速部署 +## Visual quick deploy -1. Fork NodeWarden 仓库到自己的 GitHub 账号 -2. 进入 [Cloudflare Workers & Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create) -3. 选择 Continue with GitHub 并选择你的仓库 -4. 构建命令填 `npm run build`,部署命令填 `npm run deploy` -- 如果你打算用 KV 模式,把部署命令改成 `npm run deploy:kv` -5. 等部署完成后,打开生成的 Workers 域名 +1. Fork the NodeWarden repository to your GitHub account +2. Open [Cloudflare Workers & Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create) +3. Choose **Continue with GitHub** and select your fork +4. Set **build command** to `npm run build` and **deploy command** to `npm run deploy` + - For KV mode, change the deploy command to `npm run deploy:kv` +5. After deployment finishes, open the generated Workers URL -- Workers 默认域名在部分网络环境不可直连。如需自定义域名,到 [Workers 设置](https://dash.cloudflare.com/?to=/:account/workers/services/view/nodewarden/production/settings)里添加。 +- The default Workers hostname may be unreachable on some networks. To use a custom domain, add it in [Workers settings](https://dash.cloudflare.com/?to=/:account/workers/services/view/nodewarden/production/settings). -- 页面提示缺少 `JWT_SECRET` 时,到 Workers 设置里添加 Secret。正式环境至少使用 32 个字符以上的随机字符串,不要使用临时值或示例值。 +- If the site reports a missing `JWT_SECRET`, add it as a **Secret** in Workers settings. In production use a random string of at least 32 characters; do not use temporary or example values. -- 这套流程里,用户实际做的是把代码交给 Cloudflare 构建并部署。代码里的 `wrangler.toml` 或 `wrangler.kv.toml` 决定绑定名,Worker 第一次处理请求时会自动初始化 D1 schema,不需要用户上传 SQL。 +- In this flow you hand code to Cloudflare to build and deploy. `wrangler.toml` or `wrangler.kv.toml` in the repo defines binding names; the Worker initializes the D1 schema on first request—no manual SQL upload. > [!TIP] -> 默认R2与可选KV的区别: -> | 储存 | 是否需绑卡 | 单个附件/Send文件上限 | 免费额度 | +> Default R2 vs optional KV: +> | Storage | Card required | Max single attachment / Send file | Free tier | > |---|---|---|---| -> | R2 | 需要 | 100 MB(软限制可更改) | 10 GB | -> | KV | 不需要 | 25 MiB(Cloudflare限制) | 1 GB | +> | R2 | Yes | 100 MB (soft limit, adjustable) | 10 GB | +> | KV | No | 25 MiB (Cloudflare limit) | 1 GB | -## 更新方法: -- 手动:打开你 Fork 的 GitHub 仓库,看到顶部同步提示后,点击 `Sync fork` ➜ `Update branch` -- 自动:进入你的 Fork 仓库 ➜ `Actions` ➜ `Sync upstream` ➜ `Enable workflow`,会在每天凌晨 3 点自动同步上游。 +## How to update + +- Manual: open your fork on GitHub; when the sync banner appears, click **Sync fork** → **Update branch** -## CLI 部署 + +## CLI deploy ```powershell git clone https://github.com/shuaiplus/NodeWarden.git @@ -100,85 +104,34 @@ cd NodeWarden npm install npx wrangler login -# 默认:R2 模式 +# Default: R2 mode npm run deploy -# 可选:KV 模式 +# Optional: KV mode npm run deploy:kv -# 本地开发 +# Local development npm run dev npm run dev:kv ``` --- -## 主要特性 -### PWA 渐进式 Web 应用 - -- ✅ **可安装到桌面** - 像原生应用一样运行 -- ✅ **离线使用** - Service Worker 缓存,离线也能查看密码 -- ✅ **App 快捷方式** - 快速启动保险库、TOTP代码 -- ✅ **后台解密** - Web Worker 处理解密,不阻塞UI - -### Passkey 无密码登录 - -- ✅ **WebAuthn/FIDO2 支持** - 使用指纹、Face ID等登录 -- ✅ **PRF 密钥解锁** - Passkey 可直接解锁保险库 -- ✅ **官方客户端兼容** - Chromium系浏览器扩展可用Passkey登录 -- ✅ **多设备同步** - 支持iCloud、Google Password Manager等 - -### 云端备份说明 - -- 远程备份支持 **WebDAV** 与 **S3** -- 支持 **OneDrive**(通过Koofr)、**Google Drive**(通过Koofr)、**Cloudflare R2**、**Backblaze B2** 等 -- 勾选”包含附件”后: - - ZIP 内仍只包含 `db.json` 与 `manifest.json` - - 真实附件单独存放在 `attachments/` - - 后续备份会按稳定 blob 名复用已有附件,不会每次全量重传 -- 远程还原时: - - 会从 `attachments/` 目录按需读取附件 - - 缺失的附件会被安全跳过 - - 被跳过的附件不会在恢复后的数据库中留下脏记录 - ---- - -## 导入 / 导出 - -当前支持的导入来源包括: - -- Bitwarden JSON -- Bitwarden CSV -- Bitwarden 密码库 + 附件 ZIP -- NodeWarden JSON -- 网页导入器里可见的多种浏览器 / 密码管理器格式 - -当前支持的导出方式包括: - -- Bitwarden JSON -- Bitwarden 加密 JSON -- 带附件的 ZIP 导出 -- NodeWarden JSON 系列 -- 备份中心中的实例级完整手动导出 - ---- - - -## 开源协议 +## License LGPL-3.0 License --- -## 致谢 +## Credits -- [Bitwarden](https://bitwarden.com/) - 原始设计与客户端 -- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - 服务端实现参考 -- [Cloudflare Workers](https://workers.cloudflare.com/) - 无服务器平台 +- [Bitwarden](https://bitwarden.com/) - Original design and clients +- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Server implementation reference +- [Cloudflare Workers](https://workers.cloudflare.com/) - Serverless platform --- ## Star History -[![Star History Chart](https://api.star-history.com/svg?repos=shuaiplus/NodeWarden&type=timeline&legend=top-left)](https://www.star-history.com/#shuaiplus/NodeWarden&type=timeline&legend=top-left) +[![Star History Chart](https://api.star-history.com/svg?repos=shuaiplus/NodeWarden&type=timeline&legend=top-left)](https://www.star-history.com/#shuaiplus/NodeWarden&type=timeline&legend=top-left) \ No newline at end of file diff --git a/README_EN.md b/README_EN.md deleted file mode 100644 index aaf5c72..0000000 --- a/README_EN.md +++ /dev/null @@ -1,172 +0,0 @@ -

- NodeWarden Logo -

- -

- Bitwarden-compatible server running on Cloudflare Workers - -

- -

- Powered by Cloudflare - License: LGPL-3.0 - Latest Release - Sync Upstream -

- -

- Telegram Channel | - Telegram Group -

- -

- 中文说明 | - Contributing -

- -> **Disclaimer** -> -> This project is for learning and discussion purposes only. Please back up your vault regularly. -> -> This project is not affiliated with Bitwarden. Please do not report NodeWarden issues to the official Bitwarden team. - ---- - -## Feature Comparison with the Official Bitwarden Server - -| Capability | Bitwarden | NodeWarden | Notes | -|---|---|---|---| -| Web Vault | ✅ | ✅ | **Original Web Vault interface** | -| **PWA Support** | ⚠️ Basic | ✅ | **Installable, offline-capable, app shortcuts** | -| **Web Vault Offline Access** | ❌ | ✅ | **Web client supports offline vault viewing** | -| **Passkey Login** | ✅ | ✅ | **WebAuthn/FIDO2 passwordless login** | -| Real-time sync | ✅ | ✅ | Web, browser extension, desktop, and mobile clients stay in sync in real time | -| Attachment upload / download | ✅ | ✅ | Cloudflare R2 or KV | -| Send | ✅ | ✅ | Supports both text and file Sends | -| Import / Export | ✅ | ✅ | Supports Bitwarden JSON / CSV / **ZIP import with attachments** | -| **Cloud Backup Center** | ❌ | ✅ | **WebDAV / S3 scheduled backup (OneDrive/Google Drive etc.)** | -| Password hint (web) | ⚠️ Limited | ✅ | **No email required** | -| TOTP / Steam TOTP | ✅ | ✅ | Includes `steam://` support | -| Multi-user | ✅ | ✅ | Invite-based registration | -| Organizations / Collections / Member roles | ✅ | ❌ | Not implemented | -| Login 2FA | ✅ | ⚠️ Partial | TOTP and Passkey (as second factor) | -| SSO / SCIM / Enterprise directory | ✅ | ❌ | Not implemented | - ---- - -## Tested Clients - -- ✅ Windows desktop client -- ✅ Mobile app -- ✅ Browser extension -- ✅ Linux desktop client -- ⚠️ macOS desktop client has not been fully verified yet - ---- - -## Web Deploy - -1. Fork this repository. If this project helps you, consider giving it a Star. -2. Open [Workers](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create) -> `Continue with GitHub` -> select your forked repository (`NodeWarden`) -> continue. -3. R2 is used by default. If R2 is not enabled on your account, you can use KV instead by changing the **deploy command** to `npm run deploy:kv`. -4. Deploy and open the generated URL. - -| Storage | Card required | Single attachment / Send file limit | Free tier | -|---|---|---|---| -| R2 | Yes | 100 MB (soft limit, adjustable) | 10 GB | -| KV | No | 25 MiB (Cloudflare limit) | 1 GB | - -> [!TIP] -> How to keep your fork updated: -> - Manual: open your fork on GitHub, click `Sync fork`, then `Update branch` -> - Automatic: go to your fork -> `Actions` -> `Sync upstream` -> `Enable workflow`; it will sync upstream automatically every day at 3 AM - -## CLI Deploy - -```powershell -git clone https://github.com/shuaiplus/NodeWarden.git -cd NodeWarden -npm install -npx wrangler login - -# Default: R2 mode -npm run deploy - -# Optional: KV mode -npm run deploy:kv - -# Local development -npm run dev -npm run dev:kv -``` - ---- - -## Key Features - -### PWA Progressive Web App - -- ✅ **Install to desktop** - Runs like a native app -- ✅ **Offline usage** - Service Worker caching, view passwords offline -- ✅ **App shortcuts** - Quick launch vault, TOTP codes -- ✅ **Background decryption** - Web Worker handles decryption without blocking UI - -### Passkey Passwordless Login - -- ✅ **WebAuthn/FIDO2 support** - Login with fingerprint, Face ID, etc. -- ✅ **PRF key unlock** - Passkey can unlock vault directly -- ✅ **Official client compatibility** - Chromium browser extension supports Passkey login -- ✅ **Multi-device sync** - Supports iCloud, Google Password Manager, etc. - -### Cloud Backup Notes - -- Remote backup supports **WebDAV** and **S3** -- Supports **OneDrive** (via Koofr), **Google Drive** (via Koofr), **Cloudflare R2**, **Backblaze B2**, etc. -- When `Include attachments` is enabled: - - the ZIP still contains only `db.json` and `manifest.json` - - actual attachment files are stored separately under `attachments/` - - later backups reuse existing attachments by stable blob name instead of re-uploading everything every time -- During remote restore: - - required attachment files are loaded from `attachments/` on demand - - missing attachments are skipped safely - - skipped attachments do not leave broken rows in the restored database - ---- - -## Import / Export - -Current supported import sources include: - -- Bitwarden JSON -- Bitwarden CSV -- Bitwarden vault + attachments ZIP -- NodeWarden JSON -- Multiple browser / password-manager formats available in the web import selector - -Current supported export formats include: - -- Bitwarden JSON -- Bitwarden encrypted JSON -- ZIP export with attachments -- NodeWarden JSON variants -- Full manual instance export from the backup center - ---- - -## License - -LGPL-3.0 License - ---- - -## Credits - -- [Bitwarden](https://bitwarden.com/) - Original design and clients -- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Server implementation reference -- [Cloudflare Workers](https://workers.cloudflare.com/) - Serverless platform - ---- - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=shuaiplus/NodeWarden&type=timeline&legend=top-left)](https://www.star-history.com/#shuaiplus/NodeWarden&type=timeline&legend=top-left) diff --git a/README_ZH.md b/README_ZH.md new file mode 100644 index 0000000..f66560b --- /dev/null +++ b/README_ZH.md @@ -0,0 +1,136 @@ +

+ NodeWarden Logo +

+ +

+ 运行在 Cloudflare Workers 上的 Bitwarden 兼容服务端 +

+ +

+ Powered by Cloudflare + License: LGPL-3.0 + Latest Release + +

+ +

+ Telegram 频道 | + Telegram 群组 +

+ +

+ English | + 贡献指南 | + 官方wiki +

+ +> **免责声明** +> 本项目仅供学习与交流使用,请定期备份你的密码库。 +> 本项目与 Bitwarden 官方无关,请不要向 Bitwarden 官方反馈 NodeWarden 的问题。 + +--- + +## 与 Bitwarden 官方服务端能力对比 + +| 能力 | Bitwarden免费版 | NodeWarden | 说明 | +|---|---|---|---| +| 网页密码库 | ✅ | ✅ | **原创Web Vault界面** | +| TOTP | ❌ | ✅ | 包括 `steam://` 支持 | +| **PWA / 离线使用** | ❌ | ✅ | **可安装、离线使用、App快捷方式** | +| **Passkey 登录** | ✅ | ✅ | **支持WebAuthn/FIDO2无密码登录** | +| API 密钥 | ✅ | ✅ | 供bitwarden cli使用,支持获取和轮换 | +| 登录 2FA | ✅ | ✅ | 支持 TOTP、YubiKey、Passkey | +| 2FA 恢复码 | ✅ | ✅ | 一次性恢复码用于禁用 2FA | +| 实时推送同步 | ✅ | ✅ | 网页端、浏览器扩展、电脑端和手机端实时同步 | +| 附件 / Send| ✅ | ✅ | Cloudflare R2 或 KV | +| 导入 / 导出 | ✅ | ✅ | 支持 Bitwarden JSON / CSV / **ZIP 导入(包括附件)** | +| **云端备份中心** | ❌ | ✅ | **支持 WebDAV / S3 定时增量备份** | +| 设备管理 | ✅ | ✅ | **删除设备、撤销信任、永久信任** | +| 登录请求 | ✅ | ✅ | **多端免密登录审批、跨设备解锁请求** | +| **多用户使用** | ✅ | ✅ | 支持邀请码注册 | +| 域名规则 | ✅ | ✅ | 自定义等效域名、全局域名排除 | +| 组织 / 集合 / 成员权限 | ✅ | ❌ | 未实现 | +| SSO / SCIM / 企业目录 | ✅ | ❌ | 未实现 | + +--- + +## 已测试客户端 + +- ✅ Windows 桌面端 +- ✅ 手机 App +- ✅ 浏览器扩展 +- ✅ Linux 桌面端 +- ⚠️ macOS 桌面端尚未完整验证 + +--- + +## 可视化快速部署 + +1. Fork NodeWarden 仓库到自己的 GitHub 账号 +2. 进入 [Cloudflare Workers & Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create) +3. 选择 Continue with GitHub 并选择你的仓库 +4. 构建命令填 `npm run build`,部署命令填 `npm run deploy` +- 如果你打算用 KV 模式,把部署命令改成 `npm run deploy:kv` +5. 等部署完成后,打开生成的 Workers 域名 + +- Workers 默认域名在部分网络环境不可直连。如需自定义域名,到 [Workers 设置](https://dash.cloudflare.com/?to=/:account/workers/services/view/nodewarden/production/settings)里添加。 + +- 页面提示缺少 `JWT_SECRET` 时,到 Workers 设置里添加 Secret。正式环境至少使用 32 个字符以上的随机字符串,不要使用临时值或示例值。 + +- 这套流程里,用户实际做的是把代码交给 Cloudflare 构建并部署。代码里的 `wrangler.toml` 或 `wrangler.kv.toml` 决定绑定名,Worker 第一次处理请求时会自动初始化 D1 schema,不需要用户上传 SQL。 + + +> [!TIP] +> 默认R2与可选KV的区别: +> | 储存 | 是否需绑卡 | 单个附件/Send文件上限 | 免费额度 | +> |---|---|---|---| +> | R2 | 需要 | 100 MB(软限制可更改) | 10 GB | +> | KV | 不需要 | 25 MiB(Cloudflare限制) | 1 GB | + + +## 更新方法: +- 手动:打开你 Fork 的 GitHub 仓库,看到顶部同步提示后,点击 `Sync fork` ➜ `Update branch` + + + + +## CLI 部署 + +```powershell +git clone https://github.com/shuaiplus/NodeWarden.git +cd NodeWarden + +npm install +npx wrangler login + +# 默认:R2 模式 +npm run deploy + +# 可选:KV 模式 +npm run deploy:kv + +# 本地开发 +npm run dev +npm run dev:kv +``` + +--- + + +## 开源协议 + +LGPL-3.0 License + +--- + +## 致谢 + +- [Bitwarden](https://bitwarden.com/) - 原始设计与客户端 +- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - 服务端实现参考 +- [Cloudflare Workers](https://workers.cloudflare.com/) - 无服务器平台 + +--- + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=shuaiplus/NodeWarden&type=timeline&legend=top-left)](https://www.star-history.com/#shuaiplus/NodeWarden&type=timeline&legend=top-left) \ No newline at end of file