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!


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:
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:
Cons:
Plex
Pros:
Cons:
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.
Holy smokes this is extremely informative! I’ll start by pulling in chunks of your config and learning from what it gives me. As for plex/jellyfin again, the only reason I’m (slightly) biased towards jellyfin right now is precisely because it’s not as easy to set up and hence gives me more learning opportunities. But I’ll keep an eye out for plex offers regardless - sometimes it’s nice to have something that just works. But thanks a lot for such a thorough response!