• 0 Posts
  • 1 Comment
Joined 10 months ago
cake
Cake day: June 2nd, 2025

help-circle
  • 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: true
    

    Plex 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.