Hey guys! After over 2 years of me asking how to take the first steps in self-hosting, I think I’ve finally got most of the things I need set up (except for a mailcow server proxied through a VPS, but that’s for another day). I’ve been seeing a bunch of posts here about the *arr stack, and only recently it piqued my interest enough to really warrant a serious look. But I’ll be honest, it’s a bit confusing. For now, I’m just thinking of starting up the whole suite on my machine, then slowly expose to internet the parts I find useful (and shut down the parts I don’t). But I really can’t find any good…tutorial(?) on how to quickly get the whole stack running, and I’m a bit worried about launching individual apps since I don’t know if/how they communicate with each other. So I’ll try to summarize my, quite naïve, questions here:
- how exactly do I set up a quick stack? Is that possible? And more importantly, is that recommended?
- most of the tutorials/stacks I see online use plex for video streaming, but seeing a lot of negativity around plex and its pricing, I reckon using jellyfin would be better. Does it just plug into the ecosystem as easily as plex apparently does?
- I’ve already set up a hack-ish navidrome instance to stream music, but managing files is a real hassle with it. Does sonarr(?) do it any better?
I know most of these questions can be easily answered through some LLM (which I don’t wanna rely on) or scouring documentation (which honestly look a bit daunting from my point right now), so I figured it’d be best to ask here. Thanks for any help!
as always, the answer is “it depends” - everyone has their own unique flavor of *arr stack with different components. Breaking it down, everything revolves around the core apps:
- Radarr, for movies
- Sonarr, for TV shows / anime
- Lidarr, for music
- Readarr (now Bookshelf), for books/audiobooks
- Whisparr, for porn
These apps do the majority of the hard work of going from eg. “I want this movie” to “this movie file is now downloaded and placed into a subdirectory on my NAS or storage somewhere”
Realistically, all you need to get started is a download client (usenet, torrent client, whatever - the most popular choice is qbittorrent-nox or an equivalent docker container), your *arr app(s) of choice, and a way to consume and share the media you’ve now downloaded to your NAS or server (plex, jellyfin, stash, audiobookshelf, VLC, etc)
For consuming media, here’s a non-comprehensive list that most people will recommend at least one thing from:
- Plex or Jellyfin for audiovisual media. TV shows, anime, movies, porn, audiobooks, and music
- Stash for porn-specific media, if you prefer. Significantly better metadata handling and management designed specifically and only for porn
- Audiobookshelf specifically for books and audiobooks. Again, better metadata handling and management designed specifically for books/audiobooks
- VLC or an equivalent if you prefer mounting your media share to your PC and just playing the raw files
The rest of the *arr ecosystem serves as a way to automate this core idea or fix issues with that automation. An example from my own homelab:
- I have every *arr app listed as the core for finding/downloading whatever media
- I have two instances of Sonarr and Bookshelf. One Sonarr for TV shows and one for anime, and similarly one Bookshelf for regular books and one for audiobooks. the way data management is handled in these apps it’s significantly easier to set up two instances of each rather than trying to force everything into one app
- I use Prowlarr as an indexer manager. You can add indexers to each app but it’s easier to set up Prowlarr and let it do the handling and search caching
- I use qBittorerent for the actual downloading and Plex for sharing. I’ve found that friends and family have a much easier time both finding and using Plex, so I stuck with that over Jellyfin
- I set up Unpackerr because often times you’ll find imports for the *arr apps fail because they’re compressed in some way. This just automates the finding and decompressing of those files so they can import successfully without needing me to go in and do things myself
- I use configarr to automate the application of the TRaSH guides to each *arr which significantly increases the odds of getting a good quality version of whatever it is you’re looking for when doing an automatic search
- I have Seerr set up so friends and family can request movies, TV, or anime on their own without needing to message me all the time
- The *arr apps do an okay-ish job of constantly looking for upgrades for existing media but they fail in a lot of unexpected ways so I used to run Huntarr. After that imploded I created and now run Fetcharr. If a better version of something I have is ever released it’ll nab it automatically
- Since I’m a filthy dub watcher (I just can’t do subtitles, sorry) I have Taggarr to tag anime series as “not the dubbed version” which works well enough
- I just set up dispatcharr for live TV which was a fun little side-project and maybe could be useful later. This was one of those “ooh pretty” set-it-up-and-see-how-it-goes things.
- Because automated requests from Seerr and Fetcharr can clog up your queues with failed downloads pretty quickly (stalled, bad releases or naming, etc), I set up Cleanuparr to deal with that whole mess. Works pretty well, no need to check and clear things myself any more
- My wife can’t do any media without subtitles so I also have Bazarr running to download those for any media that’s missing them
- I also set up Maintainerr because I’ve realized my friends and family have a habit of requesting stuff and then never watching it, so this prevents media from completely filling up the NAS. It deletes media based on rulesets. Mine is customized to delete unwatched stuff after X days
- I also have Mixarr set up which I have mixed (hah) feelings on. Just takes my music I listen to and grabs artists I don’t already have. Very obviously vibe-coded which makes me nervous because of the type of people who vibe-code popular apps and the thick skin required to publish popular apps to the internet. So far I haven’t found anything better
- I also recently set up audiobookshelf for books and audiobooks. The metadata handling and management is ehh so I may look into LazyLibrarian to clean up and properly tag downloaded media before audiobookshelf pulls it so it can actually get the correct books and authors
- I also have Stash running for an interface to Whisparr, since adding porn to Plex would be a terrible idea. My friends have kids and they watch a lot on the Plex. It would be super unfortunate to have porn as a recommended video
- Finally, I run tautulli for stats upon stats upon stats. And because Mintainerr can make use of it
- FileFlows and Tdarr are also popular for compression, health checks, etc of existing media. I ran them previously but don’t any longer
Not all of these will be useful to you, and you’ll likely find others that are more useful for your situation. Like I mentioned, everyone’s *arr stack is different and unique.
My recommendation: start with an *arr or two, configarr (optional but really recommended - hard to set up but once you do you’re good forever), prowlarr (optional but you’ll thank yourself later if you ever get into this and end up with more *arrs), and unpackerr (really do recommend this one) and go from there.
Trying to be as helpful as I can, I think you might consider streaming (Plex/Jellyfin) and downloading (*arrs) as two seperate concerns.
Arrs:
For now don’t worry about anything other than sonarr (tv shows) or radarr (movies). you can add the more complexity once you get it working.
These *arrs do two main things:
- Connect to a “transport” to get new media or update existing media. This is a torrent client or a nzb/usenet client.
- Manage your media files (such as storage strategies).
I would create a minimum viable config like this:
[sonarr] ----> [transmission or whatever torrent/nzb client]
at that point you should be able to download tv shows and you can building on it. Next steps might be nzbget, radarr or seerr (which is a very nice way to surface this functionality to your users), or connect things like prowlarr.
The other thing I would say is use something like Docker for this. Easy to make changes that way and provision new services. Here’s my arrs stack’s docker-compose.yml (which is by far not best practice, but it might help you)
services: ############################## # Transport ############################## sabnzbd: image: 'linuxserver/sabnzbd:latest' container_name: sabnzbd extends: file: ../_templates/template.yaml service: large networks: - arrs-edge volumes: - './sabnzbd:/config' - '/media/web/downloads:/downloads' - '/media/web/incomplete-downloads:/incomplete-downloads' - '/media/web/watched:/watched' transmission-openvpn: image: haugene/transmission-openvpn container_name: transmission extends: file: ../_templates/template.yaml service: large networks: - arrs-edge devices: - /dev/net/tun cap_add: - NET_ADMIN ports: - 9091:9091 volumes: - /media/web/torrent-data:/data - /media/web/books-import/torrents:/data/watch - ./transmission/config:/config ############################## # Arrs ############################## radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr extends: file: ../_templates/template.yaml service: nolimit # environment: # - UMASK=022 volumes: - './radarr:/config' - '/media/movies:/movies' - '/media/web/downloads:/downloads' - '/media/web/torrent-data:/torrent-data' networks: - arrs-edge sonarr: image: ghcr.io/linuxserver/sonarr:develop container_name: sonarr extends: file: ../_templates/template.yaml service: nolimit volumes: - './sonarr:/config' - '/media/tv-shows-1:/tv-shows' - '/media/web/downloads:/downloads' - '/media/web/torrent-data:/torrent-data' - '/media/web/torrent-data/completed/sonarr:/data/completed/sonarr' - '/media/tv-shows-3:/tv-shows-2' networks: - arrs-edge prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr extends: file: ../_templates/template.yaml service: medium volumes: - ./prowlarr:/config networks: - arrs-edge seerr: image: ghcr.io/seerr-team/seerr:latest init: true container_name: seerr extends: file: ../_templates/template.yaml service: medium volumes: - ./seerr:/app/config networks: - arrs-edge - pangolin-arrs-edge healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 start_period: 20s timeout: 3s interval: 15s retries: 3 restart: unless-stopped networks: arrs-edge: external: true pangolin-arrs-edge: external: truePlex vs Jellyfin
Everyone one loves to talk about how they use jellyfin, but I suspect many more people quietly run Plex. You should probably try both, but some things to be aware:
Jellyfin:
Pros:
- Very configurable and extensible with a massive plugin library
- Free
- No bloat
- Excellent codec support
Cons:
- No streaming tunnel. If you use cloudflare tunnel, you aren’t allowed to stream media. If you use pangolin, you can create something on Oracle’s free teir that should be good enough. but you need to configure and set that up. Plex just works out of the box
- Significant security issues. I really don’t wont to start a flame war, but there are issues that I find concerning such as streams being no-auth etc. In their defence, they’re working through the issues. You could probably manage this with some good reverse proxy configs.
- UI can be a bit slow on older hardware. Plex isn’t great either, but in my experience, Jellyfin is worse.
Plex
Pros:
- Has an included tunnel service for remote access which requires very little configuration
- Everything just works
- UI is pretty responsive. Better than AWS Prime apps on my tv, worse than netflix/youtube.
Cons:
- Not free. However, they frequently have significant sales on their lifetime membership.
- Spammy home view. You can disable this on each client, but its just an extra level of confusion for non techies connecting to your system.
- Very little extensibility. They use to support plugins but those days are pretty much gone.
- It chokes on some HDR codecs on my 5 year old tv I find, where as jellyfin doesn’t
Personally, I think Plex is best if you want to access this stuff remotely and you haven’t yet configured a reverse tunnel that can stream media. If you have a pangolin, or you’re comfortable opening a port on your home router, or you have no need to stream remotely, then Jellyfin might be worth looking at if for no other reason than its ecosystem of plugins. I have both available remotely, but I use Plex more than I use Jellyfin.
I paid 79€ or something for Plex Lifetime well over a decade ago and it’s by far the best bang for buck I’ve ever got.
It’s also dead simple to share it with friends and acquaintances safely. I know how to manage VPN tunnels and all that shit. I’m not setting that up for my aunt who lives 4 hours away. We did manage to get Plex running on her TV over the phone though.
I’m not setting that up for my aunt who lives 4 hours away. We did manage to get Plex running on her TV over the phone though.
I’ve said this exact same thing in the past and got flamed for it. The “grandma factor” is a very real consideration. My grandma lives almost 5 hours away. I’m not going to walk my grandma through side-loading the Jellyfin app onto her TV, because no native app exists on its App Store. She won’t understand what a Developer Mode for her TV is, let alone how to enable it. And even if it had a native app, the moment she has to input a custom URL for my server, she’ll shut down and say it’s too hard. But she already has a Netflix account, and understands the concept behind a login page. So I can easily walk her through Plex’s sign-in.
It’s also hard to understate how bad some of the Jellyfin vulnerabilities are. They’re straight up “people can completely bypass the login page to stream media from your server” bad. Sure, it requires knowing the file path ahead of time. And that might be a level of security… Except for the fact that basically everyone uses the Trash Guides to set their *arr’s up, which means they all have the same file structure and automatic naming schemes. And the Jellyfin devs have stated that they likely won’t ever fix many of the biggest vulnerabilities, because it would require completely divesting from the Emby fork that the entire project is built on. Jellyfin is wonderful for LAN viewing. But holy shit please don’t expose it to the internet.
If you wanna go full easy-mode: yams.media
After you’ve learned how everything works, you can start modifying and eventually completely remove yourself from yams
The arr stack is kinda tricky to get started and understand how it all works together, but as soon as it clicks, it’s awesome !!
Can’t exactly say what, but I kinda got lost and what helped me out was to slowly work one arr service at a time and understand what they actually do. (First only Sonarr after awhile I added prowlarr, then radarr and now slowly testing Seer !)
Trash guide was also helpful specially for custom formats. Just take your time and don’t try to much to make your own custom formats… Have seen alot a of people on private trackers blow up their ratio without noticing it.
Best advice I can give you is to just play arround with sonarr or radarr alone and try things out and see what they do ^^ Or try to read and understand the official documentation but you will have a better grasp while doing things :)
Edit: Ohh and forget about asking chatGPT… It will mostly output outdated information an cause you more trouble and leave you even more confused !
Good to know I’m not stupid for feeling a little intimidated by the arr stack XD
Actually, I think I will follow this and start with just sonarr to get a feel for it first. I have barely any clue of what ‘format’ means here, so clearly I’d be better off taking a small step first. Thanks!



