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.
[!NOTE] Acceder au repository en Français
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 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 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 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 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 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 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 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 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 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.
[!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
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.
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
[!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.
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
Update and upgrade your system to ensure all packages are up to date.
apt update
apt upgrade
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
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
Update the repositories and install the necessary packages for compilation.
apt update
apt install pve-headers gcc make
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/
Install the NVIDIA Container Toolkit and configure it for Docker.
apt install nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
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"
}
}
}
Your environment is now set up to run Docker containers with NVIDIA GPU support.
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 |
+-----------------------------------------------------------------------------+
[!WARNING]
This method is deprecated as it can cause significant conflicts if you frequently update your server.
/etc/apt/sources.list
should look like this :
```bash
deb http://ftp.debian.org/debian bookworm main contrib
deb http://ftp.debian.org/debian bookworm-updates main contribdeb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
deb http://security.debian.org/debian-security bookworm-security main contrib
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
And :
```bash
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
apt update
apt upgrade
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
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"
}
}
}
Reboot
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
.
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.
First, you need to connect to the Nord VPN website.
Go to Protont VPN website.
[!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”.
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 :
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.
Standard installation without a VPN
or NVIDIA
:
To start the installation, execute :
cd compose_files/
docker compose -f docker-compose.yaml up -d
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
[!WARNING]
If you use this method, fill in the.env
file located incompose_files/VPN-nvidia
.
Standard installation with both VPN
and NVIDIA
:
To start the installation, execute :
cd compose_files/VPN-nvidia/
docker compose -f docker-compose-<YOUR_VPN>-vpn.yaml up -d
[!WARNING]
If you use this method, fill in the.env
file located incompose_files/VPN
.
Standard installation with a VPN
:
To start the installation, execute :
cd compose_files/VPN/
docker compose -f docker-compose-<YOUR_VPN>-vpn.yaml up -d
Once the applications are deployed, you can access them using the following addresses :
[!IMPORTANT]
Replacelocalhost
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.
[!IMPORTANT]
All links containing the container name can be replaced with either the server IP orlocalhost
. Also, replace/COMMON_PATH/
with the path you configured in the.env
file.
admin
adminadmin
Note: The default credentials may have changed, please check the documentation for updates on this. In most cases, qBittorrent Web UI will generate a temporary password when the container is started. To view this password, check the logs for this container with the command: docker logs qbittorrent
Automatic
(required for category-based save paths to work)Relocate torrent
Relocate affected torrents
Relocate affected torrents
/downloads
radarr
(this corresponds to the category you will later configure in Radarr)/downloads/radarr
sonarr
(this should match the category configured later in Sonarr, by default sonarr-tv
, but this guide uses sonarr
)/downloads/sonarr
/COMMON_PATH/radarr/movies
, and click OK.qBittorrent
(or another name of your choice)qbittorrent
admin
adminadmin
(change it if you’ve modified it in qBittorrent)radarr
(this should match the category set in qBittorrent)Note: if entering qbittorrent
as the Host does not work, try entering the IP address instead (ex: 192.168.x.x
)
[!WARNING] On new installations, Radarr may complain that the
/downloads/radarr
directory does not exist inside the container (this is generally flagged as an error by Radarr in System > Status). To fix this, simply move into the directory/COMMON_PATH/qbittorrent/downloads
and manually create theradarr
directory. Then, simply delete qBittorrent from Radarr and re-add it - you should see the error disappear.
Torznab
(or another name of your choice)http://Jackett:9117/api/v2.0/indexers/YOUR_INDEXERS/results/torznab/
/COMMON_PATH/sonarr/tv
, and click OK.Note: if entering qbittorrent
as the Host does not work, try entering the IP address instead (ex: 192.168.x.x
)
qBittorrent
(or another name of your choice)qbittorrent
admin
adminadmin
(change it if you’ve modified it in qBittorrent)sonarr
(this should match the category set in qBittorrent)Torznab
(or another name of your choice)http://Jackett:9117/api/v2.0/indexers/YOUR_INDEXERS/results/torznab/
FlareSolverr
flaresolverr
http://flaresolverr:8191/
Full Sync
http://prowlarr:9696
http://radarr:7878
Full Sync
http://prowlarr:9696
http://sonarr:8989
/COMMON_PATH/radarr/movies
/COMMON_PATH/sonarr/tv
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.
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.
<username>
<password>
http://jellyfin:8096/
<your email address>
<your Jellyfin username>
<your Jellyfin password>
Radarr
http://radarr
7878
Sonarr
http://sonarr
8989
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.
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.