Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

NodeWarden Logo

Bitwarden-compatible server running on Cloudflare Workers

Powered by Cloudflare License: LGPL-3.0 Latest Release

Telegram Channel | Telegram Group

中文 | Contributing | Official wiki

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

FeatureBitwarden FreeNodeWardenNotes
Web vaultOriginal Web Vault UI
TOTPIncludes steam:// support
PWA / offlineInstallable, offline
Passkey loginpasswordless auth
API keysCLI keys; create and rotate
Login 2FATOTP, YubiKey, Passkey
2FA recovery codesOne-time 2FA disable codes
Real-time push syncAll device sync
Attachments / SendCloudflare R2 or KV
Import / exportBitwarden JSON / CSV / ZIP
Cloud backup centerScheduled WebDAV / S3 incrementals
Device managementRemove devices; trust controls
Login requestsCross-device login approval/unlock
Multi-userInvite-code registration
Domain rulesEquivalent domains, global exclusions
Fill-assistPOST /fill-assist
Organizations / collections / rolesNot implemented
SSO / SCIM / directoryNot implemented

Tested clients

  • ✅ Windows desktop
  • ✅ Mobile app
  • ✅ Browser extension
  • ✅ Linux desktop
  • ⚠️ macOS desktop not fully verified yet

Visual quick deploy

  1. Fork the NodeWarden repository to your GitHub account
  2. Open Cloudflare Workers & Pages
  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
  • The default Workers hostname may be unreachable on some networks. To use a custom domain, add it in Workers settings.

  • 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.

  • To hide the Web Vault, add a text variable named HIDE_WEB_VAULT with the value 1 under Workers settings → Variables and Secrets. While enabled, server-hosted frontend pages and static assets return 404 Not Found, while the login, sync, attachment, icon, notification, and other server endpoints used by Bitwarden clients remain available; an already installed or cached PWA can continue using its local frontend. Delete the variable (or change it to anything other than 1) to restore the server-hosted Web Vault.

  • 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] Default R2 vs optional KV:

StorageCard requiredMax single attachment / Send fileFree tier
R2Yes100 MB (soft limit, adjustable)10 GB
KVNo25 MiB (Cloudflare limit)1 GB

How to update

  • Manual: open your fork on GitHub; when the sync banner appears, click Sync forkUpdate branch

CLI deploy

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

License

LGPL-3.0 License


Credits


Contributors

NodeWarden contributors

Star History

Star History Chart

关于 About

Bitwarden-compatible server running on Cloudflare Workers
bitwardencloudflarecloudflare-d1cloudflare-r2cloudflare-workersend-to-end-encryptionnodewardenpasswordpassword-managerpreactself-hostedserverlesstypescriptvaultwardenweb-vaultworkerszero-knowledge

语言 Languages

TypeScript93.4%
CSS4.7%
JavaScript1.4%
HTML0.6%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
742
Total Commits
峰值: 108次/周
Less
More

核心贡献者 Contributors