Media Manager¶
Radarr & Sonarr¶
The Radarr charm (radarr-k8s) and Sonarr charm (sonarr-k8s) manage Radarr and Sonarr in your Charmarr stack. Radarr handles movies, Sonarr handles TV shows. The charms share nearly identical logic, differing only in ports, media types, and folder paths.
Relations¶
The charms talk to other charms to figure out how to set everything up. The order in which these connections happen doesn't matter. The charm sorts it out.
| Connects To | Interface | What It Learns |
|---|---|---|
| Storage | media-storage |
Where the media root is, UID/GID for file permissions |
| Prowlarr | media-indexer |
Publishes API URL so Prowlarr can push indexers |
| qBittorrent/SABnzbd | download-client |
Gets their connection info, configures them as download clients |
| Plex | media-manager |
Publishes root folders and content type so Plex can create libraries |
| Overseerr | media-manager |
Publishes API URL, quality profiles, root folders so Overseerr can send requests |
| VPN Gateway | vpn-gateway |
Optional VPN routing (if related) |
| Ingress | istio_ingress_route |
Enables external access |
The charm aggressively reconciles download clients. If you manually add a download client in Radarr/Sonarr that isn't a Juju relation, it gets deleted. Charms are declarative and Charmarr is designed to ✨just work✨.
An API key is generated automatically and stored as a Juju secret. It rotates periodically if configured.
Lifecycle¶
sequenceDiagram
participant Storage
participant RC as Radarr/Sonarr Charm
participant App as Radarr/Sonarr App
participant DC as Download Clients
RC->>Storage: Where's the media?
Storage-->>RC: /data + UID/GID
Note over RC: Waits if no reply
RC->>RC: Create API key
RC->>App: Start
App-->>RC: Ready
Note over RC: Waits if no reply
RC->>App: Sync TRaSH profiles
DC-->>RC: Here's our connection info
RC->>App: Configure download clients
RC->>App: Create root folder
RC-->>Prowlarr: Here's my API URL
RC-->>Plex/Overseerr: Here's my profiles and folders
Variants¶
Deploy multiple instances with different variants to separate content:
| Variant | Radarr Root Folder | Sonarr Root Folder | Default TRaSH Profile |
|---|---|---|---|
| standard | /data/media/movies |
/data/media/tv |
None (set manually) |
| 4k | /data/media/movies-uhd |
/data/media/tv-uhd |
uhd-bluray-web |
| anime | /data/media/anime/movies |
/data/media/anime/tv |
anime |
Each variant uses its app name as the download client category (e.g., radarr, radarr-4k). The download clients create matching categories automatically.
Each Radarr/Sonarr charm includes a Recyclarr sidecar that syncs quality profiles from TRaSH Guides. Recyclarr runs on every reconcile if configured. It's idempotent, so running it multiple times is safe. The profiles it creates are published to Overseerr automatically.
Note
Override default profiles using the trash-profiles config option. See Manual Deploy.
Configuration¶
See radarr-k8s on Charmhub and sonarr-k8s on Charmhub for all options.