Skip to content

sumitodenaranja/docker-jellyfin-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🐳docker-jellyfin-stack

This repository contains a docker-compose configuration for a fully automated home media server. It integrates media management, downloading, streaming, and system monitoring into a unified stack.

Requirements

  • Linux (Ubuntu, Debian, or Alpine) is recommended for lowest overhead
  • Docker: Engine v20.10 or newer.
  • Docker Compose: v2.0 or newer.

*In my case i am currently running this entire stack on my Raspberry Pi 5 (8GB RAM)

📂 Directory Structure & Architecture

To ensure optimal performance and avoid storage duplication, this project relies on a specific folder hierarchy.

Run the following command to generate the required directory tree:

mkdir -p data/{media/{movies,series},torrents}
├── data
    ├── media
    │   ├── movies
    │   └── series
    └── torrents

⚠️ Important: Before installing dependencies or running the application, you must configure your environment variables.

Locate the .env.example file in the root directory. Create a copy of this file and rename it to .env.

cp .env.example .env

Open the new .env file and fill in the required values (API keys, database credentials, specific ports, etc.).

🛠️ Installation & Usage

Run the following command in your terminal inside the project folder:

docker compose up -d

Once started, you can access the services

Service Port URL (Example) Description
qBittorrent 8080 http://<your-ip>:8080 Torrent Downloader
Radarr 7878 http://<your-ip>:7878 Movie Management
Sonarr 8989 http://<your-ip>:8989 TV Series Management
Prowlarr 9696 http://<your-ip>:9696 Indexer/Tracker Proxy
Unpackerr Extracts Radarr/Sonarr downloads
Jellyfin 8096 http://<your-ip>:8096 Media Server & Streaming
Homepage 3000 http://<your-ip>:3000 Main Dashboard
Glances 61208 http://<your-ip>:61208 System Monitoring

🌍 qBittorrent

On the very first startup, qBittorrent generates a random temporary password. You need to check the container logs to find it.

docker compose logs qbittorrent

Once you have logged in with the temporary password found in the logs:

Go to Tools > Options > Web UI
Under the Authentication section, enter your desired Username and Password.

Configure Download Location

Go to Tools > Options > Downloads
Set the Default Save Path to: /data/torrents

Scroll down and click Save.

🦜 Arr Config

Radarr/Sonnar

The setup for both is nearly identical.
Go to Settings > Media Management.
Click "Add Root Folder" browse to /data/media/movies (for Radarr) and /data/media/series (for Sonarr).

Download Client:
Go to Settings > Download Clients > Select qBittorrent

  • Host: your ip address
  • Port: 8080.
  • Username/Password: Use the credentials you set in qBittorrent.
  • Test and Save.

Prowlarr

This connects your torrent trackers to Sonarr and Radarr.

Add Indexers: Go to Indexers and search the trackers you wanna add

Connect Apps: Go to Settings > Apps > +

Radarr:

Sonarr:

Click "Test" and "Save". This will automatically sync your indexers.

Unpackerr

Unpackerr is responsible for automatically extracting compressed files (.zip, .rar, .7zip...) downloaded by qBitorrent so Radarr and Sonarr can import them.
To make Unpackerr work, you must link it with Radarr and Sonarr using your API Keys.

Open your .env file and add your keys from the web settings (Settings > General) of each app:

RADARR_API_KEY= your_key_here  
SONARR_API_KEY= your_key_here

After saving the file, you must run the following command to refresh the configuration:

docker compose up -d

To check if Unpackerr is working and connected to Radarr/Sonarr run:

docker compose logs unpackerr

It should look something like this:

[Radarr] Updated (http://radarr:7878): 0 Items Queued, 0 Retrieved
[Sonarr] Updated (http://sonarr:8989): 0 Items Queued, 0 Retrieved

🪼 Jellyfin

Follow the instructions in the initial setup.

Add Media Libraries:
Movies: Content type "Movies". Folder: /data/media/movies.
Series: Content type "Series". Folder: /data/media/series.

Check out ElegantFin by lscambo13 for a more modern look, it's personally my favorite.

🛖 Homepage

Homepage service provides a clean UI to access all your tools. To customize it, edit the files in ${CONFIG_DIR}/homepage_config. It is pre-configured to communicate with the Docker socket to show container status.

There are many configuration options available to customize your dashboard. For the best results and correct setup, it is highly recommended to follow the official Homepage documentation.

About

A Docker Compose stack for an automated media server featuring Jellyfin, the Arr suite (Radarr, Sonarr, Prowlarr), qBittorrent, and system monitoring tools.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages