Files
EZ-Homelab/docs/service-docs/prowlarr.md
kelinfoxy cba45556c7 Complete documentation refactoring with 57 service docs
- Refactored README.md, getting-started.md, quick-reference.md
- Enhanced setup-homelab.sh with 9-step automated process
- Created services-overview.md with all stacks
- Added comprehensive documentation for 57 services in docs/service-docs/
- All services include: overview, configuration, resources, educational content
- Coverage: Core, Infrastructure, Dashboards, Media, Media-Extended, Home Assistant, Productivity, Utilities, Monitoring, Development stacks
- Educational focus with links to tutorials, videos, and guides
2026-01-12 18:03:12 -05:00

17 KiB

Prowlarr - Indexer Manager

Table of Contents

Overview

Category: Indexer Management
Docker Image: linuxserver/prowlarr
Default Stack: media.yml
Web UI: https://prowlarr.${DOMAIN} or http://SERVER_IP:9696
Authentication: Optional (configurable)
Ports: 9696

What is Prowlarr?

Prowlarr is an indexer manager and proxy for Sonarr, Radarr, Readarr, and Lidarr. Instead of configuring indexers (torrent/usenet sources) separately in each *arr app, Prowlarr manages them centrally and syncs automatically. It's the "one indexer to rule them all" for your media automation stack.

Key Features

  • Centralized Indexer Management: Configure once, use everywhere
  • Automatic Sync: Pushes indexers to all *arr apps
  • Built-in Indexers: 500+ indexers included
  • Custom Indexers: Add any indexer via definitions
  • Search Aggregation: Search across all indexers at once
  • Stats & History: Track indexer performance
  • App Sync: Connects with Sonarr, Radarr, Readarr, Lidarr
  • FlareSolverr Integration: Bypass Cloudflare protection
  • Download Client Support: Direct downloads (optional)
  • Notification Support: Discord, Telegram, etc.

Why Use Prowlarr?

  1. DRY Principle: Configure indexers once, not in every app
  2. Centralized Management: Single source of truth
  3. Automatic Sync: Updates push to all connected apps
  4. Performance Monitoring: See which indexers work best
  5. Easier Maintenance: Update indexer settings in one place
  6. Search Aggregation: Test searches across all indexers
  7. FlareSolverr Support: Bypass protections automatically
  8. History Tracking: Monitor what's being searched
  9. App Integration: Seamless *arr stack integration
  10. Free & Open Source: Part of the Servarr family

How It Works

Prowlarr (Central Hub)
       ↓
Manages 500+ Indexers
(1337x, RARBG, YTS, etc.)
       ↓
Automatically Syncs To:
- Sonarr (TV)
- Radarr (Movies)
- Readarr (Books)
- Lidarr (Music)
       ↓
*arr Apps Search via Prowlarr
       ↓
Prowlarr Queries All Indexers
       ↓
Returns Aggregated Results
       ↓
*arr Apps Download Best Match

The Problem Prowlarr Solves

Before Prowlarr:

  • Configure indexers in Sonarr
  • Configure same indexers in Radarr
  • Configure same indexers in Readarr
  • Configure same indexers in Lidarr
  • Update indexer? Change in 4 places!

With Prowlarr:

  • Configure indexers once in Prowlarr
  • Auto-sync to all apps
  • Update once, updates everywhere
  • Centralized statistics and management

Configuration in AI-Homelab

Directory Structure

/opt/stacks/media/prowlarr/config/    # Prowlarr configuration

Environment Variables

# User permissions
PUID=1000
PGID=1000

# Timezone
TZ=America/New_York

Official Resources

Educational Resources

Videos

Articles & Guides

Concepts to Learn

  • Indexers: Sources for torrents/usenet (1337x, RARBG, etc.)
  • Trackers: BitTorrent indexers
  • Usenet: Alternative to torrents (requires subscription)
  • Public vs Private: Indexer access types
  • API Keys: Authentication between services
  • FlareSolverr: Cloudflare bypass proxy
  • Categories: Media type classifications
  • Sync Profiles: What syncs to which app

Docker Configuration

Complete Service Definition

