So Part 2. Exciting stuff. Here we'll be installing and setting up the 'Downloading' side of things. If you've jump on here wondering 'What the fuck is this?', check out Part 1 here.

Transmission (with OpenVPN and WebGUI)

The first container we're going to setup is Transmission. You've got two options here ... A Transmission container with our without a VPN behind it. In my opinion, you should already have a VPN provider so we'll start with! Not going to take any credit, the source for this install is here if you come across any issues, worth checking it out. Copy and paste the following into a text editor as we'll need to make some changes:

 docker run --cap-add=NET_ADMIN -d \
              -v /your/storage/path/:/data \
              -v /etc/localtime:/etc/localtime:ro \
              -e CREATE_TUN_DEVICE=true \
              -e OPENVPN_PROVIDER=PIA \
              -e OPENVPN_CONFIG=CA\ Toronto \
              -e OPENVPN_USERNAME=user \
              -e OPENVPN_PASSWORD=pass \
              -e WEBPROXY_ENABLED=false \
              -e LOCAL_NETWORK=192.168.1.0/24 \
              -e TRANSMISSION_UMASK=0 \
              --log-driver json-file \
              --log-opt max-size=10m \
              --dns 8.8.8.8 \
              --dns 8.8.4.4 \
              -p 9091:9091 \
              haugene/transmission-openvpn

You'll need to edit the following lines along the lines of:

          -v /home/swakes/docker/transmission:/data \
          -e OPENVPN_PROVIDER=TORGUARD \
          -e OPENVPN_CONFIG=Netherlands \
          -e OPENVPN_USERNAME=user \
          -e OPENVPN_PASSWORD=pass \
          -e LOCAL_NETWORK=192.168.2.1/24 \

UPDATE: I forgot to mention that you can add the command below to apply a different, more modern, theme to Transmission. Simply add it below the other -e's.

-e TRANSMISSION_WEB_UI=combustion \

When we've edited those lines, copy the entire thing into your terminal and watch the magic happen. Well apart from the response below (if ran correctly), there isn't much to see (ignore the Published ports bollocks if you see it).

For a 'live view' of the logs head over to Portainer, go to Containers and next to the name under Quick Actions, click on the Log icon

Now we can head over to http://ServerIP:9091 and hopefully you'll see the same blank portal like below!

We've now got the first part piece of the server setup! Yey to you. To test that the VPN connection is also working, go to this site by TorGuard, right click on the large Check My Torrent IP Download Now and select Copy Link Location. Keep that tab/windows open and pop back over to Transmission. Click on the folder icon in the top left, paste the magnet link into the URL field and click Upload. Hop back to the TorGuard page and after a few seconds you should see an IP appear, ideally not your home WAN IP address!

Now we can download shit, and securely, let's find some shit to download ...

Jackett

Before we setup Sonarr and crew, lets start with Jackett. Similar to the command before, we need to edit the two '-v' lines:

docker create \
  --name=jackett \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 9117:9117 \
  -v path to data:/config \
  -v path to blackhole:/downloads \
  --restart unless-stopped \
  linuxserver/jackett
  -v /home/swakes/docker/jackett:/config \
  -v /home/swakes/Downloads:/downloads \

Boom! To double check everything is OK, we can check the status of the container either in Portainer or by running docker ps -a.

Once we've confirmed its running, visit http://YourIPAddress:9117.

Now comes the some what laborious part to this install ... The aim of the game is to add as many torrent indexes as possible/feasible, in order to get better search results. Especially when hunting for some niche or old content.

It's fairly simply but quite repetitive, on the Jackett dashboard click on '+ Add Indexer' and wait for the list to populate.

If you're already subscribed to a private tracker (torrent site/forum) then search for your provider and enter your deets. Otherwise, scroll down the list and find a Public tracker (indicated by the green Public box) and add by clicking the green +.

Annoyingly there is no 'bulk' add option so this process needs repeating for each tracker. Once you've added a few you can always test to see if they are still active/down by clicking on 'Test All'.

For now we'll crack on setting up Sonarr and the bunch and come back to Jackett later.‌

Sonarr

You should be getting the hang of this by now. Here's the command you'll need to edit and run:

docker create \
  --name=sonarr \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 8989:8989 \
  -v path to data:/config \
  -v path/to/tvseries:/tv \
  -v path/to/downloadclient-downloads:/downloads \
  --restart unless-stopped \
  linuxserver/sonarr
  -v /home/swakes/docker/sonarr:/config \
  -v /mnt/Media/TV:/tv \
  -v /home/swakes/Downloads:/downloads \

