Compare / Self-hosting

Self-Hosted Password Manager on a Mini PC: Sizing Vaultwarden on Real Hardware

Can a mini PC carry a self-hosted password manager? We size Vaultwarden against measured EQi12 power, storage and reverse-proxy data, honestly labeled.

The short answer

A password manager is the lightest self-hosted service you will ever put on a mini PC. Vaultwarden runs as a single Rust container with a documented idle footprint under ~100 MB of RAM, and every hardware demand it makes sits far below what our Beelink EQi12 measured while running media servers and database benchmarks. The real work is not horsepower — it is HTTPS, backups, and patch discipline.

One honesty note before anything else: we have not run Vaultwarden end-to-end on this machine. What we have measured, on this exact unit, is the hardware envelope any self-hosted vault would live inside — idle and load power, NVMe write speed, reverse-proxy request throughput, and month-scale stability. This page uses those numbers for what they are good at: deciding whether the machine you already own makes the problem trivial. It does. Every figure traces to the public EQi12 measurement repository (CC BY 4.0), and product terms were verified in October 2026.

Where this page fits among our other pages

PageAnswers this question
This pageShould I self-host a password manager, and can this class of mini PC carry it effortlessly?
Self-hosting alternative selectorQuick picker across all self-hosting categories, including password vaults
Tailscale vs WireGuard vs ZeroTierHow do I reach the vault from outside my home network?
Docker Compose backup and restore drillHow do I prove my backups actually restore?
EQi12 power consumption reportThe seven measured wall-power states behind the running-cost figures

What a self-hosted vault actually asks of your hardware

A Bitwarden-compatible server is not a media server. There is no transcoding, no machine learning, and no sustained disk pressure. Vaultwarden implements the Bitwarden client API in Rust, stores everything in a single SQLite database by default (PostgreSQL and MySQL are optional, not required), and spends almost its entire life waiting for a client to sync a few kilobytes of ciphertext.

That last phrase is the whole sizing story. Bitwarden clients encrypt every item locally before it ever reaches the server — the server holds ciphertext it cannot read — and a sync consists of small JSON payloads over HTTPS. Even a household of six with thousands of entries produces traffic that would embarrass a single JPEG upload. Compare that with what we measured on the same class of machine in the EQi12 Docker component benchmark: an nginx container sustained 10,630 requests per second at 100 concurrent connections with zero errors. A reverse proxy fronting a family password vault uses a rounding error of that ceiling.

The contenders: Vaultwarden, official Bitwarden self-host, KeePassXC

VaultwardenOfficial Bitwarden self-hostKeePassXC (+ Syncthing)
What it isUnofficial, Bitwarden-API-compatible server written in Rust (formerly bitwarden_rs)Bitwarden Inc.’s own server, .NET-based, multi-containerLocal encrypted database file, no server at all
LicenseAGPL-3.0Bitwarden’s open-source server (GPL/AGPL components), commercial plans on topOpen source
DeploymentOne container, SQLite by defaultMultiple containers including a database backendFile + sync tool of your choice
RAM footprintDocumented under ~100 MB idle; a third-party test measured ~10 MiB on a fresh containerHeavier — community guides put the full stack in the several-GB rangeNothing beyond the file editor
Client appsAll official Bitwarden apps (mobile, desktop, browser, CLI)SameKeePassXC itself plus third-party mobile apps
Premium-gated features (TOTP authenticator, attachments, emergency access)Included for every userRequires paid plans (Premium $19.80/year; Families about $40-48/year for up to six users, verified October 2026)Mostly built in, minus server sync
HTTPSRequired (web vault needs a secure context)RequiredNot applicable
Who it fitsHouseholds and homelabs that want the official app experience on their own diskTeams needing vendor support, SLAs, compliancePeople who refuse to run any web-facing service

The feature table is the easy part and honest guides mostly agree on it. What the table cannot tell you is whether the machine matters — and for once, the answer is that it barely does, which is exactly what the measurements below show.

The capacity evidence, clearly labeled

Everything in the top half of this table was measured on the same Beelink EQi12 (Intel i3-1215U, 6C/8T, 16 GB DDR4-3200, WD PC SN540 512 GB NVMe, firmware 33006000) running Docker on Windows. These are component benchmarks and whole-system states — not Vaultwarden scores. The two Vaultwarden rows are documented or third-party figures, labeled as such.

TestResultWhat it means for a password vault
Whole-system idle power, 7-state series12-14 W at the wallA vault adds nothing measurable to the always-on baseline
nginx container, 100 concurrent, reverse-proxy class10,630 RPS, 0 errorsHTTPS front end has enormous headroom
NVMe sustained write~623 MiB/sSQLite sync writes are microscopic against this
12.57-hour mixed-stack stability run0 faults, CPU peaked 52%A vault coexists with heavier services without resource contention
Docker-stack idle (vs Windows idle)12 W vs 14 WThe container platform itself is the power floor, not the vault
Vaultwarden idle RAMUnder ~100 MB (documented footprint; ~10 MiB fresh-container figure from a third-party LinuxPro test, Sept 2026)Smallest resident service on the machine
Vaultwarden storageOne SQLite database, kilobytes-to-megabytes per household (documented behavior)Fits in any corner of a 512 GB boot drive

