GitHunt
MO

Morzomb/All-jellyfin-media-server

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

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, Bazarr, 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.

Bazarr

Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles based on your requirements. It uses the video files stored by Sonarr and Radarr to search and download subtitles in the language(s) of your choice. Bazarr supports over 60 languages and integrates seamlessly with your existing media management workflow.

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

Move to your home directory, then run the automated installer matching your preferred language. Do NOT run as root; the script will prompt for sudo:

English installer:

wget https://raw.githubusercontent.com/Morzomb/All-jellyfin-media-server/Main/setup.sh -O setup.sh
chmod +x setup.sh
./setup.sh

French installer (alternative):

wget https://raw.githubusercontent.com/Morzomb/All-jellyfin-media-server/Main/setup-fr.sh -O setup-fr.sh
chmod +x setup-fr.sh
./setup-fr.sh

Prerequisites

📋 You will need:

  • Supported OS: Debian 12+, Ubuntu LTS 22.x or 24.x, or Raspbian
  • Hardware: Minimum 4 CPU cores and 8GB RAM (16GB recommended for 4K transcoding)
  • Network: Open TCP ports 8096 (Jellyfin), 5055 (Jellyseerr), 8989 (Sonarr), 7878 (Radarr), 9696 (Prowlarr), 9117 (Jackett), 8080 (qBittorrent)
  • Software: Docker & Docker Compose installed, wget and sudo packages
  • GPU (optional): NVIDIA GPU with drivers installed for hardware transcoding (Offer 3 only)
  • VPN (optional): NordVPN or ProtonVPN account credentials for secure downloads

Setup Script Menu

🔧 The setupfinale-eng.sh (English) and setupfinale.sh (French) installers guide the full setup.

  1. Stateful management - Detects prior installation and offers: Update / Uninstall / Modify / Quit
  2. Stack selection - Choose Offer 1 (Standard), 2 (Secured with VPN), or 3 (Ultimate with NVIDIA)
  3. Additional services - Optionally enable Homepage dashboard and Bazarr
  4. Environment variables - Configure COMMON_PATH, TZ, PUID/PGID, SERVER_IP (or keep existing .env)
  5. VPN configuration (if chosen) - Prompts for NordVPN (OpenVPN) or ProtonVPN (WireGuard) credentials
  6. Preconfiguration - Deploy homepage config and assets when requested
  7. Save & Deploy - Writes installer config, creates directories, and runs docker compose up -d
  8. Post‑install (harvest) - Optional automated API harvest to link Jellyfin, qBittorrent, Radarr, Sonarr, Prowlarr, Bazarr

^ retour au sommaire ^

Adding Custom Services

You can extend Isyrr by adding custom Docker services. Here's how to integrate a new service into the automated setup:

Step 1: Create the Service YAML Template

Create a new YAML file in auto/templates/services/ directory (or auto/templates/vpn/ if it's VPN-related):

cat > auto/templates/services/myservice.yml << 'EOF'
services:
  myservice:
    image: myimage:latest
    container_name: myservice
    environment:
      - PUID=0
      - PGID=0
      - TZ=${TZ}
    ports:
      - 9999:9999
    volumes:
      - ${COMMON_PATH}/configs/myservice:/config
      - ${COMMON_PATH}:/data
    restart: unless-stopped
EOF

Step 2: Add Service Configuration to setup.sh

In the 2.5 ADDITIONAL SERVICES section of setup.sh and setup-fr.sh, add your service prompt:

echo -e "${BOLD}MyService:${NC}"
echo -e "  Custom service description"
echo -e "  Features and benefits"
echo ""
while true; do
    read -p "Install MyService ? (y/n): " myservice_choice
    case $myservice_choice in
        [yY]*) INSTALL_MYSERVICE=true; show_success "MyService enabled"; break ;;
        [nN]*) INSTALL_MYSERVICE=false; show_warn "MyService disabled"; break ;;
        *) show_error "Answer y or n" ;;
    esac
done

Step 3: Update docker-compose Generation

In the generate_docker_command() function, add:

if [ "$INSTALL_MYSERVICE" == "true" ]; then
    curl -sL "$REPO_BASE/templates/services/myservice.yml" -o "$COMPOSE_DL_DIR/myservice.yml"
    CMD_ARGS="$CMD_ARGS -f $COMPOSE_DL_DIR/myservice.yml"
fi

Step 4: Create Configuration Folder

In the directories creation section, add:

[ "$INSTALL_MYSERVICE" == "true" ] && mkdir -p "$CURRENT_PATH/configs/myservice"

Step 5: Save Configuration State

Update the .isyrr_config save section to include your service:

cat > "$CONFIG_FILE" <<EOF
PACK_TYPE="$PACK_TYPE"
VPN_PROVIDER="$VPN_PROVIDER"
INSTALL_HOMEPAGE="$INSTALL_HOMEPAGE"
INSTALL_BAZARR="$INSTALL_BAZARR"
INSTALL_MYSERVICE="$INSTALL_MYSERVICE"
EOF

Step 6: Add Post-Install Configuration (Optional)

If your service needs API key extraction or configuration, add it in the post-installation section:

if [[ "$INSTALL_MYSERVICE" == "true" ]]; then
    box_section "MyService Configuration"
    
    MYSERVICE_CONFIG="$DATA_PATH/configs/myservice/config.json"
    
    if [ -f "$MYSERVICE_CONFIG" ]; then
        MYSERVICE_KEY=$(grep 'apikey:' "$MYSERVICE_CONFIG" | awk '{print $2}')
    fi
    
    if [ -z "$MYSERVICE_KEY" ]; then
        echo -e "    ${RED}[-]${NC} MyService API Key not found"
    else
        echo -e "    ${GREEN}[+]${NC} MyService API Key: ${YELLOW}${MYSERVICE_KEY:0:8}...${NC}"
    fi
