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.
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.
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.
To install Docker on your system, you can use the following script:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
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
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.
/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
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
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
Now we will see how to set up the VPN. Personally, I will use NordVPN, but you can find a number of other VPN providers as well HERE.
First, you need to connect to the Nord VPN website.
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/
Classic installation without VPN
and without NVidia
:
---
version: "3.3"
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- WEBUI_PORT=8080
- PUID=0
- PGID=0
- TZ=${TZ}
- DOCKER_MODS=ghcr.io/gabe565/linuxserver-mod-vuetorrent
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/qbittorrent:/config
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TZ}
ports:
- 8191:8191
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/jackett:/config
ports:
- 9117:9117
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/sonarr:/config
- ${COMMON_PATH}/sonarr/tv:/tv
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/radarr:/config
- ${COMMON_PATH}/radarr/movies:/movies
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
- NVIDIA_VISIBLE_DEVICES=all
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/jellyfin:/config
- ${COMMON_PATH}/jellyfin/cache:/cache
- ${COMMON_PATH}/sonarr/tv:/data/tvshows
- ${COMMON_PATH}/radarr/movies:/data/movies
- ${COMMON_PATH}/qbittorrent/downloads:/data/media_downloads
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
ports:
- 5055:5055
volumes:
- ${COMMON_PATH}/configs/jellyseerr:/app/config
restart: unless-stopped
To launch the installation, simply run :
docker compose -f docker-compose.yaml up -d
Classic installation without VPN
but with NVidia
:
---
version: "3.3"
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- WEBUI_PORT=8080
- PUID=0
- PGID=0
- TZ=${TZ}
- DOCKER_MODS=ghcr.io/gabe565/linuxserver-mod-vuetorrent
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/qbittorrent:/config
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TZ}
ports:
- 8191:8191
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/jackett:/config
ports:
- 9117:9117
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/sonarr:/config
- ${COMMON_PATH}/sonarr/tv:/tv
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/radarr:/config
- ${COMMON_PATH}/radarr/movies:/movies
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
- NVIDIA_VISIBLE_DEVICES=all
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/jellyfin:/config
- ${COMMON_PATH}/jellyfin/cache:/cache
- ${COMMON_PATH}/sonarr/tv:/data/tvshows
- ${COMMON_PATH}/radarr/movies:/data/movies
- ${COMMON_PATH}/qbittorrent/downloads:/data/media_downloads
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
ports:
- 5055:5055
volumes:
- ${COMMON_PATH}/configs/jellyseerr:/app/config
restart: unless-stopped
To launch the installation, simply run :
docker compose -f docker-compose-nvidia.yaml up -d
Classic installation with VPN
but without NVidia
:
---
version: "3.3"
services:
nordvpn:
container_name: GlueTun-VPN
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
ports:
- 8080:8080
- 51420:51420
- 51420:51420/udp
environment:
- VPN_SERVICE_PROVIDER=nordvpn
- OPENVPN_USER=${OPENVPN_USER}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- SERVER_REGIONS=Belgium
- VPN_TYPE=openvpn
restart: always
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
network_mode: service:nordvpn
container_name: qbittorrent
depends_on:
- nordvpn
environment:
- WEBUI_PORT=8080
- PUID=0
- PGID=0
- TZ=${TZ}
- DOCKER_MODS=ghcr.io/gabe565/linuxserver-mod-vuetorrent
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/qbittorrent:/config
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TZ}
ports:
- 8191:8191
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/jackett:/config
ports:
- 9117:9117
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/sonarr:/config
- ${COMMON_PATH}/sonarr/tv:/tv
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/radarr:/config
- ${COMMON_PATH}/radarr/movies:/movies
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
- NVIDIA_VISIBLE_DEVICES=all
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/jellyfin:/config
- ${COMMON_PATH}/jellyfin/cache:/cache
- ${COMMON_PATH}/sonarr/tv:/data/tvshows
- ${COMMON_PATH}/radarr/movies:/data/movies
- ${COMMON_PATH}/qbittorrent/downloads:/data/media_downloads
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
ports:
- 5055:5055
volumes:
- ${COMMON_PATH}/configs/jellyseerr:/app/config
restart: unless-stopped
To launch the installation, simply run :
docker compose -f docker-compose-vpn.yaml up -d
Classic installation with VPN
and NVidia
:
---
version: "3.3"
services:
nordvpn:
container_name: GlueTun-VPN
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
ports:
- 8080:8080
- 51420:51420
- 51420:51420/udp
environment:
- VPN_SERVICE_PROVIDER=nordvpn
- OPENVPN_USER=${OPENVPN_USER}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
- SERVER_REGIONS=Belgium
- VPN_TYPE=openvpn
restart: always
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
network_mode: service:nordvpn
container_name: qbittorrent
depends_on:
- nordvpn
environment:
- WEBUI_PORT=8080
- PUID=0
- PGID=0
- TZ=${TZ}
- DOCKER_MODS=ghcr.io/gabe565/linuxserver-mod-vuetorrent
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/qbittorrent:/config
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TZ}
ports:
- 8191:8191
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}/configs/jackett:/config
ports:
- 9117:9117
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/sonarr:/config
- ${COMMON_PATH}/sonarr/tv:/tv
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/radarr:/config
- ${COMMON_PATH}/radarr/movies:/movies
- ${COMMON_PATH}/qbittorrent/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=0
- PGID=0
- TZ=${TZ}
- NVIDIA_VISIBLE_DEVICES=all
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
volumes:
- ${COMMON_PATH}:${COMMON_PATH}
- ${COMMON_PATH}/configs/jellyfin:/config
- ${COMMON_PATH}/jellyfin/cache:/cache
- ${COMMON_PATH}/sonarr/tv:/data/tvshows
- ${COMMON_PATH}/radarr/movies:/data/movies
- ${COMMON_PATH}/qbittorrent/downloads:/data/media_downloads
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
ports:
- 5055:5055
volumes:
- ${COMMON_PATH}/configs/jellyseerr:/app/config
restart: unless-stopped
To launch the installation, simply run :
docker compose -f docker-compose-nvidia-vpn.yaml up -d
Once the applications are deployed, you can access them using the following addresses :
Gluetun (Nord VPN) will be automatically configured to be used with the 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.
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.