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?
Jackett – Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, Lidarr, DuckieTV, qBittorrent, Nefarious 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.
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.
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
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.
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
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.
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
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.