Automated media center

cover

I have a lot of media to watch and I don't want to spend time searching for it, downloading it, renaming it, moving it, etc. I want to be able to request a movie or a TV show and watch it in less than 5 minutes. I also want to be able to watch it on any device, anywhere, anytime.

Warning

This article is for educational purposes only. I does not encourage the piracy of licenced content. Doing what is described in this article is illegal in some countries. I am not responsible for the use you make of this article.

I do not use this setup to download and watch pirated content. No pirated content was downloaded during the writing of this article. Placeolder files were used instead.

Requirements

We are going to use the following tools :

We are also going to need a linux based server with for hosting all of this.

Deployment

For the deployment, we are going to use Docker and Docker Compose.

Docker Compose

The full docker-compose.yml file is available here.

Then we can start the stack with the following command :

docker compose up -d

Then we can check that everything is running with :

docker compose ps

The output should look like this :

NAME                              IMAGE                                    COMMAND             SERVICE             CREATED             STATUS              PORTS
auto-media-center-jackett-1       lscr.io/linuxserver/jackett:latest       "/init"             jackett             20 minutes ago      Up 20 minutes       0.0.0.0:9117->9117/tcp
auto-media-center-overseerr-1     lscr.io/linuxserver/overseerr:latest     "/init"             overseerr           9 minutes ago       Up 9 minutes        0.0.0.0:5055->5055/tcp
auto-media-center-plex-1          lscr.io/linuxserver/plex:latest          "/init"             plex                9 minutes ago       Up 9 minutes        0.0.0.0:3005->3005/tcp, 0.0.0.0:8324->8324/tcp, 0.0.0.0:1900->1900/udp, 0.0.0.0:32410->32410/udp, 0.0.0.0:32400->32400/tcp, 0.0.0.0:32412-32414->32412-32414/udp, 0.0.0.0:32469->32469/tcp, 5353/udp
auto-media-center-qbittorrent-1   lscr.io/linuxserver/qbittorrent:latest   "/init"             qbittorrent         20 minutes ago      Up 20 minutes       0.0.0.0:6881->6881/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:6881->6881/udp
auto-media-center-radarr-1        lscr.io/linuxserver/radarr:latest        "/init"             radarr              20 minutes ago      Up 19 minutes       0.0.0.0:7878->7878/tcp
auto-media-center-sonarr-1        lscr.io/linuxserver/sonarr:latest        "/init"             sonarr              20 minutes ago      Up 19 minutes       0.0.0.0:8989->8989/tcp

Setup

Now that everything is running, we can start the setup.

Plex

This is the first thing we are going to setup. Plex is the media server and player. It is the core of our media center.

First we need to access the service through the web interface. The default port is 32400. So we can access it at http://<server-ip>:32400/web.

If you don't have a Plex account, you can create one for free. Then you will be able to access the web interface.

After going through the wizard, you should see something like this :

Plex web interface init

We can now add our media libraries. For this example, I will add a TV shows library and a movies library.

First the movies library configuration :

Plex web config movies library 01 Plex web config movies library 02

Then the TV shows library configuration :

Plex web config tv shows library 01 Plex web config tv shows library 02

Finally Plex server should look like this :

Plex web interface final

Jackett

Jackett is a torrents indexer. It will allow us to search for torrents on multiple trackers at once.

First we need to access the service through the web interface. The default port is 9117. So we can access it at http://<server-ip>:9117.

You should see something like this :

Jackett web interface init

Then we need to add some indexers. For this example, I will add the following indexers :

Jackett indexer config

Copy the Torznab URL of each indexer and the API key. We will need them later.

QBittorrent

qBittorrent is a torrents client. It will allow us to download torrents.

First we need to access the service through the web interface. The default port is 8080. So we can access it at http://<server-ip>:8080. The default username is admin and the default password is adminadmin.

You should see something like this :

QBittorrent web interface init

Then we need to configure the download folder in (Options > Downloads). For this example, I will use /downloads as the download folder and /incomplete-downloads as the incomplete downloads folder. Don't forget to click Save at the bottom of the page.

Sonarr

Sonarr is a TV shows manager. It will allow us to search for TV shows and download them automatically.

First we need to access the service through the web interface. The default port is 8989. So we can access it at http://<server-ip>:8989.

You should see something like this :

Sonarr web interface init

Indexers

We are going to configure the indexers in (Settings > Indexers). For this example, I will use the following configuration :

Field Value Comment
Type Torznab
URL http://jackett:9117/api/v2.0/indexers/1337x/results/torznab/ Copied Torznad URL from Jackett web interface. We need to replace localhost by jackett
API Key Copied API key from Jackett web interface.
Categories TV
Download client

We are going to configure the download client in (Settings > Download Client). For this example, I will use the following configuration :

Field Value
Type qBittorrent
Enable Yes
Host qbittorrent
Port 8080
UseSsl No
Username admin
Password adminadmin

We can test the connection by clicking on Test at the bottom of the page.

Note : You can set the Initial State to Paused if you don't want Sonarr to download all the episodes of the TV shows you add.

