Vaultwarden — Lightweight Self-Hosted Bitwarden Server
Vaultwarden is an unofficial Bitwarden-compatible server written in Rust. Full Bitwarden features with minimal resources — perfect for self-hosted password management.
What it is
Vaultwarden is an unofficial, lightweight Bitwarden-compatible server written in Rust. It implements the Bitwarden API, allowing you to use all official Bitwarden client apps (browser extensions, desktop, mobile) with a self-hosted backend. Features include password vault, cross-device sync, organizations for password sharing, Send for secure sharing, TOTP generator, file attachments, emergency access, and vault health reports. Released under AGPL-3.0.
Vaultwarden targets self-hosters who want Bitwarden's premium features (Organizations, TOTP, Send, Attachments) without paying for the premium subscription, running on hardware as modest as a Raspberry Pi.
How it saves time or tokens
Vaultwarden provides all Bitwarden premium features for free when self-hosted. The password vault with auto-fill saves time on every login. Cross-device sync ensures passwords are always accessible. The TOTP generator eliminates the need for a separate 2FA app. Organizations enable secure password sharing with team members without sending credentials over chat or email.
How to use
- Run the Docker container.
- Access the web vault and register your account.
- Install official Bitwarden apps on all devices and configure them to point to your Vaultwarden server URL.
Example
docker run -d --name vaultwarden \
-p 80:80 \
-v vw-data:/data \
vaultwarden/server:latest
# Access at http://localhost
# Use official Bitwarden apps with your server URL
Related on TokRepo
- AI Tools for Security -- Password management and security tools
- AI Tools for Self-Hosted -- Self-hosted security applications
Common pitfalls
- HTTPS is strongly recommended for production; passwords transmitted over HTTP are vulnerable to interception. Use a reverse proxy with SSL.
- Disable new user registration after creating your accounts; open registration allows anyone who discovers your server to create accounts.
- Backup the /data volume regularly; losing the database means losing all passwords. Automate backups with a cron job.
Frequently Asked Questions
Yes. Vaultwarden implements the Bitwarden API, so all official Bitwarden clients work -- browser extensions for Chrome/Firefox/Safari/Edge, desktop apps for Windows/macOS/Linux, and mobile apps for iOS/Android. You configure the server URL in the app settings.
Vaultwarden includes all premium features for free: Organizations (shared vaults), TOTP authenticator, Bitwarden Send, file attachments, emergency access, vault health reports, and Duo/YubiKey 2FA support. These features require a paid subscription with official Bitwarden.
Yes. Vaultwarden is written in Rust and uses SQLite by default, requiring minimal resources. It runs well on a Raspberry Pi with as little as 256MB RAM. The ARM Docker image is officially maintained.
The official Bitwarden server uses a Microsoft SQL Server stack with higher resource requirements (2GB+ RAM). Vaultwarden uses Rust with SQLite and runs on 50-100MB RAM. Vaultwarden includes premium features for free. The official server has better enterprise features like SCIM and SSO.
Vaultwarden implements the same client-side encryption as official Bitwarden. Passwords are encrypted on your device before being sent to the server. The server never sees unencrypted passwords. The Rust implementation has been reviewed by the community. However, it is not officially audited like Bitwarden's server.
Citations (3)
- Vaultwarden GitHub— Vaultwarden is an unofficial Bitwarden-compatible server written in Rust
- Vaultwarden Wiki— Implements the Bitwarden API for use with official client apps
- Bitwarden Security— Bitwarden end-to-end encryption architecture
Related on TokRepo
Source & Thanks
- GitHub: dani-garcia/vaultwarden — 58.2K+ ⭐ | AGPL-3.0
- Wiki: github.com/dani-garcia/vaultwarden/wiki
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.