Tools
replaces 1Password, LastPass, and other password managers
A lightweight, Bitwarden-compatible password vault you run yourself, used with the official Bitwarden apps. There's no separate 'Vaultwarden app': every client just points at your own server instead of Bitwarden's.
This assumes you've already done the base setup: a server, SSH access, a firewall, and Docker installed. A password vault is also the one tool on this site worth a second thought before you make it your daily driver. See the note at the bottom before you commit to it.
Bitwarden's own apps refuse to connect over plain HTTP, so you'll need a subdomain with real HTTPS, for example vault.yourdomain.com. In your domain registrar's DNS settings, add an A record for that subdomain pointing at your server's IP address. This can take anywhere from a few minutes to a few hours to take effect. Then open the two ports it needs: sudo ufw allow 80,443/tcp.
Vaultwarden joins the shared web network instead of exposing its own port. The proxy reaches it internally, by container name.
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
security_opt:
- no-new-privileges:true
environment:
DOMAIN: "https://vault.yourdomain.com"
SIGNUPS_ALLOWED: "true"
ADMIN_TOKEN: "REPLACE-WITH-A-GENERATED-TOKEN"
volumes:
- ./vw-data:/data
networks:
- web
networks:
web:
external: trueopenssl rand -base64 32 on your server and paste it in. Leaving this out entirely disables the admin panel, which is also a valid choice if you don't need it.Start it: docker compose up -d.
This site uses one Caddy instance for the whole server, not one per app, and every tool guide points back to the same setup rather than each showing its own. If you haven't set it up yet, the domains and HTTPS deep dive is the canonical walkthrough, including the exact port and Caddyfile block for every tool on this site. Once it's running, connecting Vaultwarden is one block in the shared Caddyfile:
vault.yourdomain.com {
reverse_proxy vaultwarden:80
}Then reload it: docker compose restart caddy in the proxy's folder.
Visit your domain and click "Create Account." Use a real email and a strong master password, this password encrypts your entire vault, and losing it means losing everything in it, with no reset option.
Now that your account exists, stop anyone else from registering one. Change SIGNUPS_ALLOWED to "false" in the compose file and run docker compose up -d again to apply it.
Install the official Bitwarden apps, not a Vaultwarden-branded one; there isn't one. In each app's settings, before logging in, toggle "Self-hosted" and enter your server URL, then log in with the account you just created.
vw-data folder, not just the database file inside it. It also holds your encryption keys and file attachments; losing those invalidates sessions and orphans files even if the database itself is intact.docker compose pull && docker compose up -d every so often, rather than letting it sit untouched for years.More tools
Every guide here assumes you've already completed the base setup: server, firewall, and Docker.