fi

Step 7: Add to All Docker Compose Files

For consistency, add your service definition to all compose_files/docker-compose*.yaml files so it can be used in manual installations:

  myservice:
    image: myimage:latest
    container_name: myservice
    environment:
      - PUID=0
      - PGID=0
      - TZ=${TZ}
    ports:
      - 9999:9999
    volumes:
      - ${COMMON_PATH}/configs/myservice:/config
      - ${COMMON_PATH}:/data
    restart: unless-stopped

Step 8: Update README Documentation

Add service information in the main README:

### **MyService**

[MyService](https://example.com) is a service that does X, Y, and Z. Description...

<div style="text-align: center">
    <img src="url-to-logo" width="200" height="100" style="margin: 15px 10px;">
</div>

Step 9: Test the Integration

  1. Test the setup script with your new service
  2. Verify Docker Compose files are valid: docker-compose config
  3. Verify API key extraction works correctly
  4. Check service connectivity after deployment

^ retour au sommaire ^


Manual Installation

Alternatively, you can clone and manage the repository manually:

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

Go to the file here

4. Installation with VPN (no-Nvidia)

Warning

If you use this method, fill in the .env file located in compose_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

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

  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.

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 the radarr directory. Then, simply delete qBittorrent from Radarr and re-add it - you should see the error disappear.

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.

Note: if entering qbittorrent as the Host does not work, try entering the IP address instead (ex: 192.168.x.x)

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 ^


Bazarr

Initial Setup

  1. Open the WebUI by navigating to http://localhost:6767 (or replace localhost with your server's IP address).
  2. The setup wizard will guide you through the initial configuration:
    • Language: Select your preferred language and click Next.
    • Authentication: Configure authentication if desired (optional for local access).
    • General Settings: Configure your general preferences.
  3. Click Next and then Save.

Note

Path Configuration: Since you're using the provided Docker Compose files, all directory paths and volume mappings are already configured correctly. Bazarr will automatically detect your Sonarr and Radarr libraries without needing manual path configuration.

Configure Sonarr Integration

  1. Go to Settings > Sonarr.
  2. Click Add and fill in the following information:
    • Name: Sonarr
    • Enabled: Check this box
    • Address: http://sonarr
    • Port: 8989
    • Base URL: Leave empty
    • API Key: Find the API key in the Sonarr interface under Settings > General > API Key.
    • Minimum Score: Set according to your preference (recommended: 70-80)
  3. Click Test to verify the connection.
  4. Click OK to save.

Configure Radarr Integration

  1. Go to Settings > Radarr.
  2. Click Add and fill in the following information:
    • Name: Radarr
    • Enabled: Check this box
    • Address: http://radarr
    • Port: 7878
    • Base URL: Leave empty
    • API Key: Find the API key in the Radarr interface under Settings > General > API Key.
    • Minimum Score: Set according to your preference (recommended: 70-80)
  3. Click Test to verify the connection.
  4. Click OK to save.

Configure Subtitle Providers

  1. Go to Settings > Providers.
  2. Add your preferred subtitle providers by clicking Add and selecting from available providers. Based on community recommendations, here are the most effective providers:

Recommended Free Providers (No Account Required):

  • TVSubtitles: Excellent for TV shows, no registration needed
  • YIFYSubtitles: Great for movies, no registration needed
  • SuperSubtitles: Good general provider, no registration needed
  • EmbeddedSubtitles: Extracts subtitles from video files
  • AnimeTosho: Specialized for anime content

Recommended Providers (Free Account Required):

  • OpenSubtitles.com: Free account required, much better than the old .org version
  • Addic7ed: Free account required, excellent for TV shows

Important

Note about OpenSubtitles: The old opensubtitles.org now requires a VIP subscription and is no longer recommended for free users. Use opensubtitles.com instead, which offers free accounts with good download limits.

  1. For providers requiring authentication:
    • OpenSubtitles.com: Register at opensubtitles.com and use your username/password
    • Addic7ed: Register at addic7ed.com and use your username/password
  2. Configure each provider according to your preferences and authentication requirements.
  3. Click Save.

Tip

Many users report achieving 99% subtitle coverage for movies and 90% for TV episodes using this combination of providers.
Provider recommendations based on community feedback from r/bazarr

Configure Languages

  1. Go to Settings > Languages.
  2. Select your preferred languages for subtitles:
    • Languages Filter: Add the languages you want subtitles for
    • Default Enabled: Check the box for languages you want enabled by default
    • Series: Configure language preferences for TV series
    • Movies: Configure language preferences for movies
  3. Click Save.

Configure Subtitles

  1. Go to Settings > Subtitles.
  2. Configure your subtitle preferences:
    • Download: Set when to search for subtitles (recommended: Manually and when subtitles are wanted)
    • Subtitle Folder: Configure how subtitles should be stored (recommended: Alongside media file)
    • Upgrade Subtitles: Enable if you want Bazarr to replace existing subtitles with better ones
  3. Click Save.

Once configured, Bazarr will automatically monitor your Sonarr and Radarr libraries and download subtitles based on your configured preferences.

^ 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.

Languages

Shell100.0%

Contributors

MIT License
Created March 31, 2024
Updated March 13, 2026