The contrast with every other self-hosting decision we have written about is the point. Choosing a photo platform or a NAS operating system involves genuine capacity math — ML pipelines, ZFS RAM floors, storage IO. Choosing a password server involves checking that your reverse proxy is up and your backups run. If your mini PC survives the workloads in the table above, the vault is not the thing that will stress it.

The HTTPS requirement shapes your setup more than the hardware does

The one hard requirement is a secure context. The Bitwarden web vault uses the browser’s Web Crypto API, which is only available over HTTPS, and the official clients want a trusted endpoint too. In practice you have three shapes, in rising order of exposure:

  1. VPN-only access. The vault listens on your LAN or on a Tailscale interface only; you generate a Tailscale HTTPS certificate for a private hostname and nothing is exposed to the internet at all. This is the shape we would run on a home mini PC, and the Tailscale vs WireGuard vs ZeroTier comparison covers why Tailscale is the default for this.
  2. Reverse proxy with public DNS. Caddy or nginx terminates TLS and proxies to the container, which stays on the internal Docker network. This is the upstream-recommended shape and matches the measured nginx headroom above.
  3. Direct port exposure — not recommended for a password vault on any machine.

Whichever shape you pick, disable open registration (SIGNUPS_ALLOWED=false once your users exist) and protect the admin interface with a strong token. Those are configuration tasks, not hardware tasks — which is why this section is longer than the sizing section.

Backup is the part that deserves real engineering

A password vault inverts the usual storage logic. The data volume is trivially small, but the value of every kilobyte is enormous, and the failure mode — losing the only copy of your vault database — is catastrophic in a way losing a media cache is not.

Three rules we would apply, consistent with our backup and restore drill:

If your mini PC only has one internal NVMe, an external USB drive is fine for this role — but read the USB storage reality check first, because the port you plug into can change your write speed by nearly an order of magnitude. For a vault-sized database, even the slowest measured path (~36 MiB/s) finishes a backup in under a second; the point of that page is knowing which ports to trust for anything bigger.

The update treadmill is the real cost

Here is the honest trade, and it is not about hardware. Vaultwarden is an unofficial project that must track the official clients, and the compatibility clock is real: Bitwarden clients released from July 2026 onward require server version 1.37.0 or newer, and the 1.37.x line has been shipping security fixes steadily — 1.37.4 (October 2026) alone closed seven advisories, one rated high. Since version 1.35.0 (December 2025), native OpenID Connect single sign-on is available, but a master password is still required.

What that means in practice: a self-hosted vault is a service you patch promptly, every time, because your credentials live inside it. This is the one dimension where the official Bitwarden plans win on paper — Premium at $19.80/year or a Families plan at roughly $40-48/year for six users buys you someone else’s patch discipline. If you will not maintain a container, pay the subscription; $20 a year is cheaper than your time and safer than an unpatched server. If you already run a maintained Docker stack — and the fact that you are reading a site about measured home servers suggests you do — the vault is one more docker compose pull in a weekly routine you already have.

What we did not test

For completeness, the boundary of this page: we have not installed Vaultwarden, so there are no end-to-end sync latency numbers, no measured container RAM on our own unit, no client-app battery observations, and no benchmark of the admin interface. The Vaultwarden-side figures above are documented footprints and clearly attributed third-party measurements. The hardware-side figures are our own instrumented results, published raw in the measurement repository. We drew no performance conclusion about Vaultwarden itself — none is needed, because the machine’s envelope sits so far above the documented footprint that the margin question answers itself.

Fact block (for citation)

FactValueSource
Whole-system idle power, EQi1212-14 W at the wallEQi12 Measurement Data repo, 7-state wall-meter series, 2026
Reverse-proxy class throughput, EQi12nginx 10,630 RPS at 100 concurrent, 0 errorsSame repo, Docker component benchmark
NVMe sustained write, EQi12~623 MiB/sSame repo
Slowest measured USB path, EQi12~36 MiB/sSame repo, storage/USB series
Vaultwarden idle RAMUnder ~100 MB documented; ~10 MiB fresh container per third-party testVaultwarden project documentation; LinuxPro test, Sept 2026
Vaultwarden license / deploymentAGPL-3.0, one Rust container, SQLite default, HTTPS requiredVaultwarden GitHub, verified October 2026
Bitwarden Premium / Families$19.80/year; ~$40-48/year up to 6 users (regional variance)bitwarden.com pricing, verified October 2026

Data licensed CC BY 4.0. Product terms and versions change; verify current quotas and prices before making decisions. This page contains no Vaultwarden performance benchmarks — the service itself was not run by us.