Skip to main content
Version: 0.0.2

Media

Bazarr

Subtitles Provider service that works closely with sonarr and radarr. It extracts subtitles from downloaded media, making it easier for media players such as jellyfin or plex to display subtitles in a simple format without forcing transcoding. There is also a feature to synchronize subtitles with the audio when the quality is low, which helps ensure they display correctly while watching media. In addition, Bazarr supports using whisper-ai to autogenerate subtitles from the media file when no other providers are available.

It took some time to tweak the settings to get it right for my setup. The most important setting I found was to use the embedded subtitles provider to automatically extract subtitles from the file. Also, it's a good idea to change the hearing-impaired extension to sdh, as Jellyfin may parse hi as Hindi.

Cleanuparr

A small project I added to my media services that automatically handled cleaning up items stuck in sonarr and radarr queues. It also has features to automatically block certain malicious content from being downloaded, which helped when my server encountered problematic torrents. I tried using its blacklisting feature, but found it restrictive for some trackers; fortunately it allows handling public and private torrents separately.

ErsatzTV

warning

Deprecated 12/25

ErsatzTV is an IPTV provider service that can create live channels using your existing media library. It was handy when I wanted continuous background playback without selecting content manually. Defining a channel is simple and the service randomly generates a schedule based on the media you select. I rarely use it now; tuning into a channel in jellyfin sometimes takes several minutes to display content.

This was a fun service to experiment with, but I rarely used it in production — it mostly filled out my Jellyfin page.

Jellyfin

One of the best services I have configured, Jellyfin streams content from my media library to any device. Configuration is straightforward aside from transcoding. Learning how to enable and tune media transcoding took time: essentially transcoding decodes and re-encodes media/audio/subtitle formats to be compatible with the target device.

Through jellyfin I discovered the hardware needed to provide good transcoding performance and learned a lot about Intel QSV. This is probably my most used service. I also recently added SSO for easier browser logins.

GPU Configuration

Using an Intel iGPU or dGPU is a simple passthrough into the container: mount /dev/dri and enable hardware transcoding. For NVIDIA GPUs you also need the container toolkit referenced in docker.mdx.

JellyPlex Watched

warning

Deprecated 12/25

When testing plex I found that migrating from jellyfin risks losing watch history. JellyPlex-Watched synchronized watch history between the two and was easy to set up.

Jellyseerr

I tried multiple media request services (ombi, requestarr) before finding jellyseerr. It's a clone of overseerr tailored to Jellyfin and provides a clean UI for requesting media to be downloaded via sonarr and radarr. I configured default settings for TV shows and movies to control content quality. Currently movies can be downloaded up to 4k, while shows are capped at 1080p. Jellyseerr integrates with jellyfin for authentication, so no separate accounts are required.

Lidarr

warning

Deprecated 12/31/24

I tested Lidarr as an album organizer, but it did not fit my use case. Many tracks in my collection couldn't be matched, so I eventually stopped using it and managed music metadata manually.

Navidrome is a music streaming service similar in purpose to Jellyfin but focused on audio. It was simple to configure. Early on I had issues with parsing m3u playlists due to Windows vs Linux path formatting; I wrote a script to convert playlist paths to a Unix-compatible format.

Notifiarr

notifiarr is not self-hosted here; I run a client that connects to the notifiarr server. I keep it because it produces neat Discord messages for media updates. Some hosted applications in my stack also offer direct support for Notifiarr.

Plex

I explored the plex ecosystem, including the sonic sage music feature. The UI is polished and many users prefer it over Jellyfin. However, I dislike the extra advertising and bundled content. Plex is currently running a full library scan in my setup; a neat feature is adaptive streaming quality based on bandwidth.

Profilarr

warning

Deprecated 1/25/26

Profilarr was a configurable UI for managing profiles and was similar to Recyclarr. It offered opinionated, prebuilt profiles based on Trash Guides which made syncing to radarr and sonarr straightforward. For some profiles you can lock scope to a specific service (e.g., Radarr), which caused initial confusion but worked well once configured.

Over time I became frustrated with Profilarr's sync databases and the lack of some profiles (anime). I eventually switched back to Recyclarr.

Prowlarr

Prowlarr manages a custom list of torrent trackers and queries them to provide download compatibility for radarr and sonarr. It can synchronize tracker information into those services and supports prioritization. Early on I relied on public trackers; over time I moved to private trackers for better quality. I also use Prowlarr to search for books.

Radarr

Radarr handles movie imports. It synchronizes trackers from Prowlarr and sends downloads to qbittorrent. Completed torrents are tagged and processed (copied or hardlinked) so media servers like jellyfin can discover them. I define quality profiles to rank desired content; these profiles are now managed by recyclarr.

warning

Deprecated 11/1/25

Recyclarr

When configuring quality profiles for sonarr and radarr I found Trash Guides. Trash Guides provide regexes that help rank results during searches. Recyclarr lets you centralize profiles and synchronize them to Sonarr and Radarr, and it polls Trash Guides to keep profiles up to date.

I created custom profiles for different content types. Currently Sonarr prefers 1080p (blu-ray not remux) and Radarr prefers 4k (blu-ray not remux). I also avoided formats like true-hd that can force expensive audio transcoding. Recyclarr also sets naming schemes that are friendly for jellyfin.

I revisited Recyclarr after earlier issues and improved my configuration and monitoring (I added apprise to notify on sync changes and failures).

Sonarr

Sonarr handles TV-show imports. It synchronizes trackers from Prowlarr and downloads content with proper categories and hardlinking. Quality profiles for Sonarr are also managed by recyclarr.

Watchstate

A lightweight dashboard for tracking watched/played state across media services. Deployed at watchstate.dripdrop.pro in this repo's compose with the image ghcr.io/arabcoders/watchstate. It's proxied behind traefik and exposes both a web UI and an API used by other integrations.

Whisper

warning

Deprecated 3/26/26

A handy addition to bazarr, Whisper leverages a whisper-ai model to parse audio tracks and auto-generate subtitles. It's used as a fallback when other subtitle providers fail and is reasonably accurate. Running the GPU model with the NVIDIA 3060 performed well; I later tuned VFIO binding to better share the GPU and unload the model when idle.

Removed due to little usage from bazarr.