
How to Self-Host a BitWarden Compatible Password Vault
Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands.
Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands. By self-hosting your password manager; you take control of your own security.
BitWarden is widely regarded as one of most trusted in password management domain and its source code is made available under AGPL-3.0 licence. An unofficial BitWarden compatible server, NodeWarden, is written in Typescript and can be deployed for free on Cloudflare.
Feature Comparison with the Official BitWarden Server
| Capability | BitWarden | NodeWarden | Notes |
|---|---|---|---|
| Web Vault | ✅ | ✅ | Original Web Vault interface |
Full sync /api/sync | ✅ | ✅ | Compatibility optimised for official clients |
| 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 | ❌ | ✅ | Scheduled backup to WebDAV / S3 |
| 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 | Currently only user-level TOTP |
| SSO / SCIM / Enterprise directory | ✅ | ❌ | Not implemented |
What we need:
- A GitHub Account
- A Cloudflare Account (Free) with R2 Storage enabled.
- Optional: A custom domain name managed in Cloudflare.
Phase 1: Prepare the Code:
- Fork the NodeWarden repository from https://github.com/Tech-Voyage-Dev/nodewarden or original repository, https://github.com/shuaiplus/nodewarden in GitHub

- Enable the Sync Upstream Workflow

Phase 2: Deploy to Cloudflare
- Create a Worker Application in Cloudflare

- Select 'Continue with GitHub' to deploy the app.


- Wait a few moments for Cloudflare to build and deploy your app. It will give you a default
worker.devURL. (Optional) Add a Custom Domain: * In your Cloudflare Worker settings, go to the Settings tab.- Click + Add.
- Type in your preferred domain and follow the prompts.


Phase 3: Secure Your Server (The JWT Secret)
- Head to the web browser and enter the custom domain name or the generated 'worker.dev' domain.
- You will get 'JWT_SECRET is missing'.

- Copy the generated secret key and head back to the Settings tab on the NodeWarden Worker, then click on '+ Add' button on 'Variables and Secrets' section.


- Enter the generated secret and click on the 'Deploy / Save' button.
Phase 4: Create Your Admin Account
- Go back to the web browser and refresh the page, you will get the following login page.

- Click on 'Create Account' to create the admin account.

- Login using the created admin account to the Dashboard.

- Now we have the server deployed and running. We start configuring the BitWarden clients.
Phase 5: Connect Your Devices
You can use the official BitWarden apps on all your devices.
Chrome Extension
- Install the BitWarden Chrome extension
- Open the extension.
- Click the link next to 'Accessing:' at the bottom of the popup.

- Enter the domain name of the NodeWarden server.

- Save the settings and log in with your account.
iOS App
- Install the BitWarden app from the App Store
- Open the app and click on 'Self-hosted' next to 'Logging in on:'

- Enter the domain name of the NodeWarden server and click on '✓' button.

Other Clients
NodeWarden has been tested and confirmed compatible with these official BitWarden clients:
- ✅ Windows desktop
- ✅ Android/iOS mobile apps
- ✅ Browser extensions
- ✅ Linux desktop
- ⚠️ macOS desktop (not fully verified)
Vault Backup
NodeWarden allows you to back up your vault to a local computer or remote storage (WebDAV or S3-compatible storage).
To automate remote backups:
- Configure the remote storage details inside the NodeWarden dashboard.
- Make sure the Cron task is set on Cloudflare Worker settings for auto remote backup.

Final Security thoughts
- Secure the Cloudflare account access, otherwise the data can be compromised. Enable the Two-Factor Authentication (2FA) or Passkey on your Cloudflare account immediately.
- Host the NodeWarden on a dedicated Cloudflare account. Do not share resources with other web apps to minimise the security risks.
- Secure NodeWarden with Cloudflare