{"id":43919213,"url":"https://github.com/shuaiplus/nodewarden","last_synced_at":"2026-04-30T23:00:59.011Z","repository":{"id":335848227,"uuid":"1147229870","full_name":"shuaiplus/nodewarden","owner":"shuaiplus","description":"A third-party Bitwarden server running on Cloudflare Workers","archived":false,"fork":false,"pushed_at":"2026-04-23T16:51:39.000Z","size":4131,"stargazers_count":1740,"open_issues_count":10,"forks_count":1606,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-23T17:27:08.609Z","etag":null,"topics":["bitwarden","cloudflare","cloudflare-d1","cloudflare-r2","cloudflare-workers","end-to-end-encryption","nodewarden","password","password-manager","preact","self-hosted","serverless","typescript","vaultwarden","web-vault","workers","zero-knowledge"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shuaiplus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-01T12:22:11.000Z","updated_at":"2026-04-23T17:18:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"f9a878bd-204b-4fc9-9c6e-2f693bf457d5","html_url":"https://github.com/shuaiplus/nodewarden","commit_stats":null,"previous_names":["shuaiplus/nodewarden"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/shuaiplus/nodewarden","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuaiplus%2Fnodewarden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuaiplus%2Fnodewarden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuaiplus%2Fnodewarden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuaiplus%2Fnodewarden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shuaiplus","download_url":"https://codeload.github.com/shuaiplus/nodewarden/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuaiplus%2Fnodewarden/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32479448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitwarden","cloudflare","cloudflare-d1","cloudflare-r2","cloudflare-workers","end-to-end-encryption","nodewarden","password","password-manager","preact","self-hosted","serverless","typescript","vaultwarden","web-vault","workers","zero-knowledge"],"created_at":"2026-02-06T22:07:03.290Z","updated_at":"2026-04-30T23:00:58.996Z","avatar_url":"https://github.com/shuaiplus.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./NodeWarden.svg\" alt=\"NodeWarden Logo\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  运行在 Cloudflare Workers 上的 Bitwarden 兼容服务端\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://workers.cloudflare.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Powered%20by-Cloudflare-F38020?logo=cloudflare\u0026logoColor=white\" alt=\"Powered by Cloudflare\" /\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-LGPL--3.0-2ea44f\" alt=\"License: LGPL-3.0\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/shuaiplus/NodeWarden/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/shuaiplus/NodeWarden?display_name=tag\" alt=\"Latest Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/shuaiplus/NodeWarden/actions/workflows/sync-upstream.yml\"\u003e\u003cimg src=\"https://github.com/shuaiplus/NodeWarden/actions/workflows/sync-upstream.yml/badge.svg\" alt=\"Sync Upstream\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./RELEASE_NOTES.md\"\u003e更新日志\u003c/a\u003e |\n  \u003ca href=\"https://github.com/shuaiplus/NodeWarden/issues/new/choose\"\u003e提交问题\u003c/a\u003e |\n  \u003ca href=\"https://github.com/shuaiplus/NodeWarden/releases/latest\"\u003e最新发布\u003c/a\u003e\u003cbr /\u003e\n  \u003ca href=\"./nodewarden.wiki/Home.md\"\u003e文档首页\u003c/a\u003e |\n  \u003ca href=\"./nodewarden.wiki/快速开始.md\"\u003e快速开始\u003c/a\u003e\u003cbr /\u003e\n  \u003ca href=\"https://t.me/NodeWarden_News\"\u003eTelegram 频道\u003c/a\u003e |\n  \u003ca href=\"https://t.me/NodeWarden_Official\"\u003eTelegram 群组\u003c/a\u003e\u003cbr /\u003e\n\u003c/p\u003e\n\nEnglish: \u003ca href=\"./README_EN.md\"\u003e\u003ccode\u003eREADME_EN.md\u003c/code\u003e\u003c/a\u003e\n\n\u003e **免责声明**  \n\u003e 本项目仅供学习与交流使用，请定期备份你的密码库。  \n\u003e 本项目与 Bitwarden 官方无关，请不要向 Bitwarden 官方反馈 NodeWarden 的问题。\n\n---\n\n## 与 Bitwarden 官方服务端能力对比\n\n| 能力 | Bitwarden | NodeWarden | 说明 |\n|---|---|---|---|\n| 网页密码库 | ✅ | ✅ | **原创Web Vault界面** |\n| 全量同步 `/api/sync` | ✅ | ✅ | 已针对官方客户端做兼容优化 |\n| 附件上传 / 下载 | ✅ | ✅ | Cloudflare R2 或 KV |\n| Send | ✅ | ✅ | 支持文本与文件 Send |\n| 导入 / 导出 | ✅ | ✅ | 支持 Bitwarden JSON / CSV / **ZIP 导入（包括附件）** |\n| **云端备份中心** | ❌ | ✅ | **支持 WebDAV / E3 定时备份** |\n| 密码提示（网页端） | ⚠️ 有限 | ✅ | **无需发送邮件** |\n| TOTP / Steam TOTP | ✅ | ✅ | 含 `steam://` 支持 |\n| 多用户 | ✅ | ✅ | 支持邀请码注册 |\n| 组织 / 集合 / 成员权限 | ✅ | ❌ | 未实现 |\n| 登录 2FA | ✅ | ⚠️ 部分支持 | 当前仅支持用户级 TOTP |\n| SSO / SCIM / 企业目录 | ✅ | ❌ | 未实现 |\n\n---\n\n## 已测试客户端\n\n- ✅ Windows 桌面端\n- ✅ 手机 App\n- ✅ 浏览器扩展\n- ✅ Linux 桌面端\n- ⚠️ macOS 桌面端尚未完整验证\n\n---\n\n## 网页部署\n\n1. Fork `NodeWarden` 仓库到自己的 GitHub 账号\n2. 进入  [Cloudflare Workers 创建页面](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create)\n3. 选择 `Continue with GitHub`\n4. 选择你刚刚 Fork 的仓库\n5. 保持默认配置继续部署\n6. 如果你打算用 KV 模式，把部署命令改成 `npm run deploy:kv`\n7. 等部署完成后，打开生成的 Workers 域名\n8. 根据页面提示设置`JWT_SECRET` ，不建议临时乱填。这个值直接关系到令牌签发安全，正式环境至少使用 32 个字符以上的随机字符串。\n\n\u003e [!TIP] \n\u003e 默认R2与可选KV的区别：\n\u003e   | 储存 | 是否需绑卡 | 单个附件/Send文件上限 | 免费额度 |\n\u003e   |---|---|---|---|\n\u003e   | R2 | 需要 | 100 MB（软限制可更改） | 10 GB |\n\u003e   | KV | 不需要 | 25 MiB（Cloudflare限制） | 1 GB |\n\n\n## 更新方法：\n- 手动：打开你 Fork 的 GitHub 仓库，看到顶部同步提示后，点击 `Sync fork` ➜ `Update branch`\n- 自动：进入你的 Fork 仓库 ➜ `Actions` ➜ `Sync upstream` ➜ `Enable workflow`，会在每天凌晨 3 点自动同步上游。\n\n\n\n## CLI 部署\n\n```powershell\ngit clone https://github.com/shuaiplus/NodeWarden.git\ncd NodeWarden\n\nnpm install\nnpx wrangler login\n\n# 默认：R2 模式\nnpm run deploy\n\n# 可选：KV 模式\nnpm run deploy:kv\n\n# 本地开发\nnpm run dev\nnpm run dev:kv\n```\n\n---\n\n## 云端备份说明\n\n- 远程备份支持 **WebDAV** 与 **E3**\n- 勾选“包含附件”后：\n  - ZIP 内仍只包含 `db.json` 与 `manifest.json`\n  - 真实附件单独存放在 `attachments/`\n  - 后续备份会按稳定 blob 名复用已有附件，不会每次全量重传\n- 远程还原时：\n  - 会从 `attachments/` 目录按需读取附件\n  - 缺失的附件会被安全跳过\n  - 被跳过的附件不会在恢复后的数据库中留下脏记录\n\n---\n\n## 导入 / 导出\n\n当前支持的导入来源包括：\n\n- Bitwarden JSON\n- Bitwarden CSV\n- Bitwarden 密码库 + 附件 ZIP\n- NodeWarden JSON\n- 网页导入器里可见的多种浏览器 / 密码管理器格式\n\n当前支持的导出方式包括：\n\n- Bitwarden JSON\n- Bitwarden 加密 JSON\n- 带附件的 ZIP 导出\n- NodeWarden JSON 系列\n- 备份中心中的实例级完整手动导出\n\n---\n\n\n## 开源协议\n\nLGPL-3.0 License\n\n---\n\n## 致谢\n\n- [Bitwarden](https://bitwarden.com/) - 原始设计与客户端\n- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - 服务端实现参考\n- [Cloudflare Workers](https://workers.cloudflare.com/) - 无服务器平台\n\n---\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=shuaiplus/NodeWarden\u0026type=timeline\u0026legend=top-left)](https://www.star-history.com/#shuaiplus/NodeWarden\u0026type=timeline\u0026legend=top-left)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuaiplus%2Fnodewarden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshuaiplus%2Fnodewarden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuaiplus%2Fnodewarden/lists"}