Skip to content

Self-hosted complete media server Jellyfin with sonarr, radarr, jackett, prowlarr, qbittorrent, flaredolverr and gluetun Nord VPN Proton VPN in docker compose

License

Notifications You must be signed in to change notification settings

Morzomb/All-jellyfin-media-server

Repository files navigation

All-jellyfin-media-server

Welcome to the All-jellyfin-media-server Repository! This repository contains everything you need to create your own Jellyfin media server with Sonarr, Radarr, Jellyseerr, Prowlarr, Jackett, qBittorrent, and Gluetun (VPN) in a Docker Compose setup. We'll refer to the compilation of all containers as Isyrr to keep it simple.

GitHub last commit GitHub repo size visitors

Note

Acceder au repository en Français

Table of contents

What is Isyrr for?

This repository allows you to create your own Jellyfin media server with all the necessary tools to manage your movies, TV shows, music, and eBooks. It also includes tools to automate the downloading of new content and to protect your privacy using a VPN.

Isyrr uses Docker and Docker Compose to deploy the services. Docker Compose files can be found in the directories with-vpn and without-vpn.

Important

To use Docker Compose, make sure Docker is installed on your system.


Jellyfin

Jellyfin is an open-source media server software that allows you to stream your movies, TV shows, music, and eBooks to all your devices. It is compatible with many types of media files and supports streaming to numerous devices.

Jellyseerr

Jellyseerr is an open-source application that allows you to automate the management of your Jellyfin media server. It works by monitoring your Jellyfin library and automatically searching for and downloading new content based on your preferences. Jellyseerr supports integration with various other tools, such as Sonarr and Radarr, to provide a seamless experience for managing your media collection.

Sonarr

Sonarr is TV show management software that allows you to search, download, and manage your favorite TV shows automatically. It works with many types of trackers and torrent clients and supports automatic subtitle downloading.

Radarr

Radarr is movie management software that allows you to search, download, and manage your favorite movies automatically. It works with many types of trackers and torrent clients and supports automatic subtitle downloading.

Jackett

Jackett is a proxy software for torrent trackers that allows you to search for torrent files on many trackers from one place. It works with many types of torrent clients and supports authentication and advanced searching.

Flaresolverr

Flaresolverr is open-source software that allows you to bypass streaming restrictions on video-sharing sites. It works by resolving streaming links and bypassing geographical blocks and playback restrictions.

Prowlarr

Prowlarr is download management software that allows you to search for and automatically download files from many types of sources, including torrent trackers, newsgroups, and direct download sites.

qBittorrent

qBittorrent is open-source BitTorrent client software that allows you to download torrent files. It is lightweight, easy to use, and supports many advanced features such as built-in torrent search, encryption, torrent creation, and support for private trackers.

Gluetun (VPN)

Gluetun is open-source VPN client software that allows you to connect to VPN servers. It is easy to use and supports many advanced features such as port forwarding, DNS leak protection, and support for multiple VPN protocols.


Prerequisites

Note

This service requires a machine with at least 4 CPU cores and 8 GB of RAM. It is also highly recommended to have an NVIDIA GPU for optimal performance.

Première chose à faire mettre à jour votre systèmes :

sudo apt update && sudo apt upgrade

Docker

To install Docker on your system, use the following commands:

Download the script with this command:

curl -fsSL https://get.docker.com -o get-docker.sh

Then run the script with this command:

sh get-docker.sh

Tip

I recommend giving Docker administrative rights to your user:

usermod -aG docker <user>

After this command, disconnect and reconnect.

Using Docker Compose :

To use Docker Compose with this repository, you first need to choose whether you want to use the version with VPN or without VPN. Then, navigate to the corresponding directory (with-vpn or without-vpn) and run the following command :

docker-compose up -d

To shut down the stack :

docker-compose down

^ back to top ^

NVIDIA

Warning

Please be aware that due to the recent updates to Debian 12 and Proxmox, NVIDIA drivers have become unstable. Therefore, there are two methods for installing the drivers.

For my server, it has an NVIDIA GeForce 1060 graphics card. The installed OS is Proxmox 8.1.10, based on Debian 12. If you need to check compatibility, refer to the NVIDIA support matrix.

