Sonarr
Series collection manager for Usenet and BitTorrent users
Sonarr is a PVR for Usenet and BitTorrent that monitors RSS feeds for new TV episodes, grabs them and renames and organizes the files. It targets users automating a TV library for Plex or Jellyfin. It is deployed via Docker or native packages.
Sonarr setup guides & articles
Hands-on coverage of Sonarr from the blog.
Key features
- Automatic episode monitoring
- Quality profile upgrades
- Calendar of upcoming episodes
- Automatic renaming and sorting
Quick deploy
A starting point for self-hosting Sonarr - check the official docs for the full set of options.
- Image
lscr.io/linuxserver/sonarr:latest - Web port
8989 - Persist
/config/data
Docker Compose
services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
ports:
- "8989:8989"
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- ./data:/data
restart: unless-stoppeddocker run
docker run -d --name sonarr \
-p 8989:8989 \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-v ./config:/config \
-v ./data:/data \
--restart unless-stopped \
lscr.io/linuxserver/sonarr:latestWatch out for
- Give Sonarr and your download client one shared /data mount so imports are instant hardlinks, not copies
Pros & cons
Strengths
- Automated episode management
- Quality upgrade automation
- Calendar and renaming tools
Trade-offs
- Needs indexers and downloader
- Initial setup takes effort
Last reviewed Aug 25, 2026 · 659 words
Sonarr automates a TV library: tell it which series you follow, and it finds releases via your indexers, hands them to your download client, renames the result to a clean Series/Season 01/ layout, and upgrades quality when better versions appear — forever, unattended. It's the piece that turns media self-hosting from a weekly chore into plumbing. It is also the app whose filesystem layout decision, made in the first ten minutes, determines whether your disk enjoys instant imports or years of pointless copying.
The one decision that matters: a single /data mount
The canonical mistake is giving Sonarr and the download client separate volume mounts (/downloads and /tv from different host paths). Docker then presents them as different filesystems, so every completed download gets copied into the library — doubling disk churn and leaving torrents unseedable. The fix is structural: one shared mount for everything.
services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
ports:
- "8989:8989"
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- /srv/data:/data
restart: unless-stopped
With the host's /srv/data containing both downloads/ and media/tv/, and every arr and download container mounting that same /data, imports become instant hardlinks: the file appears in the library while the original keeps seeding, costing zero extra bytes. Set this before adding your first series — restructuring a populated library later is an afternoon of path surgery. The same layout serves the whole arr stack (Radarr for movies, and Prowlarr managing indexers for all of them so you configure each indexer exactly once).
Quality profiles: decide once what "good enough" means
Sonarr's default profiles will happily re-download your entire library each time a marginally better release appears. Tame it in five minutes: pick one profile (1080p WEB-DL is the sane household standard — good quality, sensible sizes, no HDR complications), set a quality ceiling as well as a floor, and use the cutoff so upgrades stop once the target is met. Size limits per quality catch the pathological releases. If storage is the constraint, remember the honest math: a tracked series at 1080p runs 2–5 GB per season for WEB-DL, and Sonarr will faithfully fill whatever you let it — the monitoring stack watching disk-space trend earns its keep here.
Series settings people learn the hard way
- Monitor "future episodes" when adding an ongoing series you're current on — the default of grabbing the entire back catalogue at 3 a.m. is the classic bandwidth surprise.
- Season folders on, always — Jellyfin and every scanner expect them.
- Sonarr uses TheTVDB's episode ordering; anime and reordered shows sometimes mismatch releases. The series-edit page's "series type" (standard/daily/anime) fixes most of it.
- Let Sonarr do all renaming. If you also hand-organise, the two of you will fight, and Sonarr is more persistent than you are.
Keep the whole thing off the internet
Sonarr's web UI has authentication, but its API, its connected download client, and its indexer credentials make the stack a poor thing to expose. There's no reason to: you interact with it rarely (that's the point), and remote requests are better served by putting Jellyseerr in front — the household asks for shows in a friendly UI, Sonarr executes silently. Everything else stays LAN or Tailscale-only, per the standard threat-model logic.
What I'd do
The single /data layout from minute one, Prowlarr feeding indexers, 1080p WEB-DL profile with a cutoff, future-episodes monitoring, Jellyseerr as the family's front door, all of it tailnet-only. Configured this way, Sonarr is the most set-and-forget service in the rack — the entire point of the arr philosophy — and the only ongoing interaction is your household wondering how new episodes keep appearing before they've thought to ask.
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify