Skip to content

memetics19/Homelab-ARR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Homelab ARR Stack Setup

A comprehensive Docker Compose-based media automation stack using the ARR (Automatic Ripping and Release) suite for automated media acquisition, management, and streaming.

Overview

This homelab setup provides a complete media automation pipeline that automatically searches, downloads, organizes, and serves your media library. The stack integrates multiple services to create a seamless experience from content discovery to playback.

Architecture

The stack consists of the following services working together:

Core Services

  • Jellyfin - Media server for streaming and organizing your media library
  • Radarr - Automated movie collection manager
  • Sonarr - Automated TV series collection manager
  • qBittorrent - BitTorrent client for downloading content

Indexer & Automation Services

  • Prowlarr - Indexer manager that syncs with Radarr and Sonarr
  • Jackett - Alternative indexer proxy with FlareSolverr integration
  • Dispatcharr - Automation tool that coordinates between Radarr and Sonarr
  • FlareSolverr - Cloudflare bypass service for protected indexers
  • Privoxy - HTTP proxy for additional privacy and routing

Service Details

Jellyfin

  • Port: 8096
  • Access: https://ragnarok.shreeda.xyz/
  • Purpose: Media server for streaming movies and TV shows
  • Hardware Acceleration: GPU passthrough enabled via /dev/dri

Radarr

  • Port: 7878
  • Purpose: Manages movie collection, monitors for new releases, and automates downloads
  • Integration: Connected to qBittorrent and Prowlarr

Sonarr

  • Port: 8989
  • Purpose: Manages TV series collection, monitors for new episodes, and automates downloads
  • Integration: Connected to qBittorrent and Prowlarr

qBittorrent

  • Ports: 8080 (Web UI), 6881 (BitTorrent)
  • Purpose: Handles all torrent downloads for movies and TV shows
  • Integration: Used by Radarr and Sonarr for downloading content

Prowlarr

  • Port: 9696
  • Purpose: Centralized indexer management that syncs with Radarr and Sonarr
  • Features: Automatically syncs indexers across all ARR applications

Jackett

  • Port: 9117
  • Purpose: Alternative indexer proxy with support for multiple tracker sites
  • Features: Auto-update enabled, integrated with FlareSolverr for Cloudflare protection

Dispatcharr

  • Port: 9191
  • Purpose: Automation coordinator that manages workflows between Radarr and Sonarr
  • Dependencies: Requires Radarr, Sonarr, and Prowlarr to be running

FlareSolverr

  • Port: 8191
  • Purpose: Bypasses Cloudflare protection for indexers that require it
  • Health Check: Configured with automatic health monitoring

Privoxy

  • Port: 8118
  • Purpose: HTTP proxy for additional privacy and network routing
  • Health Check: Configured with automatic health monitoring

Monitoring & Status

Prerequisites

  • Docker and Docker Compose installed
  • User ID 1000 and Group ID 1000 (adjust in compose file if different)
  • Media directories mounted at:
    • /home/ubuntu/media/movies - For movie storage
    • /home/ubuntu/media/tv - For TV show storage
    • /home/ubuntu/media/downloads - For download staging
  • GPU device at /dev/dri (for Jellyfin hardware acceleration)

Quick Start

  1. Clone or download this repository

  2. Create required directories:

mkdir -p jellyfin/{config,cache}
mkdir -p qbittorrent/config
mkdir -p prowlarr/config
mkdir -p jackett/config
mkdir -p dispatcharr/config
mkdir -p radarr/config
mkdir -p sonarr/config
  1. Set proper permissions (if needed):
sudo chown -R 1000:1000 jellyfin qbittorrent prowlarr jackett dispatcharr radarr sonarr
  1. Start all services:
docker-compose up -d
  1. Access services:
    • Jellyfin: http://localhost:8096
    • Radarr: http://localhost:7878
    • Sonarr: http://localhost:8989
    • qBittorrent: http://localhost:8080
    • Prowlarr: http://localhost:9696
    • Jackett: http://localhost:9117
    • Dispatcharr: http://localhost:9191

