Media Stack – Jackett, Radarr, Sonarr, Plex, TransmissionVPN.

Media Stack – Jackett, Radarr, Sonarr, Plex, TransmissionVPN.

Going to break down my current media stack, as well as list what these tools are and what they do. As well as how you can use these tools together to have a great media automation setup. I’ll specifically be sharing my docker-compose files so you can easily set this up quickly. You can customize it to your needs afterwards. Or even run each service in it’s own VM. But why would you with docker being a thing?

https://github.com/Jackett/Jackett
Jackett – Jackett works as a proxy server: it translates queries from apps (SonarrRadarrSickRageCouchPotatoMylarLidarrDuckieTVqBittorrentNefarious etc.) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic – removing the burden from other apps.

https://github.com/Radarr/Radarr
Radarr – Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available.

https://github.com/Sonarr/Sonarr
Sonarr – Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

Plex – Need I say more?

Transmission – Transmission is a torrent downloader. The one I’m using also has a built in VPN. You’ll have to use whatever torrent downloader you prefer. You can use this one, but you’ll need to supply your own VPN provider Info.

Requirements – Linux, Windows, Mac

I’ll be using Linux

  • Ubuntu Server 20.04
  • Static IP preferable
  • Install Docker
  • Install Docker-compose
  • Make yourself a sudo user

Storage

I’m going to leave storage up to you, and how you want to configure it. It could be local. Or it could be on a NFS/SMB file share. It doesn’t really matter. You can decided how you want to do it.

But to make your life easier I’ll show you a screen shot of how i have my hosts shares mapped with SMB shares.

Docker-compose / Files

I like to put my configs in their own folders, some people prefer to have everything in one large compose file. Which you can do, I just choose not to combine them. I’m not particularly gifted with cli, nor do I like spending much time doing things I don’t have to. I generally make every compose file have its on folder under /home/user/docker/xxxx for example.

If a container needs persistent storage i generally keep it under the same folder. Here’s /home/sleblanc/docker/radarr expanded to show you the persisted data is stored in the same dir.

docker-compose.yml files

Save all files as docker-compose.yml make sure to edit your compose files to your storage layout where movies, or tv show shares may be.

Radarr compose file

---
version: "2.1"
services:
  radarr:
    image: ghcr.io/linuxserver/radarr
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
      - UMASK_SET=022 #optional
    volumes:
      - ./config:/config
      - /mnt/write/movies:/movies
      - /mnt/write/downloads:/downloads
    ports:
      - 7878:7878
    restart: unless-stopped

Sonarr compose file

---
version: "2.1"
services:
  sonarr:
    image: ghcr.io/linuxserver/sonarr
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
      - UMASK_SET=022 #optional
    volumes:
      - ./config:/config
      - /mnt/write/tv:/tv
      - /mnt/write/downloads:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped

Jackett compose file

---
version: "2.1"
services:
  jackett:
    image: ghcr.io/linuxserver/jackett
    container_name: jackett
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Chicago
      - AUTO_UPDATE=true #optional
      - RUN_OPTS=<run options here> #optional
    volumes:
      - ./config:/config
      - /mnt/write/jackett:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped

Plex compose file – don’t forget your own PLEX_CLAIM=CODE

---
version: "2.1"
services:
  plex:
    image: linuxserver/plex
    container_name: plex
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - VERSION=docker
      - UMASK_SET=022 #optional
      - PLEX_CLAIM=PUTYOURCLAIMCODEHERE
    volumes:
      - ./config:/config
      - /mnt/readonly/tv:/tv
      - /mnt/readonly/movies:/movies
    restart: unless-stopped

Transmission-vpn – You’ll have to set this up manually.

version: '3.3'
services:
    transmission-openvpn:
        volumes:
            - /mnt/write/downloads:/data
        environment:
            - OPENVPN_PROVIDER=PIA
            - OPENVPN_CONFIG=ca_toronto
            - OPENVPN_USERNAME=XXXX
            - OPENVPN_PASSWORD=XXXX
            - WEBPROXY_ENABLED=yes
            - LOCAL_NETWORK=192.168.0.0/16
        cap_add:
            - NET_ADMIN
        logging:
            driver: json-file
            options:
                max-size: 10m
        ports:
            - '9091:9091'
        restart: unless-stopped
        image: haugene/transmission-openvpn

Docker noob?

You may be asking ok…. But how do I run this now? Spend a little time learning some docker basics. But. Basically if you’ve structured everything similar to my setup. Editing your compose files how you need them for storage.

You can see below, i’m in /home/sleblanc/docker/sonarr structured in the ways i listed above.

Now I can just run docker-compose up -d and my container starts.

Configuring each service

As you can see, sonarr is now running. You can type in the cli.

docker ps

to see all running containers, there it will tell you what port its running on.

Now open up my browser and go to my docker host 192.168.10.10:8989

Docker Resources

https://awesome-docker.netlify.app/

https://hub.docker.com/

https://www.docker.com/get-started

Make them all work together??

You can youtube how to make them all work together. It’s late and I need to go to bed.

Comments are closed.