A comprehensive Docker-based media automation stack that provides a complete solution for managing, downloading, organizing, and streaming your media collection. This stack combines the power of the *arr ecosystem with media servers and management tools to create a fully automated media center.
This stack automates the entire media lifecycle:
- Discovery: Find and track movies, TV shows, music, and books
- Download: Automatically download content based on your preferences
- Organization: Sort and rename files according to your standards
- Streaming: Serve media to all your devices
- Management: Monitor, request, and maintain your collection
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Discovery β β Download β β Organization β
β β β β β β
β β’ Overseerr βββββΆβ β’ qBittorrent βββββΆβ β’ *arr Apps β
β β’ Prowlarr β β β’ Indexers β β β’ Bazarr β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Streaming β β Management β β Monitoring β
β β β β β β
β β’ Jellyfin β β β’ Homarr β β β’ Tautulli β
β β’ Plex β β β’ Portainer β β β’ Jellystat β
β β’ Navidrome β β β’ Watchtower β β β’ Audiobookshelfβ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Sonarr - TV show collection manager
- Radarr - Movie collection manager
- Lidarr - Music collection manager
- Readarr - Book and audiobook manager
- Prowlarr - Indexer manager for all *arr apps
- Bazarr - Subtitle manager
- Jellyfin - Free, open-source media server
- Plex - Popular media server with extensive device support
- Navidrome - Lightweight music server
- Audiobookshelf - Audiobook server
- Homarr - Unified dashboard for all services
- Overseerr - Request management and discovery
- qBittorrent - Torrent client
- Recyclarr - Quality profile synchronization
- Portainer - Docker container management
- Watchtower - Automatic container updates
- π Fully Automated: Set it up once and let it manage your entire media collection
- π Multi-Platform: Works on Windows, macOS, and Linux
- π± Device Agnostic: Stream to any device with a web browser or app
- π Self-Hosted: Complete control over your data and privacy
- β‘ High Performance: Optimized for speed and efficiency
- π‘οΈ Secure: All services run in isolated containers
- π Scalable: Easy to add more storage or services as needed
- Docker Desktop with WSL2 backend (Windows) or Docker Engine (Linux/macOS)
- At least 4GB RAM and 20GB free disk space
- Basic understanding of Docker and networking
-
Clone the repository
git clone https://github.com/yourusername/arr-stack.git cd arr-stack -
Create environment file
cp .env.example .env # Edit .env with your preferred settings -
Start the stack
docker compose up -d
-
Access services
- Dashboard: http://localhost:7575 (Homarr)
- TV Shows: http://localhost:8989 (Sonarr)
- Movies: http://localhost:7878 (Radarr)
- Music: http://localhost:8686 (Lidarr)
- Books: http://localhost:8787 (Readarr)
- Media Server: http://localhost:8096 (Jellyfin)
arr-stack/
βββ config/ # Service configurations
β βββ homarr/ # Dashboard settings
β βββ sonarr/ # TV show manager
β βββ radarr/ # Movie manager
β βββ lidarr/ # Music manager
β βββ readarr/ # Book manager
β βββ prowlarr/ # Indexer manager
β βββ bazarr/ # Subtitle manager
β βββ jellyfin/ # Media server
β βββ plex/ # Alternative media server
β βββ qbittorrent/ # Torrent client
β βββ portainer/ # Container management
β βββ ...
βββ downloads/ # Download directory
βββ media/ # Organized media files
β βββ movies/ # Movie collection
β βββ tv/ # TV show collection
β βββ music/ # Music collection
β βββ books/ # Book collection
β βββ audiobooks/ # Audiobook collection
βββ docker-compose.yml # Service definitions
βββ .env # Environment variables
βββ README.md # This file
Key variables in .env:
# User and Timezone
PUID=1000
PGID=1000
TZ=Europe/Istanbul
# Service Ports
HOMARR_PORT=7575
SONARR_PORT=8989
RADARR_PORT=7878
LIDARR_PORT=8686
READARR_PORT=8787
PROWLARR_PORT=9696
BAZARR_PORT=6767
QBITTORRENT_WEBUI_PORT=8080
JELLYFIN_HTTP_PORT=8096
PLEX_HTTP_PORT=32400
# Directory Paths
CONFIG_ROOT=./config
MEDIA_MOVIES_DIR=./media/movies
MEDIA_TV_DIR=./media/tv
MEDIA_MUSIC_DIR=./media/music
MEDIA_BOOKS_DIR=./media/books
DOWNLOADS_ROOT=./downloads
# Optional
PLEX_CLAIM= # Get from plex.tv/claim
WATCHTOWER_NOTIFICATIONS= # Discord/Slack webhook URL-
Configure qBittorrent
- Change default password
- Set download categories
- Configure download paths
-
Setup Indexers in Prowlarr
- Add your preferred indexers
- Configure API keys
- Sync with *arr applications
-
*Configure arr Applications
- Add download clients (qBittorrent)
- Set root folders for media
- Configure quality profiles
- Add indexers from Prowlarr
-
Setup Media Servers
- Create libraries pointing to media folders
- Configure metadata agents
- Set up user accounts
-
Configure Dashboard
- Add service widgets to Homarr
- Set up API integrations
- Customize layout and themes
Use Recyclarr to maintain consistent quality profiles across all *arr applications:
# config/recyclarr/config.yml
sonarr:
instance_name: sonarr
base_url: http://sonarr:8989
api_key: your_api_key
quality_definition:
type: series
quality_profiles:
- name: "HD-1080p"
upgrade_until_quality: "Bluray-1080p"
qualities:
- "HDTV-1080p"
- "Bluray-1080p"Watchtower automatically updates containers. Configure notifications:
WATCHTOWER_NOTIFICATIONS=discord://webhook_urlRegular backups of the config/ directory ensure you can restore your setup:
# Create backup
tar -czf arr-stack-backup-$(date +%Y%m%d).tar.gz config/
# Restore backup
tar -xzf arr-stack-backup-20240101.tar.gzServices won't start
- Check Docker is running
- Verify port conflicts
- Check disk space
Downloads not working
- Verify qBittorrent configuration
- Check indexer connectivity
- Review download client settings in *arr apps
Media not appearing
- Check file permissions
- Verify folder mappings
- Review media server library settings
Performance issues
- Monitor resource usage
- Adjust quality profiles
- Consider hardware transcoding
# View all logs
docker compose logs -f
# View specific service logs
docker compose logs -f sonarr
# Check service status
docker compose ps
# Restart specific service
docker compose restart sonarr- Network Security: Services are exposed on localhost by default
- Authentication: Set strong passwords for all services
- Updates: Keep containers updated with Watchtower
- Backups: Regular backups of configuration data
- Access Control: Use reverse proxy for external access
- Minimum: 4GB RAM, 2 CPU cores, 100GB storage
- Recommended: 8GB RAM, 4 CPU cores, 1TB+ storage
- Optimal: 16GB+ RAM, 8+ CPU cores, SSD storage
- Use SSD storage for better I/O performance
- Enable hardware transcoding if supported
- Configure appropriate quality profiles
- Monitor resource usage and scale accordingly
- LinuxServer.io for excellent Docker images
- Hotio for additional container images
- All the developers of the amazing *arr ecosystem
- The open-source community for continuous improvements