Homelab
Proof

U6 / Measured data

The RAM board

How much memory 35 self-hosted stacks use once they have started and settled. Whole stacks count, so a database container adds to the app that needs it.

  1. NGINX4.8 MiB
  2. Gatus5.9 MiB
  3. Vaultwarden7.4 MiB
  4. Pi-hole9.5 MiB
  5. Caddy10.9 MiB
  6. AdGuard Home11.3 MiB
  7. Beszel hub11.7 MiB
  8. Headscale12.1 MiB
  9. Stalwart13.6 MiB
  10. Traefik16.1 MiB
  11. Portainer CE18.2 MiB
  12. FreshRSS18.5 MiB
  13. Authelia45.5 MiB
  14. wg-easy49.4 MiB
  15. Miniflux52.4 MiB
  16. Gitea61.5 MiB
  17. Nginx Proxy Manager68.5 MiB
  18. Wiki.js85.2 MiB
  19. Forgejo102 MiB
  20. Uptime Kuma109 MiB
  21. Netdata120 MiB
  22. Dockge122 MiB
  23. Jellyfin149 MiB
  24. BookStack160 MiB
  25. Komodo163 MiB
  26. Nextcloud255 MiB
  27. docker-mailserver280 MiB
  28. Home Assistant Container327 MiB
  29. Prometheus + Grafana + node_exporter341 MiB
  30. Seafile CE468 MiB
  31. Paperless-ngx615 MiB
  32. authentik799 MiB
  33. Ollama + Open WebUI1.26 GiB
  34. Immich1.29 GiB
  35. GitLab CE4.32 GiB

How to read it

The figure is the sum of docker stats memory across a stack's containers: the median of repeated samples after the stack settled, with no users and no content. That makes it the floor. Page cache is excluded, and real libraries, users and background jobs add to it. Many apps were measured on first run, still at their setup wizard or login page, and Stalwart was in its unconfigured bootstrap mode, so its figure is not comparable with a working mail server. Guides that measured a workload report those figures separately.

Bars use a log scale, because one large stack would flatten the rest. Read the printed number.

The test box

  • 4 vCPU on an AMD Ryzen 5 PRO 3600 host (KVM)
  • 8 GB RAM, Ubuntu 24.04, kernel 6.8
  • Docker Engine 29.9.2, Compose 5.6.1
  • Fresh disk for every stack, destroyed after the run

Details and limits are on the test method page. To add up your own combination, use Will it fit?

Full results

StackVersionCategoryRAM at idlePeak sampleCPU at idleImages on diskReady after
NGINX1.31.8Reverse proxy4.8 MiB4.8 MiB0.00%93.6 MB0.8 s
Gatus5.38.0Monitoring5.9 MiB6.2 MiB0.02%78.1 MB2.4 s
Vaultwarden1.37.4Passwords7.4 MiB7.6 MiB0.00%402 MB2 s
Pi-hole2026.10.1DNS9.5 MiB9.5 MiB0.21%148.8 MB5.2 s
Caddy2.11.7Reverse proxy10.9 MiB10.9 MiB0.00%92.8 MB0.8 s
AdGuard Home0.107.79DNS11.3 MiB11.3 MiB0.00%113.6 MB1.2 s
Beszel hub0.21.1Monitoring11.7 MiB11.7 MiB0.00%47.5 MB1.6 s
Headscale0.29.7VPN12.1 MiB12.1 MiB0.07%113.3 MB2.6 s
Stalwart1.0.1Mail13.6 MiB13.6 MiB0.00%483.6 MB1.8 s
Traefik3.7.17Reverse proxy16.1 MiB16.1 MiB0.00%249.2 MB2.2 s
Portainer CE2.45.3Docker UI18.2 MiB18.2 MiB0.00%200.6 MB1.7 s
FreshRSS1.30.4Feeds18.5 MiB18.5 MiB0.00%368.4 MB2.1 s
Authelia4.39.28Auth45.5 MiB45.7 MiB0.02%109.9 MB2.2 s
wg-easy15.5.0VPN49.4 MiB49.5 MiB0.00%321.4 MB4.2 s
Miniflux2.3.4Feeds52.4 MiB52.4 MiB0.00%484.8 MB8.6 s
Gitea28.3.0Git61.5 MiB76.2 MiB0.00%261.7 MB2 s
Nginx Proxy Manager2.16.0Reverse proxy68.5 MiB68.7 MiB0.04%1909.4 MB5.7 s
Wiki.js2.5.315Wiki85.2 MiB85.2 MiB0.02%1451.2 MB7 s
Forgejo17.0.1Git102 MiB102 MiB0.02%291.2 MB1.8 s
Uptime Kuma2.5.9Monitoring109 MiB109 MiB0.00%2531.2 MB4.6 s
Netdata2.12.2Monitoring120 MiB120 MiB3.04%1322 MB6.3 s
Dockge1.5.0Docker UI122 MiB122 MiB0.21%1168.8 MB3.7 s
Jellyfin12.4Media149 MiB150 MiB0.01%2490 MB3 s
BookStack26.09.2Wiki160 MiB160 MiB0.03%953.6 MB34.8 s
Komodo2.3.4Docker UI163 MiB189 MiB0.78%2899.1 MB9.9 s
Nextcloud33.0.10Files255 MiB255 MiB0.55%2575.5 MB63.8 s
docker-mailserver16.0.1Mail280 MiB280 MiB0.84%1041.9 MB5.5 s
Home Assistant Container2026.10.4Smart home327 MiB327 MiB0.00%3467.9 MB12.3 s
Prometheus + Grafana + node_exporter3.15.1 / 13.3.0Monitoring341 MiB342 MiB1.38%2429.7 MB45.9 s
Seafile CE14.0.9Files468 MiB468 MiB0.96%2668.6 MB45.8 s
Paperless-ngx3.4.1Documents615 MiB615 MiB0.40%4273.4 MB26.1 s
authentik2026.8.5Auth799 MiB800 MiB1.58%2356.7 MB100.1 s
Ollama + Open WebUI0.40.13 / 0.12.5Local AI1.26 GiB1.26 GiB0.39%14910.7 MB47.5 s
Immich3.3.5Photos1.29 GiB1.30 GiB0.40%4706.9 MB17 s
GitLab CE19.4.5Git4.32 GiB4.35 GiB8.07%5640.5 MB168.1 s

CPU: 100% equals one vCPU. Images on disk: Docker 29 with its containerd image store counts compressed layers too, so these run larger than the unpacked image. Ready after: seconds from starting the stack to its first valid HTTP response or readiness check, with images already downloaded.