Files
homelab-optimized/docs/infrastructure/resource-allocation.md
Gitea Mirror Bot d74f7c7af5
Some checks failed
Documentation / Build Docusaurus (push) Failing after 4m59s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-03-21 10:54:24 UTC
2026-03-21 10:54:25 +00:00

7.6 KiB

Resource Allocation Guide

CPU, memory, and storage recommendations for homelab services


Overview

This guide provides resource allocation recommendations for services running in the homelab. Values are based on typical usage and should be adjusted based on actual usage patterns.


Host Capacity

Current Resources

Host CPU RAM Storage Workload
Atlantis 8 cores 32GB 40TB Media, Vault
Calypso 4 cores 32GB 12TB Infrastructure
Concord NUC 2 cores 16GB 256GB Light services
Homelab VM 4 cores 28GB 100GB Monitoring
RPi5 4 cores 16GB 512GB Edge

Available Headroom

Host CPU Available RAM Available Notes
Atlantis 2 cores 8GB ~25% headroom
Calypso 1 core 12GB ~37% headroom
Concord NUC 0.5 core 4GB Limited
Homelab VM 1 core 8GB ~28% headroom
RPi5 2 cores 8GB ~50% headroom

Service Resource Guidelines

Infrastructure Services

Service CPU Memory Storage Notes
Nginx Proxy Manager 0.5 256MB 1GB Minimal
Authentik 1 1GB 10GB With PostgreSQL
Prometheus 1 2GB 20GB Adjust for retention
Grafana 0.5 512MB 1GB Dashboards
Alertmanager 0.25 128MB - Minimal

Database Services

Service CPU Memory Storage Notes
PostgreSQL 1 1GB 10GB+ Per database
Redis 0.5 512MB - In-memory
MariaDB/MySQL 1 512MB 5GB Legacy services

Media Services

Service CPU Memory Storage Notes
Plex 2+ 2GB - Transcoding
Jellyfin 2+ 2GB - Hardware assist
Sonarr 0.5 256MB - Low usage
Radarr 0.5 256MB - Low usage
Lidarr 0.5 256MB - Low usage
Prowlarr 0.25 128MB - Minimal
Bazarr 0.5 512MB - Subtitle processing
qBittorrent 1 512MB - Upload/download
SABnzbd 0.5 256MB - Download

Photo Services

Service CPU Memory Storage Notes
Immich 2 2GB 100GB+ ML processing
PhotoPrism 2 2GB 100GB+ Optional

Communication Services

Service CPU Memory Storage Notes
Matrix/Synapse 2 1GB 10GB Federation
Element 0.5 256MB - Web client
Mastodon 2 2GB 20GB Social
Mattermost 1 1GB 5GB Team chat
Jitsi 2 2GB - Video

Home Automation

Service CPU Memory Storage Notes
Home Assistant 1 2GB 5GB Core
Zigbee2MQTT 0.5 256MB - MQTT broker
Z-Wave JS 0.5 512MB - Z-Wave

Development

Service CPU Memory Storage Notes
Gitea 1 512MB 5GB Git hosting
Gitea Runner 1 512MB - CI/CD
Portainer 0.5 256MB - Management
OpenHands 2 4GB 10GB AI dev (on-demand)

Productivity

Service CPU Memory Storage Notes
Paperless-NGX 1 1GB 50GB Document OCR
Wallabag 0.5 256MB 5GB Read later
Reactive Resume 0.5 256MB 1GB Resume builder
Seafile 2 2GB 100GB+ File sync

Security

Service CPU Memory Storage Notes
Vaultwarden 1 512MB 1GB Passwords
Bitwarden 2 1GB 5GB (if using official)

Privacy

Service CPU Memory Storage Notes
Invidious 1 1GB - YouTube frontend
Piped 1 1GB - Music frontend
Libreddit 0.5 256MB - Reddit frontend

DNS & Network

Service CPU Memory Storage Notes
Pi-hole 0.5 256MB 2GB DNS filtering
AdGuard 1 512MB 2GB DNS + ads
WireGuard 0.25 128MB - VPN
Headscale 0.5 256MB - WireGuard server

Memory Limits by Host

Atlantis (32GB)

System:                    4GB
Container overhead:       4GB
Vaultwarden:            512MB
Immich:                 2GB
Plex:                   2GB
ARR stack:              1GB
Jitsi:                  2GB
Matrix:                 1GB
Mastodon:               2GB
Misc services:          2GB
---------------------------
Reserved:              ~15GB

Calypso (32GB)

System:                    4GB
Docker overhead:           4GB
Authentik:               1GB
NPM:                     256MB
Prometheus:              2GB
Grafana:                 512MB
PostgreSQL:              1GB
ARR stack:              512MB
Other services:          3GB
---------------------------
Reserved:              ~16GB

Concord NUC (16GB)

System:                    2GB
Docker:                    2GB
Home Assistant:            2GB
AdGuard:                512MB
Plex:                    2GB
Other services:           2GB
---------------------------
Reserved:               ~5.5GB

CPU Limits by Service

High CPU (2+ cores)

  • Plex/Jellyfin (transcoding)
  • Immich (ML processing)
  • OpenHands
  • Ollama
  • Video processing

Medium CPU (1 core)

  • Databases (PostgreSQL, MariaDB)
  • Matrix/Synapse
  • Mastodon
  • Seafile
  • Paperless-NGX (OCR)

Low CPU (<1 core)

  • Nginx Proxy Manager
  • Authentik
  • Pi-hole/AdGuard
  • Vaultwarden
  • Arr suite (Sonarr, Radarr)
  • Prometheus (scraping)

Storage Guidelines

Media Storage

  • Movies/TV: On Atlantis, shared via NFS/SMB
  • Music: Dedicated volume
  • Photos: Immich primary on Atlantis, backup on RPi5

Application Data

  • Prometheus: SSD required (fast writes)
  • Databases: SSD required
  • Cache: Can be small/fast

Backup Storage

  • Local: Dedicated volume on Calypso
  • Remote: Backblaze B2 / cold storage

Docker Compose Examples

Memory Limits

services:
  prometheus:
    image: prom/prometheus
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 1G

CPU Limits

services:
  plex:
    image: plexinc/pms-docker
    deploy:
      resources:
        limits:
          cpus: '2.0'

Monitoring Resource Usage

Check Current Usage

# All containers
docker stats --no-stream

# Specific host
curl http://<host>:9100/metrics | grep node_memory_MemAvailable

# Grafana dashboard
# Infrastructure → Host Resources

Alerts

Metric Warning Critical
CPU >70% >90%
Memory >80% >95%
Disk >80% >90%

Optimization Tips

  1. Use :latest sparingly - Pin versions for stability
  2. Enable GPU transcoding - For Plex/Jellyfin
  3. Use SSD for databases - Prometheus, PostgreSQL
  4. Limit concurrent transcode - In Plex settings
  5. Enable Prometheus targerhs - For better monitoring

Capacity Planning

Growth Projections

Service Current 6 Months 12 Months
Media storage 20TB 25TB 30TB
Photo storage 500GB 750GB 1TB
Prometheus 10GB 15GB 20GB
Database 5GB 7GB 10GB

Warning Signs

  • Disk usage >80% sustained
  • Memory pressure alerts daily
  • Container restarts increasing
  • CPU throttling visible