Sanitized mirror from private repository - 2026-04-05 11:04:10 UTC
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled

This commit is contained in:
Gitea Mirror Bot
2026-04-05 11:04:10 +00:00
commit 85f77995ec
1394 changed files with 356632 additions and 0 deletions

View File

@@ -0,0 +1,320 @@
# 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
```yaml
services:
prometheus:
image: prom/prometheus
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
```
### CPU Limits
```yaml
services:
plex:
image: plexinc/pms-docker
deploy:
resources:
limits:
cpus: '2.0'
```
---
## Monitoring Resource Usage
### Check Current Usage
```bash
# 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
---
## Links
- [Grafana Dashboards](../services/individual/grafana.md)
- [Docker Guide](../DOCKER_COMPOSE_GUIDE.md)
- [Monitoring Architecture](../infrastructure/MONITORING_ARCHITECTURE.md)