Bitwarden-compatible server running on Cloudflare Workers
  • TypeScript 93.4%
  • CSS 4.7%
  • JavaScript 1.3%
  • HTML 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
KiritoXDone a72592e76e
fix(cipher): clear omitted notes on full update (#363)
Treat omitted nullable cipher fields as cleared during full updates so stale encrypted notes are not restored by merge fallback.

Fixes #362
2026-08-30 01:57:41 +08:00
.codegraph chore: update .gitignore file 2026-06-20 00:01:36 +08:00
.github Update FUNDING.yml 2026-07-08 11:59:17 +08:00
migrations fix(auth): prevent unexpected session logout 2026-07-13 02:11:12 +08:00
scripts security: prevent websocket JWT leakage through URL query tokens (#349) 2026-08-30 01:56:31 +08:00
shared chore: release v1.8.0 2026-07-17 11:38:42 +08:00
src fix(cipher): clear omitted notes on full update (#363) 2026-08-30 01:57:41 +08:00
webapp security: prevent websocket JWT leakage through URL query tokens (#349) 2026-08-30 01:56:31 +08:00
.gitignore fix(deps): update nanoid to version 3.3.18 2026-08-30 01:46:42 +08:00
CONTRIBUTING.md feat: add contributing guidelines and pull request template; update schema comments and documentation 2026-05-07 20:29:39 +08:00
LICENSE Update license from MIT to LGPL-3.0 in README files and package.json; add LICENSE file 2026-02-04 22:07:43 +08:00
NodeWarden.png feat: replace PNG logos with SVG for better scalability and update styles for improved responsiveness 2026-04-27 00:57:45 +08:00
NodeWarden.svg feat: update SVG logos and enhance brand wordmark styling 2026-04-27 02:01:27 +08:00
package-lock.json fix(deps): update nanoid to version 3.3.18 2026-08-30 01:46:42 +08:00
package.json security: prevent websocket JWT leakage through URL query tokens (#349) 2026-08-30 01:56:31 +08:00
postcss.config.js Refactor styles to utilize Tailwind CSS utility classes for improved consistency and maintainability across forms, motion, shell, and vault components. Remove deprecated reduced-motion styles and consolidate motion-related animations. Update color tokens for better contrast and accessibility. Introduce a new Tailwind CSS configuration file. 2026-04-24 15:14:12 +08:00
README.md feat: add Web Vault visibility switch 2026-07-17 11:32:43 +08:00
README_ZH.md feat: add Web Vault visibility switch 2026-07-17 11:32:43 +08:00
RELEASE_NOTES.md chore: release v1.8.0 2026-07-17 11:38:42 +08:00
SECURITY.md Add SECURITY.md 2026-06-23 00:07:46 +08:00
tailwind.config.js Refactor styles to utilize Tailwind CSS utility classes for improved consistency and maintainability across forms, motion, shell, and vault components. Remove deprecated reduced-motion styles and consolidate motion-related animations. Update color tokens for better contrast and accessibility. Introduce a new Tailwind CSS configuration file. 2026-04-24 15:14:12 +08:00
tsconfig.json feat: add backup recommendations and update backup strategy UI 2026-03-15 03:34:16 +08:00
wrangler.kv.toml fix: align WebAuthn connectors with Bitwarden clients 2026-07-23 00:39:34 +08:00
wrangler.toml fix: align WebAuthn connectors with Bitwarden clients 2026-07-23 00:39:34 +08:00

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

  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:

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


Contributors

NodeWarden contributors

Star History

Star History Chart