Plex Media Server
Self-hosted media server
Project Overview
Plex runs on TrueNAS with 4K and CPU transcoding. Sonarr and Radarr watch for new releases, Prowlarr and autobrr find them, qBittorrent downloads them, and Seerr lets family and friends request things. Every app on this page runs as a Docker container, and Trakt keeps my watch history.
Current Library Stats Live library stats via Plex API
Movies
Loading...
TV Series
Loading...
TV Episodes
Loading...
Users
Loading...
recently added · what I've been watching →
The Automation Pipeline
From request to library, nothing needs me:
- Trakt Lists → Watchlists I follow sync to Radarr and Sonarr
- Seerr → Requests are approved automatically and sent to Radarr or Sonarr
- Radarr/Sonarr → Watch for new releases and start a search
- autobrr → Watches release announcements and hands matches to Radarr and Sonarr within seconds
- Prowlarr → Searches the configured indexers, and covers RSS when autobrr isn't the source
- qBittorrent → Downloads
- Hardlinks → One file on disk, visible to both the downloader and Plex
- Plex → Scans and adds it to the library
- Trakt Scrobble → Records what gets watched in Plex
- Maintainerr → Clears out what nobody watches, by rule
The *arr Apps
Bazarr (Subtitles)
- Function: Downloads subtitles for movies and shows
- Integration: Picks up new Radarr and Sonarr imports through their APIs and searches on its own
Maintainerr (Cleanup)
- Function: Removes library content by rule, based on what actually gets watched
- Rules:
- Remove movies unwatched for 35+ days after being added
- Remove TV show episodes with no plays in 28+ days
- Exclude content from deletion if added to user collections
- Exclude certain collections (Harry Potter, Spider-Man, Studio Ghibli, etc.)
- Integration: Reads watch history from Plex and Tautulli, then removes the content through Radarr and Sonarr
- Why: Clears out what nobody watches, so the pool doesn't fill up
autobrr (Release Announcements)
- Function: Watches release announcements and hands matches to Radarr and Sonarr within seconds
- Why: New releases don't wait for an RSS refresh or a scheduled search
- Integration: Radarr and Sonarr still decide. autobrr hands over the release, and only watchlisted titles that match a quality profile download
Prowlarr (Indexers)
- Function: One place to configure every indexer
- Why: I add an indexer once and it syncs to Sonarr and Radarr
qBittorrent (Downloads)
- Integration: Sonarr and Radarr send downloads straight to it
- Storage: Downloads land in their own ZFS dataset and get hardlinked into the library
- Configuration: Tuned for throughput and disk efficiency on the ZFS pool
Radarr (Movies)
- Function: Tracks movies and release dates, and upgrades quality when a better copy shows up
- Integration: Prowlarr for indexers, qBittorrent for downloads
- Automation: Follows Trakt lists for new movies and searches as soon as one is released
Sonarr (TV Shows)
- Function: Tracks shows by season and episode, and starts downloads
- Integration: Prowlarr for indexers, qBittorrent for downloads
- Automation: Follows Trakt lists for new shows and searches for each episode when it airs
Unpackerr (Archives)
- Function: Extracts RAR, ZIP, and 7z downloads from qBittorrent's download folder
- Why: Archived releases import without me unpacking them
- Process: Download completes → Unpackerr extracts → Radarr/Sonarr imports → Plex sees it
Request Management
Seerr is where everyone else on the server browses and asks for things. Nobody needs access to Radarr or Sonarr: they request a title, it's approved automatically, and Plex tells them when it lands. Seerr also shows whether something is already in the library or still downloading.
- Auto-Approval: Requests are approved automatically and sent to Radarr or Sonarr
- Discovery: Trending, popular, and recommended movies and TV
- Integration: Sends movies to Radarr and shows to Sonarr
- Workflow: Request → auto-approval → Radarr/Sonarr → Prowlarr search → qBittorrent download → Plex import
Trakt Integration
- Plex Scrobbling: Anything watched in Plex is marked watched in Trakt
- Trakt → Radarr/Sonarr: Specific Trakt lists sync over as things to watch for
- Auto-Discovery: A movie or show added to one of those lists starts a search
- Lists: Several lists, split by genre, priority, or what I plan to watch
- Public Feed: Recent watches show up on the media page, refreshed every 12 hours
Related Projects
- TrueNAS Server Build: The server it runs on.
- Audiobook Server: The same request-to-library setup, for audiobooks.
- Synology to TrueNAS: The move that gave Plex CPU transcoding.