Docker Homelab RAM Planner

RAM planner

Home Assistant OS is not a Docker container and is excluded from these totals. For a VM installation, budget its allocation separately: the official minimum is 2 GB RAM and 2 vCPUs. See the HAOS setup guide.

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

Home Assistant OS is not a Docker container, so it is excluded from the picker and totals. For a VM installation, its official minimum allocation is 2 GB RAM and 2 vCPUs; that is an allocation requirement, not an idle-memory measurement. Add the VM allocation separately when sizing the host. The HAOS on Proxmox guide covers installation and recovery.

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.

If a container already stopped with exit code 137, do not use this planner to diagnose it. Capture that container’s state, limits, event window and host evidence with the Docker exit 137 incident worksheet before restarting it or changing memory. This planner estimates a future stack after you know what the workload needs.

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. 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.

Sources and corrections

Last updated
Methodology
See our methodology for research and review standards.
Update log
  • 2026-10-03 — Added a narrow handoff to the exit-137 incident capture. The planner remains a future-capacity estimate; it does not diagnose a stopped container or treat exit 137 as proof that a memory estimate was too low.
  • 2026-08-25 — A check on 2026-08-24 confirmed four defects on this tool, and none was fixed in that day’s release. (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 names the recommended host size instead of always saying ‘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. I also corrected the assumptions line: the per-app figures are vendor-documented and community-corroborated sizing bands, not TechFuelHQ bench measurements, because no Docker host exists in this operation. That is also why the per-service presets I planned to measure on my own stack are blocked. I independently reran the updated calculator against both worked examples and confirmed the displayed results.
  • 2026-08-15 — The 2026-08-14 update 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. I re-derived it 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). I 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 contact@techfuelhq.com. Confirmed corrections are recorded here with the date and change.