Check the status of the container either in Portainer or by running docker ps -a and if everything is all good, visit http://YourIPAddres:8989.

‌We'll come back to Sonarr later. Now for some movies ...

Radarr

Command to edit and run:

docker create \
  --name=radarr \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 7878:7878 \
  -v path to data:/config \
  -v path/to/movies:/movies \
  -v path/to/downloadclient-downloads:/downloads \
  --restart unless-stopped \
  linuxserver/radarr
  -v /home/swakes/docker/radarr:/config \
  -v /mnt/Media/Movies:/movies \
  -v /home/swakes/Downloads:/downloads \

Check again ... Then check http://YourIPAddress:7878.

Lidarr

And again ...

docker create \
  --name=lidarr \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 8686:8686 \
  -v /path/to/appdata/config:/config \
  -v /path/to/music:/music \
  -v /path/to/downloads:/downloads \
  --restart unless-stopped \
  linuxserver/lidarr
  -v /home/swakes/docker/lidarr:/config \
  -v /mnt/Media/Music:/music \
  -v /home/swakes/Downloads:/downloads \

Keep checking ... Then have a goose at http://YourIPAddress:8686.

LazyLibrarian

And finally ...

docker create \
  --name=lazylibrarian \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 5299:5299 \
  -v path to data:/config \
  -v path to downloads:/downloads \
  -v path to data:/books \
  --restart unless-stopped \
  linuxserver/lazylibrarian
  -v /home/swakes/docker/lazy:/config \
  -v /mnt/Media/Books:/books \
  -v /home/swakes/Downloads:/downloads \

And one last check-aroo in Portainer or docker ps -a then have a puruse at http://YourIPAddress:5299.

Good stuff! We've ploughed through the installing bit and now we have to do some configuring. First we'll need to add the download client Transmission in order to download anything. You'll notice that Sonarr, Radarr and Lidarr all look and feel familiar. For me this means I only have to show you how to do this once. Nice.

Adding Transmission and Indexers

In Sonarr, navigate to Settings and then Download Client. Click on the grey + to add your Transmission deets. Edit to match your Transmission IP, Port, Username and Password. Once entered, click Test to, you guessed it, test the connection and then Save. Easy fucking peasy. Repeat this step for Radarr and Lidarr (LazyLibrarian is as easy, navigate to Config, Downloaders then tick the Transmission box and enter deets).

Sweet. Now Sonarr and the crew can send what they find to Transmission for download. However, at the moment there are no torrent indexes to check. Back to Jackett! This process similar to earlier in Jackett is also repetitive but bare with me! It is worth it in the end!

Pop back to Jackett and take note of your API key in the top right as you'll need this for each entry. The other value required is URL. In the dashboard find an added Indexer and click on Copy Torznab Feed

In Sonarr go to Settings then Indexers. Just like before, click on the grey + and then under Toznab click on Custom. Armed with your API key and URL, enter a name and the deets and click Test to test then Save to save.

Good stuff again. Now repeat that for each Indexer and one each platform (Radarr, Lidarr ...). Unfortunately there isn't any mass upload or config sharing, trust me I've checked. However, once you've got at least a few added and working, you can run a test by searching for a movie or TV show. Hopefully, if I've written this up correctly, after minute or two you should see the torrent in Transmission!

Fucking A. Now we've got the searching and downloading element setup and automated, the next step is to step the lean, mean Plex Media Server streaming machine. Proceed to Part 3 for the final part of this guide, Part 3 - Setting up Plex, Tautulli and Ombi.

P.S I've included some more optional extras below if you need to kill some time!


Optional: get_iplayer

I've added this under 'Optional' as it may be suitable for anyone outside the UK. get_iplayer is a tool allowing you a rip BBC iPlayer TV/Radio shows and this Docker container also includes a Web GUI (usually command line). Similar format to previous installs

docker create \
  --name=getiplayer \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 1935:1935 \
  -v path to downloads:/output \
  --restart unless-stopped \
  marginal/get_iplayer:latest
 
  -v /home/swakes/Downloads:/output \

Once installed and running, go to http://YourIP:1935 and hey presto. For more info or support around get_iplayer check out their site here.

Optional: NGINX Reverse SSL Proxy Server

Once you have all these services up and running, managing them all via a Web UI portal will either require a lot of browser bookmarking or some clever IP/Port number convention (.1,.2,.3,4 ... :5001, :5002, :5003 ...). This is where NGINX/CertBot will come in handy. Have a look at my previous post on how to set that shit up (you can even run it in Docker!).