Configuration Workflow

Initial Setup

  1. Configure Prowlarr:

    • Add indexers (public/private trackers)
    • Configure download clients (qBittorrent)
    • Sync to Radarr and Sonarr
  2. Configure Radarr:

    • Add root folder: /movies
    • Configure download client (qBittorrent)
    • Add quality profiles
    • Connect to Prowlarr
  3. Configure Sonarr:

    • Add root folder: /tv
    • Configure download client (qBittorrent)
    • Add quality profiles
    • Connect to Prowlarr
  4. Configure qBittorrent:

    • Set default download location: /downloads
    • Configure categories for Radarr and Sonarr
    • Set up port forwarding if needed
  5. Configure Dispatcharr:

    • Connect to Radarr and Sonarr instances
    • Set up automation rules
  6. Configure Jellyfin:

    • Add media libraries pointing to /media/movies and /media/tv
    • Set up users and permissions
    • Configure transcoding settings

Optional: Jackett Setup

If using Jackett as an alternative to Prowlarr:

  • Configure FlareSolverr endpoint in Jackett settings
  • Add indexers in Jackett
  • Configure Jackett API in Radarr/Sonarr if needed

Service Dependencies

Jellyfin (standalone)
  ↓
qBittorrent ← Radarr ← Prowlarr
              ↓         ↑
            Sonarr ─────┘
              ↓
         Dispatcharr
              ↓
         Jackett → FlareSolverr

Volume Structure

.
├── docker-compose.yaml
├── jellyfin/
│   ├── config/
│   └── cache/
├── qbittorrent/
│   └── config/
├── prowlarr/
│   └── config/
├── jackett/
│   └── config/
├── dispatcharr/
│   └── config/
├── radarr/
│   └── config/
└── sonarr/
    └── config/

Environment Variables

All services use:

  • TZ=Asia/Kolkata - Timezone configuration
  • PUID=1000 / PGID=1000 - User/Group IDs for file permissions (LinuxServer.io images)

Maintenance

Updating Services

docker-compose pull
docker-compose up -d

Viewing Logs

# All services
docker-compose logs -f

# Specific service
docker-compose logs -f jellyfin

Stopping Services

docker-compose down

Restarting a Service

docker-compose restart <service-name>

Security Considerations

  • Services are exposed on localhost by default
  • For external access, consider using a reverse proxy (e.g., Nginx, Traefik)
  • Ensure proper firewall rules are configured
  • Use strong passwords for all service web interfaces
  • Regularly update Docker images for security patches

Troubleshooting

Permission Issues

  • Ensure user ID 1000 has access to media directories
  • Check volume mount permissions

Service Not Starting

  • Check logs: docker-compose logs <service-name>
  • Verify dependencies are running (check depends_on in compose file)
  • Ensure ports are not already in use

Download Issues

  • Verify qBittorrent is accessible from Radarr/Sonarr
  • Check indexer connectivity in Prowlarr
  • Verify FlareSolverr is running if using Cloudflare-protected indexers

License

This setup uses various open-source projects. Please refer to individual project licenses:

  • Jellyfin: GPL-2.0
  • Radarr: GPL-3.0
  • Sonarr: GPL-3.0
  • qBittorrent: GPL-2.0
  • Prowlarr: GPL-3.0
  • Jackett: GPL-2.0
  • Dispatcharr: GPL-3.0
  • FlareSolverr: MIT
  • Privoxy: GPL-2.0

Contributing

This is a personal homelab setup. Feel free to fork and adapt for your own use.

Acknowledgments

  • All the developers and maintainers of the ARR suite
  • LinuxServer.io for excellent Docker images
  • The open-source community for these amazing tools

About

All ARR Stack which runs on my homelab

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published