What VPS specs do you actually need for self-hosting Vaultwarden, Pi-hole, Nextcloud, and Jellyfin? (real numbers)

The official documentation for most self-hosted apps gives you a minimum spec — the smallest hardware on which the software will technically boot — and stops. It does not tell you what you actually need to run the thing in real life, with real users, without it occasionally falling over.

This page is the version I wish someone had given me. Real-world resource usage from running each of these on small VPSes, paired with the spec at which the experience stops being annoying.

If you just want the answer:

App Minimum (works) Comfortable (recommended) Notes
Vaultwarden 256 MB RAM, 1 vCPU 512 MB RAM, 1 vCPU Sips resources
Pi-hole 512 MB RAM, 1 vCPU 1 GB RAM, 1 vCPU Database grows over time
Nextcloud 1 GB RAM, 1 vCPU 4 GB RAM, 2 vCPU RAM matters for concurrent users
Jellyfin (no transcoding) 1 GB RAM, 1 vCPU 2 GB RAM, 2 vCPU Direct-play only
Jellyfin (transcoding) 4 GB RAM, 4 vCPU 8 GB RAM, 4+ vCPU + GPU Transcoding is the killer
All four together (single user) 4 GB RAM, 2 vCPU 8 GB RAM, 4 vCPU Hetzner CX22 borderline

The longer story is below, by app.


Vaultwarden — Bitwarden-compatible password manager

What it is

A Rust rewrite of the Bitwarden server, API-compatible with all official Bitwarden clients (web, mobile, browser extension, CLI). Lighter than Bitwarden’s official self-hosted server, which requires multiple Docker containers and ~2GB RAM.

Resource usage in practice

Idle Active (login + sync, 1 user) Worst case (5+ users syncing)
~30-50 MB RAM 60-100 MB RAM 150-250 MB RAM
<1% CPU <5% CPU 10-30% CPU briefly

Minimum that works

  • 256 MB RAM, 1 vCPU
  • 1 GB disk (database stays small unless you store large file attachments)
  • Most cheap VPS plans handle this without breaking a sweat

Recommended

  • 512 MB RAM, 1 vCPU
  • 5-10 GB disk (room for backups + reasonable file attachments)
  • Hetzner CX11 (€3.79/mo) or DigitalOcean Basic Droplet ($4/mo) is comfortable

Disk usage

The SQLite or PostgreSQL database stays under 50 MB for individual use. File attachments (if you store any) can grow indefinitely. Backups roughly equal database size + attachments.

Key insight

Vaultwarden is the closest thing to “free server software” — it costs essentially no resources. If you have any small VPS already running, just add it. There’s almost never a reason to provision a separate server for it.


Pi-hole — Network-wide ad blocker

What it is

A DNS server that blocks queries to ad/tracker domains. Devices on your network point at Pi-hole as their DNS server; Pi-hole returns no-reply for blocked domains. Works at network level, so it covers smart TVs, IoT devices, and apps that don’t have their own ad blocker.

Resource usage

Idle Light traffic (1-3 devices) Heavy traffic (10+ devices, busy household)
~80-120 MB RAM 100-180 MB RAM 200-400 MB RAM
<2% CPU 2-5% CPU 5-15% CPU

Minimum that works

  • 512 MB RAM, 1 vCPU
  • 4 GB disk (mostly for the query log database, which grows ~1-2 MB per day per device)

Recommended

  • 1 GB RAM, 1 vCPU
  • 10 GB disk
  • Or, alternatively, run it on a Raspberry Pi 4 / Pi 5 at home (the original use case; no monthly fee)

Important deployment note

Pi-hole on a remote VPS only blocks ads for your network if you configure your router to use it as DNS, OR you tunnel your devices to the VPS via VPN/Tailscale. Just running it on a public VPS without doing one of those things accomplishes nothing useful for your home network. The cleanest pattern: Pi-hole on Tailscale, your devices configured to use the Tailscale IP as DNS.

Key insight

Pi-hole’s database grows over time. If you’re on a small disk (5-10 GB), enable log rotation aggressively or set query log retention to 30 days max. We’ve seen Pi-hole instances eat 20+ GB of database after years of full-fidelity logging.


Nextcloud — Self-hosted file sync, calendar, contacts

What it is

The “self-hosted Google Drive / Dropbox + Office + Calendar + Contacts” suite. Mature, comprehensive, sometimes infuriating. The closest thing the open-source world has to a complete personal cloud.

Resource usage — this is where it gets tricky

Nextcloud’s resource usage scales aggressively with concurrent users and which features you enable.

Setup RAM CPU Disk
1 user, files only 800 MB - 1.2 GB <10% Whatever your file storage is
1 user, files + calendar + contacts + Talk 1.5 - 2 GB 5-15% Same + ~500 MB
3-5 users, full suite 2.5 - 4 GB 10-30% Same + 1-2 GB
10+ users, full suite 6 GB+ 20-50% sustained Significant

The official “minimum 512 MB” figure is technically true but completely unrepresentative. Nextcloud at 512 MB has so many edge cases (file uploads timing out, search reindexing crashing, photo previews failing) that you should not put yourself through it.