prowlarr:
  image: linuxserver/prowlarr:latest
  container_name: prowlarr
  restart: unless-stopped
  networks:
    - traefik-network
  ports:
    - "9696:9696"
  environment:
    - PUID=1000
    - PGID=1000
    - TZ=America/New_York
  volumes:
    - /opt/stacks/media/prowlarr/config:/config
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.prowlarr.rule=Host(`prowlarr.${DOMAIN}`)"
    - "traefik.http.routers.prowlarr.entrypoints=websecure"
    - "traefik.http.routers.prowlarr.tls.certresolver=letsencrypt"
    - "traefik.http.routers.prowlarr.middlewares=authelia@docker"
    - "traefik.http.services.prowlarr.loadbalancer.server.port=9696"

With FlareSolverr (for Cloudflare bypass)

prowlarr:
  image: linuxserver/prowlarr:latest
  container_name: prowlarr
  # ... (same as above)
  depends_on:
    - flaresolverr

flaresolverr:
  image: ghcr.io/flaresolverr/flaresolverr:latest
  container_name: flaresolverr
  restart: unless-stopped
  networks:
    - traefik-network
  ports:
    - "8191:8191"
  environment:
    - LOG_LEVEL=info

Initial Setup

First Access

  1. Start Container:

    docker compose up -d prowlarr
    
  2. Access Web UI:

    • Local: http://SERVER_IP:9696
    • Domain: https://prowlarr.yourdomain.com
  3. Initial Configuration:

    • Settings → Apps (connect *arr apps)
    • Indexers → Add Indexers
    • Settings → General (authentication)

Connecting *arr Applications

Settings → Apps → Add Application:

Add Sonarr

  1. Name: Sonarr
  2. Sync Level: Add and Remove Only (recommended)
  3. Prowlarr Server: http://prowlarr:9696
  4. Sonarr Server: http://sonarr:8989
  5. API Key: From Sonarr → Settings → General → API Key
  6. Sync Categories: TV/SD, TV/HD, TV/UHD
  7. Test → Save

Add Radarr

  1. Name: Radarr
  2. Sync Level: Add and Remove Only
  3. Prowlarr Server: http://prowlarr:9696
  4. Radarr Server: http://radarr:7878
  5. API Key: From Radarr → Settings → General → API Key
  6. Sync Categories: Movies/SD, Movies/HD, Movies/UHD
  7. Test → Save

Add Readarr (if using)

  1. Name: Readarr
  2. Server: http://readarr:8787
  3. API Key: From Readarr
  4. Categories: Books/Ebook, Books/Audiobook

Add Lidarr (if using)

  1. Name: Lidarr
  2. Server: http://lidarr:8686
  3. API Key: From Lidarr
  4. Categories: Audio/MP3, Audio/Lossless

Adding Indexers

Indexers → Add Indexer:

1337x:

  1. Search: "1337x"
  2. Select: 1337x
  3. Base URL: (default)
  4. API Key: (none for public)
  5. Categories: Select relevant
  6. Test → Save

YTS:

  1. Search: "YTS"
  2. Select: YTS
  3. Configure categories
  4. Test → Save

EZTV:

  1. Search: "EZTV"
  2. Select: EZTV (TV shows)
  3. Configure
  4. Test → Save

Common Public Indexers:

  • 1337x (General)
  • YTS (Movies, small file sizes)
  • EZTV (TV Shows)
  • RARBG (if still available)
  • The Pirate Bay
  • Nyaa (Anime)
  • LimeTorrents

Private Trackers

Requires Account:

  1. Register on tracker website
  2. Get API key or credentials
  3. Add in Prowlarr with credentials
  4. Test → Save

Popular Private Trackers:

  • BroadcastHe.Net (TV)
  • PassThePopcorn (Movies)
  • IPTorrents (General)
  • TorrentLeech (General)

Usenet Indexers

Requires Usenet Provider:

  1. Subscribe to usenet provider (Newshosting, etc.)
  2. Subscribe to indexer (NZBGeek, etc.)
  3. Add indexer with API key
  4. Configure download client (SABnzbd, NZBGet)

Auto-Sync Verification

After adding indexers:

  1. Check Sonarr:

    • Settings → Indexers
    • Should see all indexers from Prowlarr
    • Each with "(Prowlarr)" suffix
  2. Check Radarr:

    • Settings → Indexers
    • Should see same indexers
    • Auto-synced from Prowlarr
  3. Test Search:

    • Sonarr → Add Series → Search
    • Should find results from all indexers

Advanced Topics

FlareSolverr Integration

Some indexers use Cloudflare protection. FlareSolverr bypasses this.

