Docker Homelab RAM Planner

RAM planner

Infrastructure

Files, Media & Office

Automation & Monitoring

Smart Home & Security

RAM Summary

Select apps to calculate RAM requirements.

Worked examples

These are this calculator’s own outputs, computed with the same formula the tool runs in your browser — so you can see a real answer without touching a single input.

The minimal starter stack a first-time self-hoster builds: Nginx Proxy Manager for SSL, Portainer to manage containers, Uptime Kuma for monitoring, Vaultwarden for passwords. No media, no photos

  • Inputs: Checked: Nginx Proxy Manager, Portainer CE, Uptime Kuma, Vaultwarden (4 apps)
  • Result: Idle Total 240 MB, Peak Total 430 MB, minimum host RAM (peak + OS overhead) 1.6 GB. All five host sizes pass; smallest fit is 4 GB with 2.4 GB free. Recommendation (green): “This stack fits comfortably on 4 GB of host RAM — 2.4 GB stays free even if every container peaks at once.”

The most common intermediate homelab: reverse proxy plus auto-updates and monitoring, Jellyfin for media, Nextcloud AIO for file sync, Immich without ML for photos, Vaultwarden for passwords. This is the typical “replace Google Photos and Dropbox” build on a mini PC

  • Inputs: Checked: Nginx Proxy Manager, Portainer CE, Watchtower, Jellyfin, Nextcloud AIO, Immich (no ML), Vaultwarden, Uptime Kuma (8 apps)
  • Result: Idle Total 1.5 GB, Peak Total 3.0 GB, minimum host RAM (peak + OS overhead) 4.2 GB. A 4 GB host is marked insufficient; smallest fit is 8 GB with 3.8 GB free. Recommendation (green): “This stack fits comfortably on 8 GB of host RAM — 3.8 GB stays free even if every container peaks at once.”

How to use this planner

Check the apps you want to run. Idle RAM is what’s used when nothing is happening. Peak RAM is the max during active use — ML indexing, video transcoding, active Office editors. Your host needs to comfortably cover the peak total plus OS overhead.

The per-app figures are sizing bands for 2026 container versions, drawn from vendor documentation and corroborated community reports. I do not run a Docker bench, so they are documented values, not my measurements. Details per app are in their linked tutorials.

One budget line this planner does not include: MCP servers for local-AI assistants, which typically run as bare npx or uvx processes rather than containers. They are not free: the measured MCP server RAM dataset puts each at 178-422MB resident, with a realistic five-server stack totaling just under a gigabyte.

Assumptions and sources

  • Per-app idle and peak RAM figures are sizing bands for 2026 container versions drawn from vendor-documented requirements and corroborated community reports. They are not TechFuelHQ bench measurements: I do not run a Docker host, and I would rather label that plainly than borrow authority the numbers don’t have. Your numbers will move with library size, user count, and enabled modules, so treat them as sizing figures rather than guarantees.
  • The Immich peak band reflects its machine-learning indexing load; Immich’s own server requirements document the RAM floor it expects.
  • The Nextcloud AIO figure follows the RAM guidance in the Nextcloud All-in-One repository, which documents requirements by enabled component (Office is the big one).
  • The 1-2 GB host-OS overhead and the 2-4 GB Proxmox hypervisor figure are TechFuelHQ planning allowances, stated so you can adjust them for your distribution and services.

Frequently asked questions

