Services

security / running

Vaultwarden

Self-hosted Bitwarden-compatible password manager — the root of trust for the whole homelab.

What it is

Vaultwarden is a Rust reimplementation of the Bitwarden server. It speaks the same API as the official one, so all the official Bitwarden clients — desktop app, browser extension, iPhone, CLI — work against it with no patches. It's tiny, fast, and was clearly written by someone who didn't want to run a JVM on a Raspberry Pi.

Why I run it

A password manager is the single piece of infrastructure where "I'd rather not depend on a SaaS" turns into "I'd rather own this completely." Bitwarden the company is reputable. I just don't want my entire credential graph living somewhere I can't physically point at.

Self-hosting also means I can give it a real backup story (PBS snapshots of the whole container, daily), trust it with non-password recovery material and service credentials, and use it as the canonical store for every other service in this catalog. The auth section of every other service doc on this site is, in effect, a pointer to a Vaultwarden entry.

How I use it

The Bitwarden browser extension is open in every browser I use, configured to point at my internal URL. Same with the desktop app and the iOS app. Day to day the experience is identical to using hosted Bitwarden — autofill in the browser, generated passwords on signup, biometric unlock on the phone.

It also stores things that aren't strictly passwords: recovery notes, service credentials, and automation secrets that need to exist somewhere durable without being committed to a repo. Every other service doc references it by entry path.

Setup notes

Runbook

The single most useful diagnostic principle for this service: test the browser extension on a real site first. If autofill works, the server is delivering data correctly and you're chasing a frontend or cert problem, not a server problem. That one check has saved me hours.