Setup:

  1. Add FlareSolverr Container:

    flaresolverr:
      image: ghcr.io/flaresolverr/flaresolverr:latest
      container_name: flaresolverr
      restart: unless-stopped
      ports:
        - "8191:8191"
      environment:
        - LOG_LEVEL=info
    
  2. Configure in Prowlarr:

    • Settings → Indexers → Scroll down
    • FlareSolverr Host: http://flaresolverr:8191
    • Test
  3. Tag Indexers:

    • Edit indexer
    • Tags → Add "flaresolverr"
    • Indexers with tag will use FlareSolverr

When to Use:

  • Indexer returns Cloudflare errors
  • "Access Denied" or "Checking your browser"
  • DDoS protection pages

Sync Profiles

Settings → Apps → Sync Profiles:

Control what syncs where:

Standard Profile:

  • Sync categories: All
  • Minimum seeders: 1
  • Enable RSS: Yes
  • Enable Automatic Search: Yes
  • Enable Interactive Search: Yes

Custom Profiles:

  • Create profiles for different apps
  • Example: 4K-only profile for Radarr-4K

Indexer Categories

Important for Proper Sync:

  • Movies: Movies/HD, Movies/UHD, Movies/SD
  • TV: TV/HD, TV/UHD, TV/SD
  • Music: Audio/MP3, Audio/Lossless
  • Books: Books/Ebook, Books/Audiobook
  • Anime: TV/Anime, Movies/Anime

Ensure Correct Categories:

  • Indexer must have correct categories
  • Apps filter by category
  • Mismatched categories = no results

Statistics & History

System → Status:

  • Indexer response times
  • Success rates
  • Error counts

History:

  • View all searches
  • Track performance
  • Debug issues

Indexer Stats:

  • Indexers → View stats column
  • Grab count
  • Query count
  • Failure rate

Custom Indexer Definitions

Add Unlisted Indexers:

  1. Find Indexer Definition:

    • Prowlarr GitHub → Definitions
    • Or community-submitted
  2. Add Definition File:

    • Copy YAML definition
    • Place in /config/Definitions/Custom/
    • Restart Prowlarr
  3. Add Indexer:

    • Should appear in list
    • Configure as normal

Download Clients (Optional)

Prowlarr can send directly to download clients:

Settings → Download Clients → Add:

Example: qBittorrent

  • Host: gluetun (if via VPN)
  • Port: 8080
  • Category: prowlarr-manual

Use Case:

  • Manual downloads from Prowlarr
  • Not needed for *arr apps (they have own clients)

Notifications

Settings → Connect:

Get notified about:

  • Indexer health issues
  • Grab events
  • Application updates

Popular Notifications:

  • Discord
  • Telegram
  • Pushover
  • Email
  • Custom webhook

Troubleshooting

Prowlarr Not Accessible

# Check container status
docker ps | grep prowlarr

# View logs
docker logs prowlarr

# Test access
curl http://localhost:9696

# Check network
docker network inspect traefik-network

Indexers Not Syncing to Apps

# Check app connection
# Settings → Apps → Test

# Check API keys match
# Prowlarr API key vs app's API key

# Check network connectivity
docker exec prowlarr ping -c 3 sonarr
docker exec prowlarr ping -c 3 radarr

# Force sync
# Settings → Apps → Select app → Sync App Indexers

# View logs
docker logs prowlarr | grep -i sync

Indexer Failing

# Test indexer
# Indexers → Select indexer → Test

# Common issues:
# - Indexer down
# - Cloudflare protection (need FlareSolverr)
# - IP banned (too many requests)
# - API key invalid

# Check indexer status
# Visit indexer website directly

# Enable FlareSolverr if Cloudflare error

FlareSolverr Not Working

# Check FlareSolverr status
docker logs flaresolverr

# Test FlareSolverr
curl http://localhost:8191/health

# Ensure Prowlarr can reach FlareSolverr
docker exec prowlarr curl http://flaresolverr:8191/health

# Verify indexer tagged
# Indexer → Edit → Tags → flaresolverr

# Check FlareSolverr logs during indexer test
docker logs -f flaresolverr

No Search Results

# Check indexers enabled
# Indexers → Ensure not disabled

# Test indexers
# Indexers → Test All

# Check categories
# Indexer categories must match app needs

# Manual search
# Prowlarr → Search → Test query
# Should return results

