This setup combines Navidrome (a music server) with a music download service in a single Docker Compose configuration.
- Navidrome Music Server: Browse, stream, and manage your music collection
- Built-in Song Downloads: Download songs directly from YouTube, SoundCloud, and other supported platforms
- Library Organization: Choose which library/folder to save downloaded songs
- Automatic Scanning: Downloaded songs are automatically added to your Navidrome library
-
Create required directories:
mkdir -p music navidrome-data
-
Start the services:
docker-compose up -d
-
Access Navidrome:
- Open your browser and go to
http://localhost:4533 - Create an admin account when prompted
- Open your browser and go to
- Click the user menu in the top-right corner of Navidrome
- Select "Download Song" from the menu
- Enter the URL of the song you want to download (YouTube, SoundCloud, etc.)
- Choose which library folder to save the song to (optional)
- Click "Download"
The song will be downloaded and automatically added to your Navidrome library.
songs/
├── docker-compose.yml # Main configuration
├── Dockerfile # Music downloader service
├── download_music.sh # Download script
├── music/ # Your music collection
├── navidrome-data/ # Navidrome database and config
└── navidrome/ # Modified Navidrome source
├── Dockerfile # Modified to include yt-dlp
└── ui/src/dialogs/DownloadDialog.jsx
The services are configured as follows:
- Navidrome: Runs on port 4533, stores music in
./music, data in./navidrome-data - Music Downloader: Runs in the same network, downloads to
./musicdirectory
Both services share a Docker network called music-network for communication.
The download service supports all platforms that yt-dlp supports, including:
- YouTube
- SoundCloud
- Bandcamp
- Vimeo
- And many more...
- The music downloader service runs continuously to handle download requests
- Downloaded files are automatically scanned by Navidrome
- You can organize your music by selecting different library folders
For manual downloads using the original method:
docker-compose run --rm music-downloader "https://www.youtube.com/watch?v=VIDEO_ID"