MrTechKing

5 min read

Vaultwarden: Host Your Own Bitwarden-Compatible Password Server (GitHub, Scanned)

A lightweight password server you host yourself that works with the official Bitwarden apps and browser extensions.

Vaultwarden logo
✅
Scan: safe. Nothing malicious, and the critical advisory is in its browser test suite, not the server. The vaultwarden advisories it lists were fixed in earlier releases. Scanned Nov 10, 2026; the full report is below.

Vaultwarden lets you run your own password manager server while keeping the polished Bitwarden apps you may already know. It reimplements the Bitwarden server API in Rust as a lighter alternative to the official, resource-heavy server, and the official Bitwarden mobile apps, desktop apps and browser extensions connect to it as if it were Bitwarden's own service. A modified Bitwarden web vault comes bundled in the container.

Almost everything is there: personal vaults, Send, attachments, website icons, organisations with collections, sharing, member roles, groups, event logs and policies, plus two-factor login with authenticator apps, email, FIDO2 WebAuthn, YubiKey or Duo, and emergency access. There is an admin page for running the server.

It was called bitwarden_rs until 2021 and is AGPL-3.0 licensed, with about 70,000 stars and 221 contributors. Version 1.37.5 came out on 1 November 2026. It is not associated with Bitwarden, Inc., though the README notes one active maintainer works there and contributes on their own time.

  • Repository: github.com/dani-garcia/vaultwarden
  • Licence: AGPL-3.0 (GNU Affero General Public License v3.0)
  • Language: Rust. Stars: 70.5K. Forks: 3,437. Last push: Nov 4, 2026.
  • Scan: safe, Nov 10, 2026, commit 17b159b

Who it is for

Self-hosters who want one password vault for the family or a small team without per-user fees, and Bitwarden users who would rather keep the server under their own roof.

Getting started

1. Pull the container image

docker pull vaultwarden/server:latest

2. Run it, keeping data in /vw-data and listening only on this machine

docker run --detach --name vaultwarden --env DOMAIN="https://vw.domain.tld" --volume /vw-data/:/data/ --restart unless-stopped --publish 127.0.0.1:8000:80 vaultwarden/server:latest

3. Put it behind a reverse proxy with HTTPS, then point the Bitwarden apps at your domain

https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples

The web vault only works over HTTPS, so plan for a domain and a certificate. This is your password vault: keep the server updated and back up /vw-data regularly. The README says the project cannot be held liable for data loss.

Safety scan

We cloned dani-garcia/vaultwarden at commit 17b159b on Nov 10, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secret hits, no pattern hits and no committed binaries across 580 files and about 79,000 lines, mostly Rust.
  • 105 advisories, but most are not in the server. The 1 critical (proxy-addr) and 27 of the 30 high are in playwright/package-lock.json, the end-to-end browser tests, which are not part of what you run.
  • The server's Cargo.lock has 3 high, 3 moderate, 2 low and 4 unrated. All 3 high are Vaultwarden's own past advisories, listed only because the code's internal version number is a fixed 1.0.0. GitHub's advisory records show them fixed in 1.32.5 and 1.35.4, and the current release is 1.37.5. Update when new releases come out; a password server is worth keeping current.
  • build.rs only sets which databases to build for and reads the version from git. docker/start.sh is a 30-line container start script. Neither downloads anything.
  • The hosts fit the features: bitwarden.com, Have I Been Pwned, Duo, the 2fa.directory icon list and email alias services such as SimpleLogin and addy.io. We found no analytics service.
  • 8 workflows, none using pull_request_target, and all 16 third-party actions are pinned to commits. A security policy and CodeQL are present.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious codeNone found.
