Skip to main content

Command Palette

Search for a command to run...

How to Build a 100% Automated Media Server for Free

Updated
5 min read
H
Flutter Mobile Developer with experience building scalable Android & iOS apps. Skilled in BLoC state management, REST APIs, real-time sockets, and e-commerce/payment integrations, with a focus on clean, maintainable architecture.

Automated Media Stack: Jellyfin, Sonarr, and Prowlarr on Ubuntu

Setting up a home media server doesn't have to be complicated. In this guide, we will deploy a full "Arr" stack using Docker. This setup includes automated downloading, indexing, and a beautiful streaming interface.

🏗️ The Infrastructure

We are using a standard Ubuntu server. This stack includes:

  • Jellyfin: The media server (like your personal Netflix).

  • Sonarr: Automates TV show management.

  • Prowlarr: Manages your indexers and trackers.

  • qBittorrent: The download engine.

  • FlareSolverr & Byparr: Bypasses search blocks (Cloudflare).


1. Initial Server Setup

First, update your system and install Docker if you haven't already.

# Update system
sudo apt update && sudo apt upgrade -y

# Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
sudo apt install docker-compose-plugin -y

2. Create the Directory Structure

Organization is key for Docker volumes to work correctly.

mkdir -p ~/houssam/p7/{media/{downloads,tv,movies},configs}
cd ~/houssam/p7

3. The Docker Compose Configuration

Create the docker-compose.yml file:

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Africa/Casablanca
      - WEBUI_PORT=8080
    volumes:
      - ./qbittorrent-config:/config
      - /home/your_username/houssam/p7/media/downloads:/downloads
    ports:
      - "8080:8080"
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Africa/Casablanca
    volumes:
      - ./sonarr-config:/config
      - /home/your_username/houssam/p7/media/tv:/tv
      - /home/your_username/houssam/p7/media/downloads:/downloads
    ports:
      - "8989:8989"
    restart: unless-stopped

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Africa/Casablanca
    volumes:
      - ./prowlarr-config:/config
    ports:
      - "9696:9696"
    restart: unless-stopped

  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Africa/Casablanca
    volumes:
      - ./jellyfin-config:/config
      - /home/your_username/houssam/p7/media/tv:/data/tvshows
      - /home/your_username/houssam/p7/media/movies:/data/movies
    ports:
      - "8096:8096"
    restart: unless-stopped

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    environment:
      - LOG_LEVEL=info
      - TZ=Africa/Casablanca
    ports:
      - "8191:8191"
    restart: unless-stopped

Deploy the stack:

docker compose up -d

4. Post-Installation Checklist

🗂️ Step 1: qBittorrent

  • URL: http://YOUR_IP:8080

  • Action: Change the default username/password in Settings immediately.

📺 Step 2: Sonarr

  • URL: http://YOUR_IP:8989

  • Setup: Add your root folder as /tv.

  • Connect qBittorrent: Settings → Download Clients → Add qBittorrent.

  • Host: qbittorrent (if using Docker network) or your Server IP.

🔍 Step 3: Prowlarr

  • URL: http://YOUR_IP:9696

  • Connect Sonarr: Settings → Apps → Add Sonarr.

  • Server: http://sonarr:8989

  • API Key: Copy this from Sonarr (Settings → General).

🎬 Step 4: Jellyfin

  • URL: http://YOUR_IP:8096

  • Action: Follow the wizard and point your libraries to /data/tvshows and /data/movies.


📱 Level Up: Control Everything From Your Phone & TV

The best part of this stack is that you don't need to use a browser once it's set up. You can manage downloads and watch movies using dedicated apps.

1. Watch Anywhere: Jellyfin Mobile & Android TV

The official Jellyfin app is your portal to your movie library.

  • Mobile: Available on iOS and Android. Enter your server address: http://YOUR_IP:8096.

  • Android TV: You can install the Jellyfin app directly on your Smart TV, Nvidia Shield, or Chromecast with Google TV for a full cinema experience in your living room.

  • Pro Tip: For iPad or iPhone, try Swiftfin—it’s a native player that is incredibly fast.

2. Manage on the Go: LunaSea or nzb360

These apps allow you to search for a new movie while you're out and have it ready when you get home.

  • LunaSea (iOS/Android): Clean and minimal. Add a "New Profile" for Sonarr using your Server IP and API Key.

  • nzb360 (Android): The power user choice. It supports the entire stack and gives you a beautiful "Coming Soon" calendar.


Extra types :


🔐 Public vs. Private Indexers: Why Quality Matters

When you first set up Prowlarr, you might be tempted to just add every public site you find. However, not all torrents are created equal.

Public Indexers (The "Wild West")

Public sites (like 1337x or The Pirate Bay) are open to everyone.

  • The Problem: Torrents are often old, "dead" (no seeders), or low quality. Because anyone can upload, you also run a higher risk of downloading fake files or broken releases.

  • Speed: Since there is no requirement to "seed" (share) back, many people download and immediately stop sharing, leading to slow speeds.

Private Indexers (The "VIP Club")

Private indexers are closed communities that require an account.

  • The Benefit: These sites have strict rules. Members must maintain a good "ratio" (share as much as they download), which means lightning-fast download speeds and high-quality files that stay alive for years.

  • Quality Control: Files are often verified by the community to ensure they are high-definition and safe.


🎟️ How to Get Into Private Indexers (For Free)

Most private trackers are "Invite Only," but you don't need to pay for them. Here is how you can get in for free:

  1. Monitor "Open Signups": Many great private trackers open their doors for a few hours every month to let new members in.

  2. Use Reddit: Join the r/OpenSignups community. Set up an alert so you get a notification the moment a high-quality private indexer opens its registration.

  3. Interview/Application: Some elite trackers (like MAM or RED) allow you to join by passing a simple "knowledge interview" about how torrenting works.

Integrating with Prowlarr

Once you get an account on a private site, simply go to Prowlarr > Add Indexer, search for the site name, and enter your API Key or Cookie from that site. Prowlarr will then automatically sync that high-quality source to Sonarr.


That’s it! You now have a high-end streaming service that you own and control completely. Happy watching!

1 views