Media Stack¶
The media namespace contains 13 applications for media management and consumption.
Architecture¶
graph LR
Seerr[Seerr<br/>Requests] --> Radarr
Seerr --> Sonarr
Prowlarr[Prowlarr<br/>Indexers] --> Radarr
Prowlarr --> Sonarr
Radarr[Radarr<br/>Movies] --> qBit[qBittorrent]
Sonarr[Sonarr<br/>TV] --> qBit
Autobrr[Autobrr<br/>Automation] --> qBit
qBit --> Plex[Plex<br/>Media Server]
Bazarr[Bazarr<br/>Subtitles] --> Radarr
Bazarr --> Sonarr
Tautulli[Tautulli] --> Plex
FlareSolverr[FlareSolverr] --> Prowlarr
Storage Pattern¶
All media apps follow a consistent three-tier storage strategy:
| Mount | Type | Storage Class | Access Mode | Purpose |
|---|---|---|---|---|
/config |
PVC | openebs-hostpath |
ReadWriteOnce | App config, databases (backed up via VolSync) |
/media |
NFS | External NAS | ReadWriteMany | Shared media library |
/tmp |
emptyDir | — | — | Ephemeral scratch space |
NFS media mount:
- Server:
nas.3226texas.com - Path:
/mnt/Rust/Media - Container path:
/media - Plex mounts as read-only; arr apps mount as read-write*
Security Context¶
All media apps run with a standard security profile:
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
Applications¶
Plex¶
Media server for streaming movies, TV shows, music, and photos.
- LoadBalancer service at
10.0.6.14 - Exposed at
plex.00o.shandplex-direct.00o.sh - Resources: 100m CPU, 256Mi–2Gi memory
- NFS media mounted read-only
Radarr & Sonarr¶
Movie and TV series collection managers:
- Automate downloading and organizing media
- Integration with Prowlarr for indexer management
- Quality profiles managed by Recyclarr
- External authentication via Kanidm
- Resources: 100m CPU, 1Gi–4Gi memory
Prowlarr¶
Centralized indexer manager for all *arr applications:
- Uses FlareSolverr for Cloudflare-protected sites
- Syncs indexers to Radarr and Sonarr
qBittorrent + Qui¶
Torrent client with a custom web UI:
- qBittorrent handles downloads
- Qui provides a modern web interface
Autobrr¶
Automation for torrent trackers:
- Monitors IRC announces and RSS feeds
- Sends releases to *arr apps or directly to qBittorrent
Seerr¶
Media request and discovery platform:
- Users can request movies and TV shows
- Integrates with Radarr and Sonarr for automatic fulfillment
Bazarr¶
Subtitle management:
- Automatically downloads subtitles for movies and TV shows
- Integrates with Radarr and Sonarr
Supporting Services¶
- Recyclarr — Syncs quality profiles to *arr apps from TRaSH Guides
- Tautulli — Plex monitoring and statistics
- FlareSolverr — Cloudflare bypass proxy for Prowlarr
- TheLounge — Self-hosted IRC client for tracker communication
NFS Dependency¶
Media apps that mount NFS volumes should include the NFS-scaler component to prevent crash-loops when NFS is unavailable:
The NFS-scaler uses KEDA to monitor probe_success{instance=~".+:2049"} and scales the deployment to 0 when NFS is down.
Adding a New Media App¶
- Create directory:
kubernetes/apps/media/<app-name>/app/ - Follow the standard HelmRelease pattern with NFS media mount
- Use UID/GID 1000 in security context (matches NFS permissions)
- Add NFS-scaler component if the app mounts NFS
- Add VolSync component for config backup
- Add to Homepage dashboard
- Update the namespace kustomization