First Method

Go to the NVIDIA website and select your graphics card. Here is an example:


Copy the download link for the driver, you should get a link that looks like this:

https://us.download.nvidia.com/XFree86/Linux-x86_64/550.127.05/NVIDIA-Linux-x86_64-550.127.05.run
  1. System Update and Preparation

Update and upgrade your system to ensure all packages are up to date.

apt update
apt upgrade
  1. Download and Prepare the NVIDIA Driver

Download the required NVIDIA driver.

wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.127.05/NVIDIA-Linux-x86_64-550.127.05.run
chmod u+x NVIDIA-Linux-x86_64-550.127.05.run
  1. Install the NVIDIA Container Toolkit Keys and Repository

Add the GPG key and configure the repository for NVIDIA container tools.

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
  1. Update Repositories and Install Required Packages

Update the repositories and install the necessary packages for compilation.

apt update
apt install pve-headers gcc make
  1. Install the NVIDIA Driver

Install the downloaded NVIDIA driver using the kernel source path.

./NVIDIA-Linux-x86_64-550.127.05.run --kernel-source-path /usr/src/linux-headers-6.8.12-3-pve/
  1. Install and Configure NVIDIA Container Toolkit

Install the NVIDIA Container Toolkit and configure it for Docker.

apt install nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
  1. Configure Docker Daemon

Edit the Docker configuration file to set up the runtime and data path.

nano /etc/docker/daemon.json

Add the following content :

{
    "data-root": "/<YOUR_PATH>/docker",
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}
  1. Reboot

Your environment is now set up to run Docker containers with NVIDIA GPU support.

Final Verification

Ensure the GPU is properly detected :

root@pve:~#nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P8     9W /  78W |      1MiB /  3072MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

^ back to top ^

Second Method

Warning

This method is deprecated as it can cause significant conflicts if you frequently update your server.

  1. Your /etc/apt/sources.list should look like this :
deb http://ftp.debian.org/debian bookworm main contrib
deb http://ftp.debian.org/debian bookworm-updates main contrib

# Proxmox VE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

# security updates
deb http://security.debian.org/debian-security bookworm-security main contrib

# Debian Bookworm
### Add this line
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware

And :

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
  1. Update repositories :
apt update
  1. Install updates :
apt upgrade
  1. Install NVIDIA drivers :

Only for Proxmox environment :

apt install pve-headers

Then :

apt install libnvidia-cfg1 nvidia-kernel-source nvidia-kernel-common nvidia-driver nvidia-container-toolkit

nvidia-ctk runtime configure --runtime=docker
  1. Configure Docker Daemon

Edit the Docker configuration file to set up the runtime and data path.

nano /etc/docker/daemon.json

Add the following content:

{
    "data-root": "/<YOUR_PATH>/docker",
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}
  1. Reboot

  2. Then enter nvidia-smi which should display :

root@pve:~#nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P8     9W /  78W |      1MiB /  3072MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

There might be errors during installation; it's preferable to use nvidia-patch :

git clone https://github.com/keylase/nvidia-patch.git

cd nvidia-patch
./patch.sh

Caution

If you need to restart the installation, here’s how to uninstall the NVIDIA drivers:

apt remove nvidia-driver
apt purge *nvidia*
apt autoremove
apt clean
apt search nvidia-driver
apt autoremove glx-alternative-nvidia libegl-nvidia0 libgl1-nvidia-glvnd-glx libgles-nvidia1 libgles-nvidia2 libglx-nvidia0 nvidia-alternative nvidia-detect nvidia-driver nvidia-driver-bin nvidia-driver-libs nvidia-kernel-dkms nvidia-kernel-source nvidia-open-kernel-dkms nvidia-open-kernel-source xserver-xorg-video-nvidia

If any residual files remain, search for them using apt search nvidia-driver.

^ back to top ^

VPN

Now we will see how to set up the VPN. Personally, I will use ProtonVPN and NordVPN, but you can find a number of other VPN providers as well HERE.

NORD

