# ARR Stack Overview and Service Architecture This section explains all the applications included in your Media Manager stack, what each one does, how they interact with each other, and how the storage mount points are shared across services. The stack is deployed using a **Docker Compose file**. Instead of pasting the compose inline here, it is referenced directly: πŸ‘‰ **See the Docker Compose configuration:** `docker-compose.yml` --- # 🌐 The ARR Ecosystem β€” What Each App Does Your media automation pipeline consists of several specialized services. Each one has a dedicated role, and together they form a complete end‑to‑end system. Below is a clear breakdown. --- ## 🧭 Prowlarr β€” The Indexer Aggregator Prowlarr acts as the central hub for all indexers (public, private, torrent, NZB). **Responsibilities:** * Connects to multiple indexers * Provides unified indexer results to Radarr & Sonarr * Manages API keys, categories, indexer syncing **Why it’s important:** Without Prowlarr, you would configure indexers separately in each application β€” a massive duplication of work. **How it talks to others:** * Sends torrent results β†’ Radarr/Sonarr * Receives indexer categories from them --- ## 🎬 Radarr β€” Automated Movie Management Radarr handles **movie** automation. **Responsibilities:** * Monitor movie requests * Fetch releases from indexers via Prowlarr * Trigger downloads via qBittorrent * Rename, sort, and move completed files into the Movies directory * Update Plex libraries **How it talks to others:** * Index results from Prowlarr * Sends download requests to qBittorrent * Notifies Plex to refresh libraries * Provides subtitles to Bazarr (optional) --- ## πŸ“Ί Sonarr β€” Automated TV Show Management Sonarr is the TV equivalent of Radarr. **Responsibilities:** * Track TV episodes (past and future) * Upgrade quality automatically * Send downloads to qBittorrent * Rename and organize episodes **How it talks to others:** * Index results from Prowlarr * Send downloads to qBittorrent * Sync subtitle requests with Bazarr --- ## πŸ’¬ Bazarr β€” Subtitle Management Service Bazarr automatically finds and downloads subtitles. **Responsibilities:** * Sync with Radarr and Sonarr * Fetch subtitles in desired languages * Store subtitles next to their respective media files **How it talks to others:** * Reads Radarr/Sonarr libraries * Writes subtitle files directly inside `/data/media/...` --- ## 🎟️ Jellyseerr β€” Request Management Portal Jellyseerr is the user-facing request dashboard. **Responsibilities:** * Users request movies or shows * Requests are forwarded automatically to Radarr/Sonarr * Designed for multi-user setups **How it talks to others:** * Communicates with Radarr/Sonarr via API * Shows availability status using Plex integration --- ## πŸ“¨ Ombi β€” Alternative Request Management Ombi is similar to Jellyseerr, with some different UI and features. **Responsibilities:** * Allows users to request media * Integrates with Radarr and Sonarr * Sends notifications Some prefer Jellyseerr, others prefer Ombi β€” you can run both. --- # 🧱 How These Services Are Connected ### Central Flow Diagram (conceptual) ``` Jellyseerr/Ombi β†’ Radarr/Sonarr ← Prowlarr ↓ qBittorrent (host) ↓ Organized media library ↓ Plex ↓ Clients ``` ### Key Points: * **Prowlarr provides indexer data** to both Radarr and Sonarr * **Radarr/Sonarr send download requests** to qBittorrent (host) * **qBittorrent stores downloads** into the shared mounted folders * **Radarr/Sonarr import, rename, and move** completed media into `/data/media/...` * **Plex sees updated libraries** and refreshes * **Bazarr fetches subtitles** and writes them next to the media All Docker apps talk to host apps using: ``` host.docker.internal:host-gateway ``` This ensures containers can reach qBittorrent and Plex. --- # πŸ—„οΈ Volume Mount Strategy All apps share a **standardized mount point** inside containers: ``` /data ``` Outside the container, this maps to: ``` /mnt/omnissiah-vault/data/media-manager ``` This ensures: * Radarr, Sonarr, Bazarr all see the **same folder structure** * No path translation issues between apps * Clean docker-compose configuration ### Example Inside Containers ``` /data/media/movies /data/media/tv /data/downloads ``` --- # πŸ—‚οΈ Config Directory Mounts Each service stores its settings inside Docker volumes mapped to persistent directories. ### Radarr ``` /mnt/omnissiah-vault/configs/radarr β†’ /config ``` ### Sonarr ``` /mnt/omnissiah-vault/configs/sonarr β†’ /config ``` ### Prowlarr ``` /mnt/omnissiah-vault/configs/prowlarr β†’ /config ``` ### Bazarr ``` /mnt/omnissiah-vault/configs/bazarr β†’ /config ``` ### Jellyseerr ``` /mnt/omnissiah-vault/configs/jellyseerr β†’ /app/config ``` ### Ombi ``` /mnt/omnissiah-vault/configs/ombi β†’ /config ``` All containers get persistent configuration that survives updates. --- # πŸ”§ Docker Networking All ARR services join the same Docker network: ``` media-net ``` This provides: * Internal communication * Isolated service space * Avoids exposing containers unintentionally --- # πŸš€ Summary Your ARR stack consists of: * **Prowlarr** for indexers * **Sonarr** for TV * **Radarr** for movies * **Bazarr** for subtitles * **Jellyseerr or Ombi** for request management They connect using APIs, communicate through a private Docker network, and share a unified `/data` folder that maps to your mounted storage. This architecture keeps everything predictable, reproducible, and easy to maintain. --- Next: Proceed to configure each service inside their Web UIs.