Minimum that works (for one user, files only)

  • 1 GB RAM, 1 vCPU
  • Plus your file storage (separate volume, sized for what you’ll actually store)
  • Default DigitalOcean / Linode / Vultr 1GB instances at $6/month are right at the edge

Recommended

  • 4 GB RAM, 2 vCPU for a comfortable single-user setup with calendar/contacts
  • 8 GB RAM, 4 vCPU for 3-5 user families
  • Hetzner CX22 (4 GB / 2 vCPU / €5.83) is actually the sweet spot for personal use
  • Storage: separate object storage or block storage volume, sized for actual file storage needs (we recommend Hetzner Storage Box for personal cloud — €3.20/month for 1TB)

Database choice matters

SQLite is not recommended in production. Use MariaDB or PostgreSQL. The performance difference under any concurrent load is significant.

Key insight

Nextcloud is the most resource-hungry of the apps in this list, by a large margin. If you only want secure file sync without the calendar/talk/everything-else, Sync.com or Proton Drive will save you a lot of operational pain at $3-10/month, and you avoid being your own ops team.


Jellyfin — Self-hosted media server

What it is

The open-source fork of Emby; the “self-hosted Netflix” for your own media library. Streams to any device, transcodes on the fly when needed, organizes library via metadata.

Resource usage — the transcoding cliff

The big variable is whether your client can play your files directly or needs them transcoded.

Scenario RAM CPU
Direct play (client supports the file format natively) 500 MB - 1 GB <5%
Audio transcode only (e.g., AC3 to AAC) 800 MB - 1.5 GB 5-15% per stream
Video transcode (1080p H.264 to H.265, no GPU) 2-4 GB 80-100% of multiple cores per stream
Video transcode (4K to 1080p, no GPU) 4-6 GB Saturates 8+ cores per stream
Video transcode with hardware acceleration (Intel QuickSync, NVENC, VideoToolbox) 1-2 GB 10-30% per stream

Minimum that works

  • Direct-play only setup: 1 GB RAM, 1 vCPU. Library scan during indexing will use more.
  • For most realistic use: 2 GB RAM, 2 vCPU.

Recommended (for any transcoding)

  • 8 GB RAM, 4+ vCPU, ideally with hardware-accelerated transcoding
  • This is not a great VPS workload — most cheap VPS providers don’t expose hardware video acceleration
  • Better answer: run Jellyfin on a small home server / NAS with a CPU that has Intel QuickSync (any modern Intel chip, including N100 mini-PCs) or a small Nvidia GPU for NVENC

Key insight

Jellyfin on a remote VPS for media streaming is usually a mistake. The bandwidth cost (you’re streaming media files outbound, often 5-20 Mbps per stream) and the lack of hardware transcoding will both bite. Run Jellyfin at home; if you want to access it remotely, use Tailscale to tunnel into your home network. The home electricity for an N100 mini-PC running Jellyfin is cheaper and the experience is dramatically better.


Running multiple of these on one VPS

The most realistic scenario for a self-hoster: one small VPS running Vaultwarden + Pi-hole + Nextcloud (single user, files only). What does that need?

Setup What’s running RAM needed Recommended VPS
Tier 1 — minimal Vaultwarden + Pi-hole 1 GB Hetzner CX11 (€3.79) or DO $6 droplet
Tier 2 — comfortable + Nextcloud (1 user, files) 4 GB Hetzner CX22 (€5.83)
Tier 3 — generous + small extras (Heimdall, Watchtower, monitoring) 8 GB Hetzner CX32 (€10.30) or DO $24 droplet
Tier 4 — household + multiple Nextcloud users + Jellyfin (direct-play) 16 GB + GPU Hetzner Auction dedicated server (~€30) or home server

Real recommendation for a privacy-focused individual self-hoster: Tier 2 on Hetzner CX22. €5.83/month gets you the full personal stack comfortably, and you’re not paying for capacity you’ll never use.


What we deliberately didn’t include

  • Mastodon / Pixelfed — federated social, very different resource profile (database-heavy, scales with follow graph). Separate post.
  • Matrix / Synapse — also database-heavy, separate ops considerations.
  • Plex — closed-source alternative to Jellyfin; resource profile is similar but the licensing/ownership model is different.
  • GitLab — much heavier (8GB minimum), separate target audience.

If you’d like a similar specs reference for any of those, email [email protected].


How we measured

For Vaultwarden, Pi-hole, and Nextcloud (single-user files), the numbers above come from running each on Hetzner CX11 and CX22 instances over multi-week periods, observed via docker stats and Prometheus / node_exporter. Jellyfin numbers come from documented community benchmarks and our own observation on hardware-accelerated and software-only configurations. We are publishing the raw collection data alongside the dedicated hosting reviews — those will appear as we complete the 30-day cycle for each provider.

The numbers will not exactly match yours. They reflect:

  • Single user (mostly)
  • Linux x86_64 host
  • Default app configurations
  • Off-peak hours

Your real-world numbers will vary by 20-50% depending on user count, app configuration choices, and traffic patterns. Use these as a planning baseline, not a hard line.

VPS provider choice in 2026 · 13 things I wish someone had told me before self-hosting · Encrypted DNS guide