First, you need to connect to the Nord VPN website.

  1. Go to Nord VPN services :
  1. Select manual configuration of NordVPN :
  1. You can now take your login and password for the gluetun container :

PROTON

Go to Protont VPN website.

  1. Go to Download :
  1. Configure your VPN manually with an OS name to use, and make sure to enable NAT-PMP. Finally, select the desired country :
  1. You can now gather your information for the Gluetun container setup :

Caution

Make sure you have either downloaded the file or copied its content into a text file, as some information will no longer be available after you click "Close".

Troubleshoot VPN

Once the Docker is launched, you can test your VPN with the following command :

docker exec qbittorrent curl -s https://api.ipify.org/
# Result
94.101.115.63

On my side, it shows me an IP address in Belgium :

^ back to top ^


Installation

First, clone the repository :

git clone https://github.com/Morzomb/All-jellyfin-media-server.git
cd All-jellyfin-media-server/

For the installation, I have only created three versions of the docker-compose file.

Before proceeding, navigate to the .env file located in the compose_files/ directory and complete it with the required information. This file must always be at the root of the docker-compose file you are going to launch.

# BASE
COMMON_PATH=/YOUR_PATH/Isyrr
TZ=Europe/Paris

# Uncomment the lines below to enable the corresponding VPN configuration

# NORD VPN
# OPENVPN_USER=username  # Your username for NordVPN
# OPENVPN_PASSWORD=password  # Your password for NordVPN
# SERVER_REGIONS=Belgium  # Choose the server region (Belgium here)

# PROTON VPN 
# ENDPOINT_IP=PEER_ENDPOINT_IP  # The endpoint IP address of the VPN server
# WIREGUARD_ADDR=Interface_Address  # The WireGuard interface address
# ENDPOINT_PORT=51820  # Default port is 51820, but confirm if different
# DNS_ADDRESS=Interface_DNS  # DNS address for ProtonVPN
# PUBLIC_KEY=PEER_PublicKey  # The public key of the other peer
# PRIVATE_KEY=Interface_PrivateKey  # Your private key

Warning

Make sure you uncomment and configure the settings according to the VPN service you're using. This step is essential for establishing a proper VPN connection.

1. Basic Installation

Standard installation without a VPN or NVIDIA:

To start the installation, execute :

cd compose_files/
docker compose -f docker-compose.yaml up -d

Go to the file here

2. Installation with NVIDIA Only

Standard installation with NVIDIA but without a VPN:

To start the installation, execute :

cd compose_files/
docker compose -f docker-compose-nvidia.yaml up -d

Go to the file here

3. Installation with NVIDIA and VPN

Warning

If you use this method, fill in the .env file located in compose_files/VPN.

Standard installation with both VPN and NVIDIA:

To start the installation, execute :

cd compose_files/VPN/
docker compose -f docker-compose-<YOUR_VPN>-vpn.yaml up -d

Go to the file here

^ back to top ^

Accessing Applications

Once the applications are deployed, you can access them using the following addresses :

Important

Replace localhost with the IP address of your machine or remote server if needed.

Gluetun (Nord VPN) will be automatically configured to be used with the applications.

Configuration Guide for Web Interfaces Only

Important

All links containing the container name can be replaced with either the server IP or localhost. Also, replace /COMMON_PATH/ with the path you configured in the .env file.

qBittorrent

  1. Open the WebUI by clicking on the application icon in the DOCKER tab and selecting WebUI.
  2. Log in with the default credentials:
    • Username: admin
    • Password: adminadmin

Note: The default credentials may have changed, please check the documentation for updates on this.

  1. Once logged in, click the gear icon to go to Options.
  2. Under the Downloads tab, configure the backup settings as follows:
    • Default Torrent Management Mode: Automatic (required for category-based save paths to work)
    • When Torrent Category changed: Relocate torrent
    • When Default Save Path changed: Relocate affected torrents
    • When Category Save Path changed: Relocate affected torrents
    • Default Save Path: /downloads
  3. Click SAVE.