Media management

We are going to configure the media management in (Settings > Media Management). This will allow Sonarr to rename and move the downloaded episodes from qBittorret in the right folder for Plex to find them.

For this example, I will use the following configuration :

Sonarr media management config 01

Test

Now we should be able to add a TV show. In (Series > Add Series), we can search for Game of Thrones and add it :

Field Value
Root Folder /media/Series/Game of Thrones
Monitor All Episodes
Quality Profile HD-1080p

Then we click on the Game of Thrones card and we should see something like this :

Sonarr tv example

Then we can click on the Interractive Search button (small person icon) to search the first season torrents :

Sonarr tv example search

We can click on the Download button to trigger the download of the first season.

On the (Activity > Queue) we can see the download progress :

Sonarr tv example download

And on qBittorrent we can see the download progress :

QBittorrent tv example download

And finally when the download is finished, Sonarr will rename and move the episode in the right folder. And Plex will detect the new episode and add it to the library.

Sonarr tv example final

Plex tv example final

Radarr

Radarr is a movies manager. It will allow us to search for movies and download them automatically.

First we need to access the service through the web interface. The default port is 7878. So we can access it at http://<server-ip>:7878.

You should see something like this :

Radarr web interface init

Indexers

We are going to configure the indexers in (Settings > Indexers). For this example, I will use the following configuration :

Field Value Comment
Type Torznab
URL http://jackett:9117/api/v2.0/indexers/1337x/results/torznab/ Copied Torznad URL from Jackett web interface. We need to replace localhost by jackett
API Key Copied API key from Jackett web interface.
Categories Movies
Download client

We are going to configure the download client in (Settings > Download Client). For this example, I will use the following configuration :

Field Value
Type qBittorrent
Enable Yes
Host qbittorrent
Port 8080
UseSsl No
Username admin
Password adminadmin

We can test the connection by clicking on Test at the bottom of the page.

Note : You can set the Initial State to Paused if you don't want Radarr to download all the Films you add.

Media management

We are going to configure the media management in (Settings > Media Management). This will allow Radarr to rename and move the downloaded films from qBittorret in the right folder for Plex to find them.

For this example, I will use the following configuration :

Radarr media management config 01

Test

Now we should be able to add a TV show. In (Series > Add Series), we can search for Avengers and add it :

Field Value
Root Folder /media/Films/The Avengers (2012)
Monitor Movie Only
Quality Profile HD-1080p

Then we click on the The Avengers card and we should see something like this :

Sonarr movie example

Then we can click on the Search tab to search the film torrents :

Sonarr movie example search

We can click on the Download button to trigger the download of the first season.

On the (Activity > Queue) we can see the download progress :

Radarr movie example download

And on qBittorrent we can see the download progress :

QBittorrent movie example download

And finally when the download is finished, Radarr will rename and move the episode in the right folder. And Plex will detect the new episode and add it to the library.

Radarr movie example final

Plex movie example final

Overseerr

As you can see, Radarr and Sonarr are great tools. But they are not very user friendly. Overseerr will allow us to request TV shows and movies in a nice web interface.

First we need to access the service through the web interface. The default port is 5055. So we can access it at http://<server-ip>:5055.

During the first setup, we need to configure the following fields :

Plex Settings

This will allow Overseerr to connect to Plex and look if media are already available in the library.

Field Value
Server Your Plex server
Hostname or IP Address http://plex
Port 32400
Use SSL No
Plex Libraries Films,Series

Radarr Settings

This will allow Overseerr to connect to Radarr and trigger the download of requested movies.

Field Value
Default Server Yes
Server Name Radarr
Hostname or IP Address http://radarr
Port 7878
API Key Copied API key from Radarr web interface (Settings > Général).
Quality Profile HD-1080p
Root Folder /media/Films

Sonarr Settings

This will allow Overseerr to connect to Sonarr and trigger the download of requested TV shows.

Field Value
Default Server Yes
Server Name Sonarr
Hostname or IP Address http://sonarr
Port 8989
API Key Copied API key from Sonarr web interface (Settings > Général).
Quality Profile HD-1080p
Root Folder /media/Series

If everything is configured correctly, you should see something like this in the Discovery tab :

Overseerr discovery

We can see that the movie Avengers and TV show Game of Thrones are already available in Plex.

Notes : User that have access to your Plex server will be able to request movies and TV shows. They can login with their Plex account.

You can configure the users in the Users tab. You can for example create a local users that will be able to acces Overseerr without a Plex account.

Requesting media

We will now try to request a movie from Overseerr. We will use a local user for this example.

Let's try to request the movie Deerskin. From the Discover tab, we can search for Deerskin and we should see something like this :

Overseerr movie search

Then we can click on the Request button to request the movie.

Going back to the Requests tab with our admin account, we can see the request :

Overseerr movie request

We can click on the Approve button to approve the request. This will trigger the download of the movie in Radarr and download it like we saw earlier in the Radarr section.

And finally when all the process is finished, we can see the movie is available in Overseerr and Plex.