# Check app logs
docker logs sonarr | grep prowlarr
docker logs radarr | grep prowlarr

Database Corruption

# Stop Prowlarr
docker stop prowlarr

# Backup database
cp /opt/stacks/media/prowlarr/config/prowlarr.db /opt/backups/

# Check integrity
sqlite3 /opt/stacks/media/prowlarr/config/prowlarr.db "PRAGMA integrity_check;"

# If corrupted, restore or rebuild
# rm /opt/stacks/media/prowlarr/config/prowlarr.db

docker start prowlarr
# Prowlarr will recreate database (need to reconfigure)

Performance Optimization

Rate Limiting

Settings → Indexers → Options:

  • Indexer download limit: 60 per day (per indexer)
  • Prevents IP bans
  • Adjust based on indexer limits

Query Limits

Per Indexer:

  • Edit indexer → Query Limit
  • Requests per day
  • Prevents abuse

Caching

Prowlarr caches results:

  • Reduces duplicate queries
  • Improves response time
  • Automatic management

Database Maintenance

# Stop Prowlarr
docker stop prowlarr

# Vacuum database
sqlite3 /opt/stacks/media/prowlarr/config/prowlarr.db "VACUUM;"

# Restart
docker start prowlarr

Security Best Practices

  1. Enable Authentication:

    • Settings → General → Security
    • Authentication: Required
    • Username and password
  2. API Key Security:

    • Keep API keys secret
    • Regenerate if compromised
    • Settings → General → API Key
  3. Use Reverse Proxy:

    • Traefik + Authelia
    • Don't expose 9696 publicly
  4. Indexer Credentials:

    • Secure storage
    • Use API keys over passwords
    • Rotate periodically
  5. Monitor Access:

    • Check history for unusual activity
    • Review indexer stats
  6. VPN for Public Trackers:

    • While Prowlarr doesn't download
    • Apps behind VPN still benefit
  7. Regular Updates:

    • Keep Prowlarr current
    • Check release notes

Backup Strategy

Critical Files:

/opt/stacks/media/prowlarr/config/prowlarr.db    # Database
/opt/stacks/media/prowlarr/config/config.xml     # Settings
/opt/stacks/media/prowlarr/config/Backup/        # Auto backups

Backup Script:

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/opt/backups/prowlarr

# Backup database
cp /opt/stacks/media/prowlarr/config/prowlarr.db $BACKUP_DIR/prowlarr-$DATE.db

# Keep last 7 days
find $BACKUP_DIR -name "prowlarr-*.db" -mtime +7 -delete

Restore:

docker stop prowlarr
cp /opt/backups/prowlarr/prowlarr-20240101.db /opt/stacks/media/prowlarr/config/prowlarr.db
docker start prowlarr

Integration with Other Services

Prowlarr + Sonarr + Radarr

  • Central indexer management
  • Auto-sync to all apps
  • Single configuration point

Prowlarr + FlareSolverr

  • Bypass Cloudflare protection
  • Access protected indexers
  • Automatic proxy usage

Prowlarr + VPN

  • Prowlarr itself doesn't need VPN
  • Download clients (qBittorrent) need VPN
  • Indexer searches are legal

Summary

Prowlarr is the essential indexer manager for *arr stacks offering:

  • Centralized indexer management
  • Automatic sync to all *arr apps
  • 500+ built-in indexers
  • FlareSolverr integration
  • Performance statistics
  • History tracking
  • Free and open-source

Perfect for:

  • *arr stack users
  • Multiple *arr applications
  • Centralized management needs
  • Indexer performance monitoring
  • Simplified configuration

Key Benefits:

  • Configure once, use everywhere
  • Automatic sync to apps
  • Single source of truth
  • Easy maintenance
  • Performance monitoring
  • Cloudflare bypass support

Remember:

  • Add Prowlarr first, then apps
  • Apps auto-receive indexers
  • Use FlareSolverr for Cloudflare
  • Monitor indexer health
  • Respect indexer rate limits
  • Keep API keys secure
  • Regular backups essential

Essential Stack:

Prowlarr (Indexer Manager)
    ↓
Sonarr (TV) + Radarr (Movies)
    ↓
qBittorrent (via Gluetun VPN)
    ↓
Plex/Jellyfin (Media Server)

Prowlarr is the glue that makes the *arr stack work seamlessly!