Why Self-Host Your Password Manager?
Password managers are the backbone of any security-conscious workflow. They generate strong, unique passwords for every account, store them encrypted, and sync across all your devices. But when you rely on a cloud-hosted service, you’re trusting a third party with the keys to your digital life — your master password hash, your encrypted vault metadata, and sometimes even hints that can aid an attacker.
Self-hosting a password manager shifts that trust boundary back to you. You control the server, the database, the backups, and the encryption at rest. For individuals, this means zero-knowledge guarantees you can actually verify. For teams and organizations, it means compliance with data sovereignty requirements, no per-user subscription fees at scale, and the ability to integrate with internal identity providers.
The landscape of self-hosted password managers has matured significantly. Three projects stand out in 2026: vaultwarden, Passbolt, and Psono. Each takes a different architectural approach, targets different user profiles, and offers distinct trade-offs. This guide compares all three across features, deployment complexity, security model, and usability — andockerides step-by-step Docker configurations so you can deploy the one that fits your needs.
The Contenders at a Glance
| Feature | Vaultwarden | Passbolt | Psono |
|---|---|---|---|
| Language / Stack | Rust | PHP (CakePHP) + MySQL/MariaDB | Python (Django) + PostgreSQL |
| Compatible Clients | All official Bitwarden apps | Browser extensions, mobile apps, CLI | Browser extensions, mobile apps, desktop |
| Database | SQLite, MySQL, PostgreSQL | MariaDB / MySQL | PostgreSQL |
| Free Tier / Open Source | Fully open source (MIT/Apache) | Community Edition (AGPLv3) | Community Edition (Apache 2.0) |
| Team Features | Organizations, collections, groups | Teams, roles, permissions, groups | Teams, access control, sharing |
| Two-Factor Auth | TOTP, YubiKey, Duo, Email | TOTP, YubiKey, RSA, Authy | TOTP, WebAuthn, FIDO2, YubiKey |
| Emergency Access | ✅ Yes | ✅ Yes | ✅ Yes |
| Password Breach Report | ✅ Yes (via Have I Been Pwned API) | ✅ Yes | ✅ Yes |
| CLI Tool | Via Bitwarden CLI or Vaultwarden CLI | Official passbolt CLI | Official psonocli |
| API | REST (Bitwarden-compatible) | REST + GPG-signed API | REST |
| Docker Image Size | ~30 MB | ~500 MB+ | ~400 MB+ |
| Ideal For | Individuals, families, small teams | Organizations, enterprises | Technical teams, DevOps |
Vaultwarden: The Lightweight Bitwarden-Compatible Server
Vaultwarden is an unofficial, community-maintained server implementation compatible with all official Bitwarden clients. Written in Rust, it’s remarkably lightweight — the Docker image is around 30 MB — and supports the same API as the official Bitwarden server. This means you get the full Bitwarden client experience (browser extensions, mobile apps, desktop apps, CLI) pointed at your own server.
Key Advantages
- Minimal resource footprint: Runs comfortably on a Raspberry Pi or a $5 VPS with 512 MB RAM
- Full Bitwarden ecosystem: Every official Bitwarden client works without modification
- SQLite support: No external database required for single-user or small-team setups
- Active development: Regular updates, strong community, and excellent documentation
Docker Compose Setup
Here’s a production-ready docker-compose.yml for Vaultwarden with SQLite, reverse proxy, and automatic HTTPS via Caddy:
| |
The Caddyfile for automatic TLS:
| |
Start the stack:
| |
Visit https://vault.yourdomain.com/admin and enter your ADMIN_TOKEN to configure sign-up policies, SMTP settings, and view server stats.
Database Backend Options
For teams or production use, switch from SQLite to PostgreSQL:
| |
Security Hardening
- Disable sign-ups after initial setup: Set
SIGNUPS_ALLOWED=falseonce your accounts are created - Enable domain verification:
DOMAIN_VERIFICATION: "true"prevents unauthorized domain associations - Rate limiting: Configure
IP_HEADERand use Caddy or Nginx to rate-limit login attempts - Backup your data: The
/datadirectory contains the SQLite database (if used), attachments, and send data. For PostgreSQL, usepg_dump
| |
Passbolt: The Open-Source Password Manager Built for Teams
Passbolt takes a fundamentally different approach. While Vaultwarden aims to replicate the Bitwarden experience, Passbolt is designed from the ground up for team collaboration with a strong emphasis on GPG-based encryption. Every password shared within a team is encrypted with the recipient’s GPG public key, ensuring that even the server administrator cannot read shared secrets.
Key Advantages
- GPG-based end-to-end encryption: Server never sees plaintext; each user encrypts with the recipient’s public key
- Granular permissions: Folder-level access control, role-based permissions, and audit logs
- Compliance-friendly: Suitable for organizations with strict security requirements (SOC 2, GDPR)
- Active directory / LDAP integration: Enterprise-ready authentication in the Pro edition
- CLI and API: Full automation support with GPG-signed API requests
Docker Compose Setup
Passbolt requires MariaDB and has a more involved setup:
| |
After starting the containers, run the installation script inside the Passbolt container:
| |
Then create your admin user:
| |
This outputs a URL to complete the setup in your browser, where you’ll generate your GPG keypair.
GPG Key Management
The first-time setup generates a GPG keypair for your admin account. This key is used to decrypt passwords shared with you. For team members, each person generates their own GPG keypair (either in-browser or via the CLI). Passbolt’s encryption model means:
- Shared passwords are encrypted with each recipient’s public key
- Server storage only holds encrypted blobs — no single party (including admins) can read all passwords
- Key recovery relies on the user’s private key backup — losing it means losing access to shared passwords
This is a significant architectural difference from Vaultwarden, where the server holds encrypted vaults that are decrypted client-side with the user’s master password.
Psono: The Developer-Focused Password Manager
Psono is a password manager built for technical teams and DevOps workflows. Written in Python with a Django backend, it offers strong security features including client-side encryption, passwordless authentication via WebAuthn, and a robust REST API. What sets Psono apart is its focus on developer workflows: it supports sharing secrets with time-limited access, integrates with CI/CD pipelines, and provides a clean API for automation.
Key Advantages
- Developer-first API: REST API with token-based authentication, designed for CI/CD integration
- Client-side encryption: All encryption happens in the browser or client — server never sees plaintext
- WebAuthn / FIDO2 support: Passwordless login with hardware security keys
- Time-limited access: Grant temporary access to secrets for contractors or short-term projects
- PostgreSQL backend: Robust, scalable database with full-text search capabilities
Docker Compose Setup
| |
After starting the containers, create a superuser:
| |
Then configure the web client by editing the /root/.psono_server/config.yml inside the psono-server container:
| |
Restart the server container to apply changes:
| |
API and CI/CD Integration
Psono’s standout feature is its API, designed for automation. Here’s how to interact with it:
| |
For CI/CD pipelines, you can use the psonocli tool:
| |
This makes Psono an excellent choice for teams that need to inject secrets into deployment pipelines without hardcoding them in CI/CD configuration files.
Security Comparison
| Security Feature | Vaultwarden | Passbolt | Psono |
|---|---|---|---|
| Encryption Model | Client-side AES-256 (Bitwarden protocol) | GPG per-recipient encryption | Client-side AES-256 |
| Master Password Hashing | PBKDF2 (configurable Argon2id) | PBKDF2-SHA512 | Argon2id |
| Zero-Knowledge | ✅ Server cannot decrypt | ✅ Server cannot decrypt | ✅ Server cannot decrypt |
| 2FA Methods | TOTP, YubiKey OTP/U2F, Duo, Email | TOTP, YubiKey, RSA, Authy | TOTP, WebAuthn, FIDO2 |
| Audit Logging | Basic (admin panel) | Comprehensive (all actions) | Comprehensive |
| Password Breach Check | Via Have I Been Pwned API | Via Have I Been Pwned API | Built-in breach monitoring |
| Password Generator | Configurable (length, symbols, etc.) | Configurable | Configurable |
| Secure File Attachments | ✅ Encrypted attachments | ✅ Encrypted file sharing | ✅ Encrypted file sharing |
| Emergency Access | ✅ Time-delayed recovery | ✅ Recovery process | ✅ Emergency access |
All three projects implement true zero-knowledge encryption. The server never has access to your master password or the keys needed to decrypt your vault. This is the fundamental security guarantee that makes self-hosting compelling — even if the server is compromised, the attacker only gets encrypted blobs.
Performance and Resource Requirements
For a home lab or small team, all three options are lightweight. Here’s a practical comparison of minimum and recommended resources:
| Metric | Vaultwarden | Passbolt | Psono |
|---|---|---|---|
| Minimum RAM | 256 MB | 1 GB | 1 GB |
| Recommended RAM | 512 MB | 2 GB | 2 GB |
| Disk Space | 50 MB + attachments | 500 MB + attachments | 200 MB + attachments |
| CPU | 1 core (ARM OK) | 1 core | 1 core |
| Docker Containers | 1 (or 2 with Caddy) | 3 (app, DB, web server) | 3 (server, DB, web client) |
| Startup Time | ~2 seconds | ~15 seconds | ~10 seconds |
Vaultwarden’s Rust implementation gives it a significant advantage in resource efficiency. It can run on a Raspberry Pi Zero W and handle dozens of concurrent users. Passbolt and Psono are heavier due to their PHP/Python stacks and mandatory database servers, but they’re still well within the capabilities of any modern VPS.
Migration Paths
From Bitwarden Cloud to Vaultwarden
Vaultwarden is the easiest migration path if you’re already using Bitwarden:
| |
Alternatively, use the official Bitwarden CLI to script the migration:
| |
From LastPass to Any Self-Hosted Option
All three support CSV import from LastPass:
- Export from LastPass: Account Options → Advanced → Export
- Import the CSV into your self-hosted password manager through the web interface
- Verify all entries, especially secure notes and card data
- Rotate critical passwords after migration (best practice when switching managers)
Which One Should You Choose?
Choose Vaultwarden if:
- You want the simplest, most resource-efficient deployment
- You already use Bitwarden clients and want to keep them
- You’re running on limited hardware (Raspberry Pi, low-end VPS)
- You need individual or family use with basic organization features
Choose Passbolt if:
- You’re deploying for an organization with compliance requirements
- GPG-based per-recipient encryption is a requirement
- You need granular access control and comprehensive audit logging
- Your team is comfortable with GPG key management
Choose Psono if:
- You need tight CI/CD and API integration for secrets management
- Your team is developer-focused and values automation
- You want time-limited access for contractors and temporary workers
- You prefer passwordless authentication with WebAuthn/FIDO2
For most individuals and small teams, Vaultwarden is the pragmatic choice: it’s lightweight, compatible with the entire Bitwarden ecosystem, and can be deployed in minutes. For organizations with strict security policies, Passbolt’s GPG-based encryption model provides an additional layer of assurance. For DevOps teams managing secrets across infrastructure, Psono’s API-first design makes it the natural fit.
All three are actively maintained, open source, and production-ready. The best choice depends on your threat model, team size, and integration requirements. Whatever you choose, self-hosting puts you in control of your most sensitive data — and that’s a win regardless of which path you pick.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting