---
title: Automated media center
date: 2023-06-21
slug: auto-media-center
authors:
- lunik
description: Fully automated media center step by step from requesting to watching in less than 5 minutes
tags:
- media
- media-center
- plex
- svod
- streaming
- radarr
- sonarr
- prowlarr
- overseerr
- qbitorrent
- torrent
---
<!--
# CHANGELOG

2024-11-04
Replacing Jackett with Prowlarr

-->

![cover](/blog/img/posts/2023-06-21-auto-media-center/cover.png)

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.

<!-- truncate -->

:::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 :

- [Plex][plex-website] : Media server and player
- [Sonarr][sonarr-website] : TV shows manager
- [Radarr][radarr-website] : Movies manager
- [Prowlarr][prowlarr-website] : Torrents indexer
- [Overseerr][overseerr-website] : Requests manager
- [qBittorrent][qbittorrent-website] : Torrents client

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][docker-website] and [Docker Compose][docker-compose-website].

#### Docker Compose

The full `docker-compose.yml` file is available [here](assets/docker-compose.yml).

Then we can start the stack with the following command :
```bash
docker compose up -d
```

Then we can check that everything is running with :
```bash
docker compose ps
```

The output should look like this :
```bash
NAME                              IMAGE                                    COMMAND             SERVICE             CREATED             STATUS              PORTS
auto-media-center-prowlarr-1      lscr.io/linuxserver/prowlarr:latest      "/init"             prowlarr            20 minutes ago      Up 20 minutes       0.0.0.0:9696->9696/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][plex-website] 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][plex-website] 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](/blog/img/posts/2023-06-21-auto-media-center/plex-web-interface-init.png)

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](/blog/img/posts/2023-06-21-auto-media-center/plex-movie-library-config-01.png)
![Plex web config movies library 02](/blog/img/posts/2023-06-21-auto-media-center/plex-movie-library-config-02.png)

Then the TV shows library configuration :

![Plex web config tv shows library 01](/blog/img/posts/2023-06-21-auto-media-center/plex-tv-library-config-01.png)
![Plex web config tv shows library 02](/blog/img/posts/2023-06-21-auto-media-center/plex-tv-library-config-02.png)

Finally [Plex][plex-website] server should look like this :

![Plex web interface final](/blog/img/posts/2023-06-21-auto-media-center/plex-library-config.png)

#### QBittorrent

[qBittorrent][qbittorrent-website] 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](/blog/img/posts/2023-06-21-auto-media-center/qbittorrent-web-interface-init.png)

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][sonarr-website] 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](/blog/img/posts/2023-06-21-auto-media-center/sonarr-web-interface-init.png)

##### Indexers

We are going to see the configuration of the indexers in (**Settings** > **Indexers**). This will be automatically configured by [Prowlarr](#prowlarr) later.

##### 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][sonarr-website] 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][sonarr-website] to rename and move the downloaded episodes from qBittorret in the right folder for [Plex][plex-website] to find them.

For this example, I will use the following configuration :

![Sonarr media management config 01](/blog/img/posts/2023-06-21-auto-media-center/sonarr-media-management-config-01.png)

##### 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](/blog/img/posts/2023-06-21-auto-media-center/sonarr-tv-example.png)

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

![Sonarr tv example search](/blog/img/posts/2023-06-21-auto-media-center/sonarr-tv-example-search.png)

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](/blog/img/posts/2023-06-21-auto-media-center/sonarr-tv-example-download.png)

And on [qBittorrent][qbittorrent-website] we can see the download progress :

![QBittorrent tv example download](/blog/img/posts/2023-06-21-auto-media-center/qbittorrent-tv-example-download.png)

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

![Sonarr tv example final](/blog/img/posts/2023-06-21-auto-media-center/sonarr-tv-example-final.png)

![Plex tv example final](/blog/img/posts/2023-06-21-auto-media-center/plex-tv-example-final.png)

#### Radarr

[Radarr][radarr-website] 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](/blog/img/posts/2023-06-21-auto-media-center/radarr-web-interface-init.png)

##### Indexers

We are going to see the configuration of the indexers in (**Settings** > **Indexers**). This will be automatically configured by [Prowlarr](#prowlarr) later.

##### 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][radarr-website] 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][radarr-website] to rename and move the downloaded films from qBittorret in the right folder for [Plex][plex-website] to find them.

For this example, I will use the following configuration :

![Radarr media management config 01](/blog/img/posts/2023-06-21-auto-media-center/radarr-media-management-config-01.png)

##### 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](/blog/img/posts/2023-06-21-auto-media-center/radarr-movie-example.png)

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

![Sonarr movie example search](/blog/img/posts/2023-06-21-auto-media-center/radarr-movie-example-search.png)

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](/blog/img/posts/2023-06-21-auto-media-center/radarr-movie-example-download.png)

And on [qBittorrent][qbittorrent-website] we can see the download progress :

![QBittorrent movie example download](/blog/img/posts/2023-06-21-auto-media-center/qbittorrent-movie-example-download.png)

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

![Radarr movie example final](/blog/img/posts/2023-06-21-auto-media-center/radarr-movie-example-final.png)

![Plex movie example final](/blog/img/posts/2023-06-21-auto-media-center/plex-movie-example-final.png)

#### Prowlarr

[Prowlarr][prowlarr-website] 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 `9696`. So we can access it at `http://<server-ip>:9696`.

You should see something like this :

![Prowlarr web interface init](/blog/img/posts/2023-06-21-auto-media-center/prowlarr-web-interface-init.png)

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

![Prowlarr indexer config](/blog/img/posts/2023-06-21-auto-media-center/prowlarr-indexer-config.png)

##### Apps

This section in **Settings** will allow us to link Prowlarr to [Radarr](#radarr) and [Sonarr](#sonarr). This way, all the indexers we add in Prowlarr will be automatically added in [Radarr](#radarr) and [Sonarr](#sonarr).

Add two applications :

| Field    | Value         |
|:---------|--------------:|
| Name     | `Radarr`      |
| Sync Level| `Full Sync`   |
| Prowlarr Server | `http://prowlarr:9696` |
| Radarr Server | `http://radarr:7878` |
| API Key  | Copied API key from [Radarr][radarr-website] web interface (**Settings** > **Général**). |

| Field    | Value         |
|:---------|--------------:|
| Name     | `Sonarr`      |
| Sync Level| `Full Sync`   |
| Prowlarr Server | `http://prowlarr:9696` |
| Sonarr Server | `http://sonarr:8989` |
| API Key  | Copied API key from [Sonarr][sonarr-website] web interface (**Settings** > **Général**). |

By checking in [Radarr](#radarr) and [Sonarr](#sonarr), we can see that the indexers have been successfully added in the **Indexers** section.

#### Overseerr

As you can see, [Radarr][radarr-website] and [Sonarr][sonarr-website] are great tools. But they are not very user friendly. [Overseerr][overseerr-website] 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][overseerr-website] to connect to [Plex][plex-website] 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][plex-website] Libraries | `Films,Series`     |

**Radarr Settings**

This will allow [Overseerr][overseerr-website] to connect to [Radarr][radarr-website] 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][radarr-website] web interface (**Settings** > **Général**). |
| Quality Profile        | `HD-1080p`         |
| Root Folder            | `/media/Films`     |

**Sonarr Settings**

This will allow [Overseerr][overseerr-website] to connect to [Sonarr][sonarr-website] 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][sonarr-website] 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](/blog/img/posts/2023-06-21-auto-media-center/overseerr-discovery.png)

We can see that the movie `Avengers` and TV show `Game of Thrones` are already available in [Plex][plex-website].

**Notes :**
User that have access to your [Plex][plex-website] server will be able to request movies and TV shows. They can login with their [Plex][plex-website] 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][overseerr-website] without a [Plex][plex-website] account.

##### Requesting media

We will now try to request a movie from [Overseerr][overseerr-website]. 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](/blog/img/posts/2023-06-21-auto-media-center/overseerr-movie-search.png)

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](/blog/img/posts/2023-06-21-auto-media-center/overseerr-movie-request.png)

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

And finally when all the process is finished, we can see the movie is available in [Overseerr][overseerr-website] and [Plex][plex-website].

<!-- links -->
[plex-website]: https://www.plex.tv
[sonarr-website]: https://sonarr.tv
[radarr-website]: https://radarr.video
[prowlarr-website]: https://prowlarr.com
[overseerr-website]: https://overseerr.dev
[qbittorrent-website]: https://www.qbittorrent.org
[docker-website]: https://www.docker.com
[docker-compose-website]: https://docs.docker.com/compose/
