Music Server Stack
Navidrome music server with Lidarr for music management and Deemix downloader
Overview
Navidrome is a modern, web-based music server that implements the Subsonic API, allowing you to stream your personal music collection from anywhere with a sleek web interface and mobile app compatibility. Originally created as a lightweight alternative to heavier music servers like Plex or Jellyfin, Navidrome focuses exclusively on audio streaming with features like on-the-fly transcoding, playlist management, and support for various audio formats including FLAC, MP3, and OGG. This comprehensive music stack combines Navidrome with Lidarr for automated music library management, Prowlarr for indexer coordination, and qBittorrent as the download client to create a fully automated music acquisition and streaming system. The integration allows Lidarr to automatically search for, download, and organize music releases while Navidrome provides the streaming interface for your growing collection. This setup is ideal for music enthusiasts who want to maintain a high-quality personal music library with automatic metadata management, album art fetching, and the ability to stream their collection to any device through Subsonic-compatible mobile apps like DSub, Symfonium, or Ultrasonic.
Key Features
- Subsonic/Airsonic API compatibility for seamless integration with dozens of mobile music apps
- Real-time music library scanning with configurable intervals for automatic detection of new releases
- On-the-fly audio transcoding to reduce bandwidth usage on mobile connections
- Automatic music metadata fetching and organization through Lidarr's MusicBrainz integration
- Smart playlist generation and management with support for various criteria and filters
- Multi-user support with individual libraries, playlists, and playback history
- Automated quality upgrading when better releases become available through Lidarr monitoring
- Cross-platform web interface with responsive design for desktop and mobile browsers
Common Use Cases
- 1Personal music streaming server for audiophiles with large FLAC collections requiring quality preservation
- 2Family music sharing system with individual user accounts and personalized recommendations
- 3Remote music access for frequent travelers who want their full library available anywhere
- 4Automated music discovery and acquisition for users who want new releases from followed artists
- 5Replacement for discontinued services like Google Play Music with personal library control
- 6Home media center integration for whole-house audio streaming through various client devices
- 7Music collection digitization project with automated organization and metadata management
Prerequisites
- Minimum 2GB RAM (4GB recommended for large libraries over 10,000 tracks)
- At least 20GB free disk space for application data plus storage for your music collection
- Port availability: 4533 (Navidrome), 8686 (Lidarr), 9696 (Prowlarr), 8080 (qBittorrent)
- Basic understanding of music file formats and quality profiles for Lidarr configuration
- Familiarity with BitTorrent indexers and music release naming conventions
- Network configuration knowledge for remote access setup and mobile app connectivity
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 navidrome: 3 image: deluan/navidrome:latest4 container_name: navidrome5 restart: unless-stopped6 ports: 7 - "${NAVIDROME_PORT:-4533}:4533"8 volumes: 9 - ./navidrome/data:/data10 - ./music:/music:ro11 environment: 12 - ND_SCANSCHEDULE=1h13 - ND_LOGLEVEL=info14 - ND_SESSIONTIMEOUT=24h15 - ND_BASEURL=1617 lidarr: 18 image: lscr.io/linuxserver/lidarr:latest19 container_name: lidarr20 restart: unless-stopped21 ports: 22 - "${LIDARR_PORT:-8686}:8686"23 volumes: 24 - ./lidarr/config:/config25 - ./music:/music26 - ./downloads:/downloads27 environment: 28 - PUID=${PUID:-1000}29 - PGID=${PGID:-1000}30 - TZ=${TZ:-UTC}3132 prowlarr: 33 image: lscr.io/linuxserver/prowlarr:latest34 container_name: prowlarr35 restart: unless-stopped36 ports: 37 - "${PROWLARR_PORT:-9696}:9696"38 volumes: 39 - ./prowlarr/config:/config40 environment: 41 - PUID=${PUID:-1000}42 - PGID=${PGID:-1000}43 - TZ=${TZ:-UTC}4445 qbittorrent: 46 image: lscr.io/linuxserver/qbittorrent:latest47 container_name: qbittorrent48 restart: unless-stopped49 ports: 50 - "${QBIT_PORT:-8080}:8080"51 volumes: 52 - ./qbittorrent/config:/config53 - ./downloads:/downloads54 environment: 55 - PUID=${PUID:-1000}56 - PGID=${PGID:-1000}57 - TZ=${TZ:-UTC}.env Template
.env
1# Music Server Stack2NAVIDROME_PORT=45333LIDARR_PORT=86864PROWLARR_PORT=96965QBIT_PORT=808067# User/Group IDs8PUID=10009PGID=100010TZ=UTCUsage Notes
- 1Navidrome at http://localhost:4533 (create account on first visit)
- 2Lidarr at http://localhost:8686 for music management
- 3Subsonic/Airsonic API compatible for mobile apps
- 4Configure Lidarr with Prowlarr indexers
- 5Music stored in ./music directory
- 6Supports DSub, play:Sub, Symfonium apps
Individual Services(4 services)
Copy individual services to mix and match with your existing compose files.
navidrome
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: unless-stopped
ports:
- ${NAVIDROME_PORT:-4533}:4533
volumes:
- ./navidrome/data:/data
- ./music:/music:ro
environment:
- ND_SCANSCHEDULE=1h
- ND_LOGLEVEL=info
- ND_SESSIONTIMEOUT=24h
- ND_BASEURL=
lidarr
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
restart: unless-stopped
ports:
- ${LIDARR_PORT:-8686}:8686
volumes:
- ./lidarr/config:/config
- ./music:/music
- ./downloads:/downloads
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- TZ=${TZ:-UTC}
prowlarr
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
restart: unless-stopped
ports:
- ${PROWLARR_PORT:-9696}:9696
volumes:
- ./prowlarr/config:/config
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- TZ=${TZ:-UTC}
qbittorrent
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: unless-stopped
ports:
- ${QBIT_PORT:-8080}:8080
volumes:
- ./qbittorrent/config:/config
- ./downloads:/downloads
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- TZ=${TZ:-UTC}
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 navidrome:5 image: deluan/navidrome:latest6 container_name: navidrome7 restart: unless-stopped8 ports:9 - "${NAVIDROME_PORT:-4533}:4533"10 volumes:11 - ./navidrome/data:/data12 - ./music:/music:ro13 environment:14 - ND_SCANSCHEDULE=1h15 - ND_LOGLEVEL=info16 - ND_SESSIONTIMEOUT=24h17 - ND_BASEURL=1819 lidarr:20 image: lscr.io/linuxserver/lidarr:latest21 container_name: lidarr22 restart: unless-stopped23 ports:24 - "${LIDARR_PORT:-8686}:8686"25 volumes:26 - ./lidarr/config:/config27 - ./music:/music28 - ./downloads:/downloads29 environment:30 - PUID=${PUID:-1000}31 - PGID=${PGID:-1000}32 - TZ=${TZ:-UTC}3334 prowlarr:35 image: lscr.io/linuxserver/prowlarr:latest36 container_name: prowlarr37 restart: unless-stopped38 ports:39 - "${PROWLARR_PORT:-9696}:9696"40 volumes:41 - ./prowlarr/config:/config42 environment:43 - PUID=${PUID:-1000}44 - PGID=${PGID:-1000}45 - TZ=${TZ:-UTC}4647 qbittorrent:48 image: lscr.io/linuxserver/qbittorrent:latest49 container_name: qbittorrent50 restart: unless-stopped51 ports:52 - "${QBIT_PORT:-8080}:8080"53 volumes:54 - ./qbittorrent/config:/config55 - ./downloads:/downloads56 environment:57 - PUID=${PUID:-1000}58 - PGID=${PGID:-1000}59 - TZ=${TZ:-UTC}60EOF6162# 2. Create the .env file63cat > .env << 'EOF'64# Music Server Stack65NAVIDROME_PORT=453366LIDARR_PORT=868667PROWLARR_PORT=969668QBIT_PORT=80806970# User/Group IDs71PUID=100072PGID=100073TZ=UTC74EOF7576# 3. Start the services77docker compose up -d7879# 4. View logs80docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/music-server-stack/run | bashTroubleshooting
- Navidrome shows empty library after startup: Ensure the music directory contains properly tagged audio files and check scan logs for permission issues
- Lidarr cannot connect to qBittorrent: Verify qBittorrent web UI is enabled and check the connection settings in Lidarr's download client configuration
- Mobile apps cannot find Navidrome server: Confirm the Subsonic API is enabled and use the correct server URL format with /rest endpoint
- Music files not importing after download: Check file permissions match PUID/PGID settings and verify Lidarr's root folder configuration
- Prowlarr indexers failing to sync with Lidarr: Ensure both containers can communicate and check API key configuration in both applications
- Transcoding fails on mobile playback: Verify FFmpeg is properly installed in the Navidrome container and check transcoding settings for supported formats
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
navidromelidarrdeemix
Tags
#navidrome#music#lidarr#streaming#subsonic
Category
Media & EntertainmentAd Space
Shortcuts: C CopyF FavoriteD Download