How much RAM does a full self-hosted homelab stack need?
A minimal starter stack (NPM + Portainer + Uptime Kuma + Vaultwarden) computes to 240MB of container RSS at idle and 430MB at peak — the worked example on this page shows the math — and the tool’s minimum host RAM for that stack is 1.6GB once its 1.2GB OS-plus-Docker allowance sits on top. Adding Jellyfin adds 300-600MB idle to peak (GPU transcode buffers not counted). Nextcloud AIO with Office enabled adds 1.4-2.7GB. Immich with ML indexing adds 1.2-3.4GB, with the top of the band hit during the initial indexing run. A full stack with all major apps typically needs 12-16GB of host RAM to run comfortably with OS overhead.
What’s the difference between idle RAM and peak RAM for containers?
Idle RAM is what the container uses with no active users or background jobs. Peak RAM is the maximum during active use — Immich ML indexing, Jellyfin transcoding multiple streams, Nextcloud Office with multiple editors, n8n running complex workflows. Host RAM should comfortably exceed your stack’s peak usage plus OS overhead (1-2GB for Debian/Ubuntu with a few processes). Plan for peak, not idle.
Should I run all these on one host or split them across VMs?
For a personal homelab, a single well-resourced host is simpler. With 32GB RAM you can run the full stack in Docker on one host with headroom for a couple of Proxmox VMs alongside. Where splitting makes sense: Immich benefits from GPU passthrough to a dedicated VM for ML acceleration, and Home Assistant is better as its own HAOS VM for clean update cycles. Everything else runs fine in containers on a shared host.
Does Proxmox overhead matter when planning container RAM?
Proxmox VE itself uses 2-4GB of host RAM for the hypervisor, QEMU/KVM, and management services. If you’re running Docker inside a Proxmox LXC (the recommended pattern), the LXC overhead is minimal (< 50MB). Allocate the LXC at least the total container stack RAM plus 1GB for the container OS itself. The Proxmox VM Capacity Planner tool handles host-level planning; this tool focuses on the Docker stack inside a single LXC or host.

Evidence ledger

Last updated
Methodology
See our methodology for research and review standards.
Update log
  • 2026-08-25 — Calculator-audit follow-through (the 2026-08-24 adversarial audit confirmed four defects on this tool; none were in that day’s shipped batch). (1) FAQ #1 claimed a ‘400-600MB host budget’ for the same four-app stack the tool prices at 1.6 GB minimum host RAM — 2.7x apart on one page, with the FAQ copy also live in the FAQPage JSON-LD; the FAQ now restates the tool’s own output. (2) The FAQ’s per-app bands now match the tool’s constants as displayed (Jellyfin 300-600 MB, Nextcloud AIO + Office 1.4-2.7 GB, Immich ML 1.2-3.4 GB); the old Jellyfin band also attributed ‘hardware transcoding’ RAM that the picker row explicitly excludes. (3) The green verdict now requires real headroom (at least 1 GB free, or 15% of the recommended host) instead of firing at any total under 16 GB — it previously called a 4 GB host with 116 MB to spare ‘comfortable’ — and its sentence is built from the recommended host size instead of a hardcoded ‘16 GB’. (4) Loading a shared ?apps= URL now applies the same mutual-exclusion rule as clicking, so a hand-edited link can no longer double-count the Nextcloud or Immich container stack. Also corrected the assumptions line: the per-app figures are vendor-documented and community-corroborated sizing bands, not TechFuelHQ bench measurements — no Docker host exists in this operation, which is also why the planned ‘measured per-service presets from our own stack’ item is recorded as blocked rather than done. JS changes verified by re-deriving both worked examples through the updated logic in Node.
  • 2026-08-15 — Meta-audit propagation fix (ADR-333 class). The 2026-08-14 refinement pass added an archived-upstream caveat to Watchtower on the Docker Compose starter-stack tutorial but left this calculator offering Watchtower as an unmarked selectable component, so a reader who met the app here first got no signal. Re-derived independently on 2026-08-15: the containrrr/watchtower GitHub repository returns archived=true and its newest tagged release is v1.7.1, published 2023-11-11 (GitHub API). Tagged the picker entry archived using the tool’s existing tag affordance; the RAM figures (15 MB idle / 40 MB peak) were not changed and remain the measured values.
Corrections
Spotted an error or a stale number? Email hello@techfuelhq.com. Confirmed corrections are added to the update log above.