Services¶
Overview of core services running across the homelab. The service architecture emphasizes containerization, automation, and self-hosting for privacy and control.
Container Orchestration¶
🐳 Docker & Portainer¶
Docker powers the majority of services in the homelab, with Portainer providing centralized management, monitoring, and deployment across multiple hosts.
Key Services: - Media stack (Jellyfin, *arr apps) - Automation (N8N, Home Assistant) - Productivity (Vaultwarden, Paperless-NGX) - Monitoring (Checkmk, Graylog, Netdata)
⎈ Kubernetes¶
K3s cluster for larger workloads requiring orchestration, scaling, and service mesh capabilities. Used for production-grade deployments and experimenting with cloud-native patterns.
Service Categories¶
🎬 Media & Entertainment¶
- Jellyfin – Self-hosted media streaming (movies, TV, music)
- Radarr – Movie collection management and automation
- Sonarr – TV show collection management and automation
- Prowlarr – Indexer management for *arr apps
- Bazarr – Subtitle automation
- SABnzbd – Usenet downloader
- Transmission – Torrent client (behind VPN)
- Jellyseerr – Request management for Jellyfin
- Jellystat – Media analytics and statistics
- Pterodactyl – Game server management (Minecraft, modded packs)
🤖 AI & Automation¶
- N8N – Workflow automation and integration platform
- Jarvis – Custom AI assistant (voice + text)
- Open WebUI – Local AI chat interface
- Ollama – Local LLM runner
- Coder – Cloud development environments
- Home Assistant – Smart home automation hub
- Spotcast – Spotify casting integration
🏠 Smart Home & IoT¶
- Home Assistant – Central automation and device control
- Roborock Integration – Vacuum control and scheduling
- Moonraker (Klipper) – 3D printer monitoring and control
- Custom IoT Sensors – ESP8266/ESP32 temperature/humidity sensors
🔍 Monitoring & Observability¶
- Checkmk – Comprehensive infrastructure monitoring
- Graylog – Centralized log management and analysis
- Netdata – Real-time system metrics (VPS)
- WUD – Watchtower Update Daemon for container tracking
- Uptime Kuma – Service uptime monitoring
🛡️ Networking & Security (VPS)¶
- Traefik – Reverse proxy with automatic HTTPS
- Authelia – SSO with two-factor authentication
- Fail2Ban – Intrusion prevention
- Cloudflare Tunnel – Secure public access
💻 Development & Collaboration¶
- Gitea – Self-hosted Git server
- Wiki.js – Internal documentation (private)
- MkDocs – Public documentation (this site!)
- Coder – VS Code in the browser
- Azure DevOps – CI/CD pipelines for IaC
📂 Productivity & Tools¶
- Vaultwarden – Password manager (Bitwarden-compatible)
- Actual Budget – Personal finance tracking
- Paperless-NGX – Document management and OCR
- Linkwarden – Bookmark and link management
- ChangeDetection.io – Webpage change monitoring
- FileBrowser – Web-based file access (VPS)
🌐 Web & Public Services¶
- Nginx – Static site hosting (max-thomas.com)
- LinkStack – Personal link landing page
- MkDocs Material – This wiki
🗄️ Databases & Caching¶
- PostgreSQL – Primary database for apps
- MySQL/MariaDB – Legacy app support
- Redis – Caching and session storage
- InfluxDB – Time-series data for monitoring
Deployment Strategy¶
Docker Compose Stacks¶
Most services are deployed using Docker Compose for simplicity and portability:
# Example stack structure
/opt/stacks/
├── media/docker-compose.yml # Jellyfin, *arr apps
├── automation/docker-compose.yml # N8N, Home Assistant
├── monitoring/docker-compose.yml # Checkmk, Graylog
└── productivity/docker-compose.yml # Vaultwarden, Paperless
Automated Updates¶
- WUD – Tracks available container updates
- Renovate Bot – Automated dependency updates for compose files
- Manual Approval – Staged updates with testing before production
Backup & Recovery¶
- Docker Volume Backups – Automated backups to TrueNAS
- Configuration as Code – All compose files in Git (Gitea)
- Disaster Recovery – Documented restore procedures
Service Discovery¶
Internal DNS¶
- AdGuard Home – Local DNS with custom records
- Split DNS – Internal domains resolve to local IPs
- Wildcard Records –
*.services.local
for easy access
Reverse Proxy¶
- Traefik Labels – Automatic service discovery
- HTTPS by Default – Let's Encrypt certificates
- SSO Integration – Authelia for public-facing services
Best Practices¶
- Containerize Everything – Use Docker for consistency and portability
- Environment Variables – Externalize configuration from images
- Persistent Volumes – Store data on NFS/host mounts
- Health Checks – Define health checks for all services
- Resource Limits – Prevent resource exhaustion
- Logging – Centralize logs to Graylog
- Monitoring – Track all services in Checkmk
- Documentation – Maintain service inventory in Wiki.js