Install-time code1 Cargo build script. 2 installer scripts
Committed binariesNone.
CI workflows8 workflows. None use pull_request_target. 0 of 16 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often github.com, bitwarden.com, datatables.net, haveibeenpwned.com. No URLs to bare IP addresses.
Known vulnerabilities105 advisories across 856 pinned packages: 1 critical, 30 high, 55 moderate, 15 low, 4 unrated. Cargo.lock: 656 packages, 12 advisories; playwright/package-lock.json: 225 packages, 93 advisories.
Project hygieneHas security policy, CodeQL, licence file. Missing automated dependency updates, contributing guide.
OpenSSF ScorecardNot scored: the project is not in Scorecard's weekly index.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Installer scripts (2)
Worst known vulnerabilities (24 of 105)
AdvisorySeverityPackageSummary
GHSA-jqcg-44mw-7w3hcriticalproxy-addr@2.0.7proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet
GHSA-h4hq-rgvh-wh27highvaultwarden@1.0.0Vaultwarden's Collection Management Operations Allowed Without `manage` Verification for Manager Role
GHSA-r32r-j5jq-3w4mhighvaultwarden@1.0.0Vaultwarden has Privilege Escalation via Bulk Permission Update to Unauthorized Collections by Manager
GHSA-x7m9-mv49-fv73highvaultwarden@1.0.0Vaultwarden vulnerable to user impersonation
GHSA-27r3-jxmh-p828highbody-parser@2.2.2body-parser vulnerable to Denial of Service via trailing bytes after a compressed request body
GHSA-vc2v-76pw-4v95highcompression@1.8.1compression vulnerable to Denial of Service via memory leak on premature response close
GHSA-mrv2-3pqr-j5jrhighdompurify@3.4.1DOMPurify IN_PLACE: hook that removes a parent or sibling leaves the detached subtree's event handlers armed (incomplete…
GHSA-2gc4-cqfq-p2gvhighengine.io@6.6.8Socket.IO: Engine.IO Protocol Revision Mismatch DoS
GHSA-22p9-wv53-3rq4highlinkify-it@5.0.0LinkifyIt#match scan loop has quadratic algorithmic complexity
GHSA-v245-v573-v5vmhighlinkify-it@5.0.0linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on attacker text
GHSA-2x7j-588g-ccc2highnodemailer@8.0.5Nodemailer: Quadratic (O(n²)) time complexity in addressparser allows remote denial of service via a crafted address lis…
GHSA-p6gq-j5cr-w38fhighnodemailer@8.0.5Nodemailer: Message-level raw option bypasses disableFileAccess/disableUrlAccess, enabling arbitrary file read and full-…
GHSA-r7g4-qg5f-qqm2highnodemailer@8.0.5Nodemailer: Improper TLS Certificate Validation in OAuth2 Token Fetch Enables Credential Interception
GHSA-v53p-9fqp-m79jhighnodemailer@8.0.5Nodemailer: Quadratic backtracking in the addressparser free-text fallback allows remote denial of service
GHSA-2x7j-588g-ccc2highnodemailer@8.0.7Nodemailer: Quadratic (O(n²)) time complexity in addressparser allows remote denial of service via a crafted address lis…
GHSA-p6gq-j5cr-w38fhighnodemailer@8.0.7Nodemailer: Message-level raw option bypasses disableFileAccess/disableUrlAccess, enabling arbitrary file read and full-…
GHSA-r7g4-qg5f-qqm2highnodemailer@8.0.7Nodemailer: Improper TLS Certificate Validation in OAuth2 Token Fetch Enables Credential Interception
GHSA-v53p-9fqp-m79jhighnodemailer@8.0.7Nodemailer: Quadratic backtracking in the addressparser free-text fallback allows remote denial of service
GHSA-2m8v-j782-fhvrhighsocket.io-parser@4.2.6Socket.IO: Zero-attachment Memory Exhaustion
GHSA-68fv-2mgg-jv7qhighsource-map-js@1.2.1source-map-js allows event-loop denial of service through indexed source-map section offsets
GHSA-2m5v-pch6-74hxhighundici@7.25.0undici vulnerable to TLS certificate validation bypass via dropped tls options in Agent
GHSA-4cwx-7wf7-3272highundici@7.25.0undici vulnerable to cross-user information disclosure and parse-time crash via degenerate private cache directives
GHSA-4w7w-5xrc-9h26highundici@7.25.0undici vulnerable to cache poisoning and cross-user disclosure via cross-origin redirects
GHSA-hm92-r4w5-c3mjhighundici@7.25.0undici vulnerable to cross-origin request routing via SOCKS5 proxy pool reuse

By the numbers

Stars70.5K
Forks3,437
Contributors221
Commits3,148
Open issues15
Open pull requests77
Releases89
Latest release1.37.5
LicenceAGPL-3.0
Main languageRust
Project age8 years
Last pushNov 4, 2026
Tracked files580
Lines of code79.1K
Checkout size3 MB

Lines by language: Rust 36.2K, JavaScript 22.1K, CSS 12.8K, SQL 2,134, TypeScript 2,093, YAML 1,286.

Questions

Is Vaultwarden free?

Yes. Vaultwarden is free and open source under AGPL-3.0. You pay only for your own server.

Is Vaultwarden the same as Bitwarden?

No. It is an unofficial, independent server that speaks the same API, so the official Bitwarden apps work with it. For help, use Vaultwarden's own channels, not Bitwarden support. We list Bitwarden's hosted service in our directory at /bitwarden/.

Is it safe to host my own passwords?

It can be, if you look after it: HTTPS, regular updates, backups and a strong admin token. If you do not want that job, a hosted manager is the safer choice.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.