Category Configuration

  1. In the WebUI, expand CATEGORIES in the left menu. Right-click on All and select Add category....
  2. In the New Category window, configure as follows:
    • Category: radarr (this corresponds to the category you will later configure in Radarr)
    • Save path: /downloads/radarr
  3. Click Add.
  4. Right-click on All again, select Add category....
  5. Configure as follows:
    • Category: sonarr (this should match the category configured later in Sonarr, by default sonarr-tv, but this guide uses sonarr)
    • Save path: /downloads/sonarr
  6. Click Add.

^ back to top ^


Radarr

Media Management

  1. Open the WebUI and go to Settings > Media Management.
  2. Click Add Root Folder, add the path /COMMON_PATH/radarr/movies, and click OK.
  3. Click Show Advanced at the top, scroll down to Importing, and make sure Use Hardlinks instead of Copy is enabled.

Download Clients

  1. In the WebUI, go to Settings > Download Clients.
  2. Click + under Download Clients, then select qBittorrent from the Add Download Client window.
  3. Fill in the fields as follows:
    • Name: qBittorrent (or another name of your choice)
    • Host: qbittorrent
    • Username: admin
    • Password: adminadmin (change it if you've modified it in qBittorrent)
    • Category: radarr (this should match the category set in qBittorrent)
  4. Click Test. If you see a checkmark, it means the connection is working; if not, there is an error.
  5. Click Save.

Indexer Jackett (Optional)

  1. In the WebUI, go to Settings > Indexers.
  2. Click + under Add Indexer, then select Torznab.
  3. Fill in the fields as follows:
    • Name: Torznab (or another name of your choice)
    • URL: http://Jackett:9117/api/v2.0/indexers/YOUR_INDEXERS/results/torznab/
    • ApiKey: Find the API key in the home menu at the top right.
  4. Click Test. If you see a checkmark, it means the connection is working; if not, there is an error.
  5. Click Save.

^ back to top ^


Sonarr

Media Management

  1. Open the WebUI and go to Settings > Media Management.
  2. Click Add Root Folder, add the path /COMMON_PATH/sonarr/tv, and click OK.
  3. Click Show Advanced, scroll down to Importing, and enable Use Hardlinks instead of Copy.

Download Clients

  1. In the WebUI, go to Settings > Download Clients.
  2. Click + under Download Clients, then select qBittorrent.
  3. Fill in the fields as follows:
    • Name: qBittorrent (or another name of your choice)
    • Host: qbittorrent
    • Username: admin
    • Password: adminadmin (change it if you've modified it in qBittorrent)
    • Category: sonarr (this should match the category set in qBittorrent)
  4. Click Test. If you see a checkmark, it means the connection is working.
  5. Click Save.

Indexer Jackett (Optional)

  1. In the WebUI, go to Settings > Indexers.
  2. Click + under Add Indexer, then select Torznab.
  3. Fill in the fields as follows:
    • Name: Torznab (or another name of your choice)
    • URL: http://Jackett:9117/api/v2.0/indexers/YOUR_INDEXERS/results/torznab/
    • ApiKey: Find the API key in the home menu at the top right.
  4. Click Test. If you see a checkmark, it means the connection is working; if not, there is an error.
  5. Click Save.

^ back to top ^


Prowlarr

Configure Torrent Indexers

  1. Open the WebUI and go to Indexers > Add New Indexer.
  2. Select 1337x (or another tracker of your choice).
    • You can modify the settings as per your preference, but the default values generally work well.
    • Sorting by Seeders can be useful for faster downloads.
  3. Click Test. If you see a checkmark, the connection is functional; otherwise, there's an error.
  4. Click Save.

Configure FlareSolverr

  1. Go to Settings and click + under Indexer.
  2. Select FlareSolverr and fill in the information as follows:
    • Name: FlareSolverr
    • Tags: flaresolverr
    • Host: http://flaresolverr:8191/
  3. Click Test to check the connection.
  4. Click Save.

Configure Radarr

  1. Go to Settings and click Apps.
  2. Select Radarr and fill in the information as follows:
    • Sync Level: Full Sync
    • Prowlarr Server: http://prowlarr:9696
    • Radarr Server: http://radarr:7878
    • ApiKey: Find the API key in the Radarr interface under Settings > General > API Key.
  3. Click Test to check the connection.
  4. Click Save.

Configure Sonarr

  1. Go to Settings and click Apps.
  2. Select Sonarr and fill in the information as follows:
    • Sync Level: Full Sync
    • Prowlarr Server: http://prowlarr:9696
    • Sonarr Server: http://sonarr:8989
    • ApiKey: Find the API key in the Sonarr interface under Settings > General > API Key.
  3. Click Test to check the connection.
  4. Click Save.

^ back to top ^


Jellyfin

Initial Setup

  1. Open the Web UI by going to the DOCKER tab, click the app logo for Jellyfin, and select WebUI.
  2. Select a preferred display language (or use the default English). Click Next ➝.
  3. Create an administrator account, fill out the credentials as desired, and click Next ➝.
  4. Click Add Media Library and fill in the following:
    • Content type: Movies
    • Folders: /COMMON_PATH/radarr/movies
    • Configure the rest as you see fit; the default settings are typically fine.
  5. Click OK.
  6. Click Add Media Library again and fill in the following:
    • Content type: Shows
    • Folders: /COMMON_PATH/sonarr/tv
    • Configure the rest as you see fit; the default settings are typically fine.
  7. Click OK.
  8. Click Next ➝.
  9. Configure the Preferred Metadata Language (or use the default), and click Next ➝.
  10. In Configure Remote Access, leave Allow Remote Connections to this Server checked and Enable Automatic Port Mapping unchecked.
  11. Click Next ➝, then click Finish.
  12. Sign in with your administrator account.

Once you sign in, if you already have media in your /COMMON_PATH/* folders, it should start appearing in Jellyfin. If not, the content will populate as the folders are filled.

Adding Users to Jellyfin

If you want other users to access your Jellyfin server, you can create additional user accounts. This step is optional if you're the only user.

  1. Open the left menu by clicking on the three horizontal lines (hamburger menu) in the upper left corner.
  2. Select Users and click the + button on the left to add a new user.
  3. Fill in the following details for the new user:
    • Name: <username>
    • Password: <password>
    • Under Library Access, check the boxes for the libraries (Movies, TV shows, etc.) that you want the user to have access to.
  4. Click Save to create the user.
  5. Repeat this process for all users you wish to add to the server.

^ back to top ^


Jellyseerr

Sign In / Configuration

  1. Open the WebUI and in the Welcome to Jellyseerr screen, select Use your Jellyfin account.
  2. Fill in the information as follows:
    • Jellyfin URL: http://jellyfin:8096/
    • Email Address: <your email address>
    • Username: <your Jellyfin username>
    • Password: <your Jellyfin password>
  3. Select Sign In.
  4. Go to Sync Libraries under Jellyfin Libraries, select your Jellyfin libraries, then click Continue.

Integrating with Radarr

  1. Go to Radarr Settings, then click Add Radarr Server.
  2. Fill in the information as follows:
    • Default Server: Check this box
    • Server Name: Radarr
    • Name or IP Address: http://radarr
    • Port: 7878
    • API Key: Find the API key in the Radarr interface under Settings > General > API Key.
  3. Click Test to check the connection.
  4. Click Save Changes.

Integrating with Sonarr

  1. Go to Sonarr Settings, then click Add Sonarr Server.
  2. Fill in the information as follows:
    • Default Server: Check this box
    • Server Name: Sonarr
    • Name or IP Address: http://sonarr
    • Port: 8989
    • API Key: Find the API key in the Sonarr interface under Settings > General > API Key.
  3. Click Test to check the connection.
  4. Click Save Changes.

^ back to top ^


Updating Applications

To update the applications, you need to stop the running containers and remove the existing Docker images. You can use the following commands to perform these operations:

docker-compose down
docker image prune -a

Then, you can run docker-compose up -d to restart the containers with the latest versions of the applications.

^ back to top ^

Disclaimer

This code is provided for informational purposes only and should not be used for illegal activities. I am not responsible for the actions performed by users of this code. This code is for informational purposes, and if people wish to use it, they should consult the laws of their countries.