shuaiplus
nodewarden
TypeScript

Bitwarden-compatible server running on Cloudflare Workers

Last updated Jul 9, 2026
3.0k
Stars
3.2k
Forks
13
Issues
+43
Stars/day
Attention Score
95
Language breakdown
TypeScript 93.7%
CSS 5.5%
HTML 0.5%
JavaScript 0.4%
β–Έ Files click to expand
README

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

| Feature | Bitwarden Free | NodeWarden | Notes | |---|---|---|---| | Web vault | βœ… | βœ… | Original Web Vault UI | | TOTP | ❌ | βœ… | Includes steam:// support | | PWA / offline | ❌ | βœ… | Installable, offline | | Passkey login | βœ… | βœ… | passwordless auth | | API keys | βœ… | βœ… | CLI keys; create and rotate | | Login 2FA | βœ… | βœ… | TOTP, YubiKey, Passkey | | 2FA recovery codes | βœ… | βœ… | One-time 2FA disable codes | | Real-time push sync | βœ… | βœ… | All device sync | | Attachments / Send | βœ… | βœ… | Cloudflare R2 or KV | | Import / export | βœ… | βœ… | Bitwarden JSON / CSV / ZIP | | Cloud backup center | ❌ | βœ… | Scheduled WebDAV / S3 incrementals | | Device management | βœ… | βœ… | Remove devices; trust controls | | Login requests | βœ… | βœ… | Cross-device login approval/unlock | | Multi-user | βœ… | βœ… | Invite-code registration | | Domain rules | βœ… | βœ… | Equivalent domains, global exclusions | | Fill-assist | βœ… | βœ… | POST /fill-assist| | Organizations / collections / roles | βœ… | ❌ | Not implemented | | SSO / SCIM / directory | βœ… | ❌ | Not implemented |


Tested clients

  • βœ… Windows desktop
  • βœ… Mobile app
  • βœ… Browser extension
  • βœ… Linux desktop
  • ⚠️ macOS desktop not fully verified yet

Visual quick deploy

  • Fork the NodeWarden repository to your GitHub account
  • Open Cloudflare Workers & Pages
  • Choose Continue with GitHub and select your fork
  • 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
  • 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.
  • 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:
| Storage | Card required | Max single attachment / Send file | Free tier |
|---|---|---|---|
| R2 | Yes | 100 MB (soft limit, adjustable) | 10 GB |
| KV | No | 25 MiB (Cloudflare limit) | 1 GB |

How to update

  • Manual: open your fork on GitHub; when the sync banner appears, click Sync fork β†’ Update 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


Star History

Star History Chart

Β© 2026 GitRepoTrend Β· shuaiplus/nodewarden Β· Updated daily from GitHub