Applications¶
The homelab runs an automated media management stack commonly referred to as the *arr stack. All applications are deployed into the arr namespace on Kubernetes via ArgoCD, using the bjw-s app-template Helm chart (v4.6.2). Routing is provided by Cilium Gateway API with TLS certificates issued by cert-manager (homelab-ca-issuer).
Shared Configuration¶
All *arr applications receive common environment variables from the arr-env ConfigMap:
| Variable | Value |
|---|---|
TZ |
America/Chicago |
PUID |
977 |
PGID |
988 |
Most applications share the arr-data PersistentVolumeClaim for media and download storage, ensuring a unified /data directory structure across the stack.
Data Flow¶
The diagram below shows how data moves through the stack, from media requests through downloading and processing to playback.
flowchart LR
Prowlarr -->|"sync indexers"| Sonarr
Prowlarr -->|"sync indexers"| Radarr
Seerr -->|"requests"| Sonarr
Seerr -->|"requests"| Radarr
Sonarr -->|"send to download"| Downloads["qBittorrent"]
Radarr -->|"send to download"| Downloads
Downloads -->|"completed archives"| Unpackerr
Unpackerr -->|"extracted files"| Media["/data/media"]
Downloads -->|"completed files"| Media
Media --> Jellyfin
Media --> Tdarr
Bazarr -->|"subtitles"| Media
Recyclarr -->|"quality profiles"| Sonarr
Recyclarr -->|"quality profiles"| Radarr
FlareSolverr -->|"solve captchas"| Prowlarr
Jellyfin --> Seerr
Application Summary¶
| Application | URL | Description | Image |
|---|---|---|---|
| Jellyfin | jellyfin.homelab.local |
Media server for movies, TV, and music | lscr.io/linuxserver/jellyfin:10.11.6 |
| Sonarr | sonarr.homelab.local |
TV series management and automation | lscr.io/linuxserver/sonarr:4.0.17 |
| Radarr | radarr.homelab.local |
Movie management and automation | lscr.io/linuxserver/radarr:6.0.4 |
| Prowlarr | prowlarr.homelab.local |
Centralized indexer manager | lscr.io/linuxserver/prowlarr:2.3.0 |
| Bazarr | bazarr.homelab.local |
Automated subtitle downloading | lscr.io/linuxserver/bazarr:1.5.6 |
| Seerr | seerr.homelab.local |
Media request management | ghcr.io/seerr-team/seerr:v3.1.0 |
| Downloads | qbit.homelab.local |
VPN-routed torrent client (qBittorrent) | qmcgaw/gluetun:v3.41.1, lscr.io/linuxserver/qbittorrent:5.1.4 |
| Recyclarr | -- | Quality profile sync (CronJob) | ghcr.io/recyclarr/recyclarr:8.5.1 |
| Tdarr | tdarr.homelab.local |
Automated media transcoding | ghcr.io/haveagitgat/tdarr:2.65.01 |
| Unpackerr | -- | Automatic extraction of compressed downloads | ghcr.io/unpackerr/unpackerr:v0.15.2 |
| Exportarr | -- | Prometheus metrics exporter for *arr apps | ghcr.io/onedr0p/exportarr:v2.3.0 |
| FlareSolverr | -- | Captcha-solving proxy for Prowlarr indexers | ghcr.io/flaresolverr/flaresolverr:v3.4.6 |
| Homepage | home.homelab.local |
Dashboard aggregating all services | ghcr.io/gethomepage/homepage:v1.11.0 |
| Uptime Kuma | status.homelab.local |
Synthetic monitoring and status page | louislam/uptime-kuma:2.2.1 |
ArgoCD Sync Waves¶
All arr applications deploy at sync wave 1. Homepage and Uptime Kuma deploy at sync wave 2* so that service endpoints are available before they attempt to query them.