---
title: "How to Self-Host a BitWarden Compatible Password Vault"
canonical_url: "https://techvoyage.dev/article/self-hosting-nodewarden-at-cloudflare"
last_updated: "2026-06-14T11:05:19.502Z"
meta:
  description: "Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands."
  "og:description": "Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands."
  "og:title": "How to Lock Passwords in Your Own Vault by Self Hosting BitWarden Compatible Server"
  "twitter:description": "Your passwords are your most critical digital property, and keeping them secure means keeping them in your own hands."
  "twitter:title": "How to Lock Passwords in Your Own Vault by Self Hosting BitWarden Compatible Server"
---

[Home](https://techvoyage.dev/)

![Thumbnail for self-hosting Bitwarden compatible server tutorial, showing a digital vault and a secure server rack.](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/self-hosting-bitwarden-vault.webp) # **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.

May 25, 2026 -8 MIN READ

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: 1. **A GitHub Account**2. **A Cloudflare Account** (Free) with R2 Storage enabled. 3. _Optional:_ A custom domain name managed in Cloudflare. ### Phase 1: Prepare the Code: 1. Fork the NodeWarden repository from [**https://github.com/Tech-Voyage-Dev/nodewarden**](https://github.com/Tech-Voyage-Dev/nodewarden) or original repository, [**https://github.com/shuaiplus/nodewarden**](https://github.com/shuaiplus/nodewarden) in GitHub ![Forking the NodeWarden repository on GitHub](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/fork-nodewarden-repo.webp) 2. Enable the Sync Upstream Workflow ![Enabling the Sync Upstream workflow in GitHub Actions](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/enable-sync-upstream.webp) ### Phase 2: Deploy to Cloudflare 1. Create a Worker Application in Cloudflare ![Creating a new Worker application in the Cloudflare dashboard](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/create-cloudflare-worker.webp) 2. Select 'Continue with GitHub' to deploy the app. ![Deploying the NodeWarden app by connecting to GitHub](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/deploy-github-repo.webp)![Cloudflare Worker build and deployment progress](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/cloudflare-deploy-status.webp) 3. Wait a few moments for Cloudflare to build and deploy your app. It will give you a default `**worker.dev**` URL. **(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. ![Navigating to custom domain settings in Cloudflare Worker](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/worker-settings-custom-domain.webp)![Adding a custom domain to the Cloudflare Worker](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/add-custom-domain.webp) ### Phase 3: Secure Your Server (The JWT Secret) 1. Head to the web browser and enter the custom domain name or the generated 'worker.dev' domain. 2. You will get '**JWT_SECRET is missing'**. ![JWT_SECRET is missing error message on NodeWarden server](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/jwt-secret-missing-error.webp) 3. 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. ![Variables and Secrets section in Cloudflare Worker settings](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/worker-variables-secrets.webp)![Adding the generated JWT secret to Cloudflare Worker variables](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/add-jwt-secret.webp) 4. Enter the generated secret and click on the '**Deploy / Save**' button. ### Phase 4: Create Your Admin Account 1. Go back to the web browser and refresh the page, you will get the following login page. ![NodeWarden server login page](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/nodewarden-login.webp) 2. Click on '**Create Account**' to create the admin account. ![Clicking the Create Account button on NodeWarden login page](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/create-account-button.webp) 3. Login using the created admin account to the Dashboard. ![NodeWarden admin dashboard overview](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/nodewarden-dashboard.webp) 4. 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 1. Install the BitWarden Chrome extension 2. Open the extension. 3. Click the link next to 'Accessing:' at the bottom of the popup. ![Selecting self-hosted option in Bitwarden Chrome extension](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/bitwarden-extension-self-hosted.webp) 4. Enter the domain name of the NodeWarden server. ![Entering server URL in Bitwarden Chrome extension](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/bitwarden-extension-domain.webp) 5. Save the settings and log in with your account. #### iOS App 1. Install the BitWarden app from the App Store 2. Open the app and click on 'Self-hosted' next to 'Logging in on:' ![Accessing self-hosted settings in Bitwarden iOS app](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/bitwarden-ios-self-hosted.webp) 3. Enter the domain name of the NodeWarden server and click on '✓' button. ![Configuring server URL in Bitwarden iOS app](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/bitwarden-ios-domain.webp) #### 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. ![Configuring Cron triggers for automatic vault backups in Cloudflare](https://inimages.techvoyage.dev/articles/Self%20hosting%20NodeWarden%20at%20Cloudflare/cloudflare-worker-cron.webp) # **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**](https://techvoyage.dev/article/how-to-secure-nodewarden-at-cloudflare) # **Reference**

- [**Official NodeWarden Start Guide**](https://nodewarden.app/guide/start)

[Share](https://api.whatsapp.com/send?text=https%3A%2F%2Ftechvoyage.dev%2Farticle%2Fself-hosting-nodewarden-at-cloudflare) [Share](https://www.reddit.com/submit?url=https%3A%2F%2Ftechvoyage.dev%2Farticle%2Fself-hosting-nodewarden-at-cloudflare) [Share](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ftechvoyage.dev%2Farticle%2Fself-hosting-nodewarden-at-cloudflare) [Share](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Ftechvoyage.dev%2Farticle%2Fself-hosting-nodewarden-at-cloudflare) [Share](https://x.com/intent/post?url=https%3A%2F%2Ftechvoyage.dev%2Farticle%2Fself-hosting-nodewarden-at-cloudflare)

  [**Stop Exposing Your Vault: Secure NodeWarden with Cloudflare** The moment your NodeWarden is exposed to the public on the Internet, it starts attracting thousands of automated bots scrapping for vulnerabilities 24/7.](https://techvoyage.dev/article/how-to-secure-nodewarden-at-cloudflare)