- 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
17 KiB
Prowlarr - Indexer Manager
Table of Contents
- Overview
- What is Prowlarr?
- Why Use Prowlarr?
- How It Works
- Configuration in AI-Homelab
- Official Resources
- Educational Resources
- Docker Configuration
- Initial Setup
- Advanced Topics
- Troubleshooting
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?
- DRY Principle: Configure indexers once, not in every app
- Centralized Management: Single source of truth
- Automatic Sync: Updates push to all connected apps
- Performance Monitoring: See which indexers work best
- Easier Maintenance: Update indexer settings in one place
- Search Aggregation: Test searches across all indexers
- FlareSolverr Support: Bypass protections automatically
- History Tracking: Monitor what's being searched
- App Integration: Seamless *arr stack integration
- 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
- Website: https://prowlarr.com
- Wiki: https://wiki.servarr.com/prowlarr
- GitHub: https://github.com/Prowlarr/Prowlarr
- Discord: https://discord.gg/prowlarr
- Reddit: https://reddit.com/r/prowlarr
- Docker Hub: https://hub.docker.com/r/linuxserver/prowlarr
Educational Resources
Videos
- Prowlarr Setup Guide (Techno Tim)
- Complete *arr Stack with Prowlarr
- Prowlarr Indexer Setup
- FlareSolverr with Prowlarr
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
-
Start Container:
docker compose up -d prowlarr -
Access Web UI:
- Local:
http://SERVER_IP:9696 - Domain:
https://prowlarr.yourdomain.com
- Local:
-
Initial Configuration:
- Settings → Apps (connect *arr apps)
- Indexers → Add Indexers
- Settings → General (authentication)
Connecting *arr Applications
Settings → Apps → Add Application:
Add Sonarr
- Name: Sonarr
- Sync Level: Add and Remove Only (recommended)
- Prowlarr Server:
http://prowlarr:9696 - Sonarr Server:
http://sonarr:8989 - API Key: From Sonarr → Settings → General → API Key
- Sync Categories: TV/SD, TV/HD, TV/UHD
- Test → Save
Add Radarr
- Name: Radarr
- Sync Level: Add and Remove Only
- Prowlarr Server:
http://prowlarr:9696 - Radarr Server:
http://radarr:7878 - API Key: From Radarr → Settings → General → API Key
- Sync Categories: Movies/SD, Movies/HD, Movies/UHD
- Test → Save
Add Readarr (if using)
- Name: Readarr
- Server:
http://readarr:8787 - API Key: From Readarr
- Categories: Books/Ebook, Books/Audiobook
Add Lidarr (if using)
- Name: Lidarr
- Server:
http://lidarr:8686 - API Key: From Lidarr
- Categories: Audio/MP3, Audio/Lossless
Adding Indexers
Indexers → Add Indexer:
Popular Public Trackers
1337x:
- Search: "1337x"
- Select: 1337x
- Base URL: (default)
- API Key: (none for public)
- Categories: Select relevant
- Test → Save
YTS:
- Search: "YTS"
- Select: YTS
- Configure categories
- Test → Save
EZTV:
- Search: "EZTV"
- Select: EZTV (TV shows)
- Configure
- 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:
- Register on tracker website
- Get API key or credentials
- Add in Prowlarr with credentials
- Test → Save
Popular Private Trackers:
- BroadcastHe.Net (TV)
- PassThePopcorn (Movies)
- IPTorrents (General)
- TorrentLeech (General)
Usenet Indexers
Requires Usenet Provider:
- Subscribe to usenet provider (Newshosting, etc.)
- Subscribe to indexer (NZBGeek, etc.)
- Add indexer with API key
- Configure download client (SABnzbd, NZBGet)
Auto-Sync Verification
After adding indexers:
-
Check Sonarr:
- Settings → Indexers
- Should see all indexers from Prowlarr
- Each with "(Prowlarr)" suffix
-
Check Radarr:
- Settings → Indexers
- Should see same indexers
- Auto-synced from Prowlarr
-
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:
-
Add FlareSolverr Container:
flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: flaresolverr restart: unless-stopped ports: - "8191:8191" environment: - LOG_LEVEL=info -
Configure in Prowlarr:
- Settings → Indexers → Scroll down
- FlareSolverr Host:
http://flaresolverr:8191 - Test
-
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:
-
Find Indexer Definition:
- Prowlarr GitHub → Definitions
- Or community-submitted
-
Add Definition File:
- Copy YAML definition
- Place in
/config/Definitions/Custom/ - Restart Prowlarr
-
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
- 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
-
Enable Authentication:
- Settings → General → Security
- Authentication: Required
- Username and password
-
API Key Security:
- Keep API keys secret
- Regenerate if compromised
- Settings → General → API Key
-
Use Reverse Proxy:
- Traefik + Authelia
- Don't expose 9696 publicly
-
Indexer Credentials:
- Secure storage
- Use API keys over passwords
- Rotate periodically
-
Monitor Access:
- Check history for unusual activity
- Review indexer stats
-
VPN for Public Trackers:
- While Prowlarr doesn't download
- Apps behind VPN still benefit
-
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!