DEV Community

Alex Chen
Alex Chen

Posted on

I Stopped Paying $99/Year for 1Password — Vaultwarden + a Free ARM VM Covers Everything

Last year my 1Password bill came due at $99. I use maybe 15% of the features — passwords, a few secure notes, and the browser extension. Meanwhile Vaultwarden, the community Rust reimplementation of Bitwarden's server, runs on a Raspberry Pi. So I moved.

Eight months later: same autofill, same sync across devices, same TOTP codes — and my credentials never leave my own hardware. Total cost: $0.

What I Actually Gave Up

Being honest here, because most "I self-hosted my password manager" posts skip this part:

Feature 1Password ($99/yr) Vaultwarden ($0)
Autofill (browser + mobile) ✅ (Bitwarden apps)
TOTP codes
Cross-device sync ✅ (instant via WebSocket)
Emergency access ❌ (workaround: encrypted export to a trusted person)
Watchtower breach alerts ⚠️ Partial (Bitwarden app reports work against your vault)
Travel mode ❌ (never used it)
Support when it breaks ❌ (you are the support)

The two real losses are emergency access and support. I solved the first with a quarterly encrypted export stored with family. The second I accepted — eight months in, nothing has broken.

The Setup (20 Minutes)

Oracle Cloud's Always Free tier gives you a 4-core ARM VM with 24GB RAM. That is absurdly oversized for Vaultwarden, which idles at ~15MB RSS:

docker run -d --name vaultwarden \
  -p 8080:80 \
  -v ~/vw-data:/data \
  -e WEBSOCKET_ENABLED=true \
  -e SIGNUPS_ALLOWED=false \
  --restart unless-stopped \
  vaultwarden/server:latest
Enter fullscreen mode Exit fullscreen mode

Add Caddy in front for TLS (one line: pw.mydomain.com { reverse_proxy localhost:8080 }), point the official Bitwarden apps at your domain, done.

The Part Nobody Mentions

The backup story is better than 1Password's. My vault is a single SQLite file. A cron job rsyncs it to a second machine every night:

0 3 * * * sqlite3 ~/vw-data/db.sqlite3 ".backup '/backup/vw-$(date +\%F).db'" && rsync -a /backup/ user@otherhost:/backups/
Enter fullscreen mode Exit fullscreen mode

With 1Password, "backup" means trusting their incident response. With Vaultwarden, I can sqlite3 db.sqlite3 .dump and read every credential in plaintext JSON in 4 seconds. Try that with a hosted service.

Would I Go Back?

No. But I'll say the quiet part: if you can't recover a Linux box from a bad Docker upgrade at 2am, pay the $99. The $0 price tag assumes you are the on-call engineer. For most devs reading this, that's fine. For my parents, it isn't.

I sketched the migration checklist and the Caddy config with MonkeyCode (free AI coding tool): https://ly.cyberserval.tech/iIETXiF

What's your line for self-hosting vs paying? For me it's passwords: yes. Email: absolutely not. Where's yours?

Top comments (0)