Music
Prerequisite: Jellyfin
Use acquisition tools legally and responsibly.
Movies and TV are only half the story for a lot of people. If you also want to build out a personal music library, the two common pieces here are:
- Lidarr for music library management
- slskd as an optional acquisition tool and Soulseek client
If you already have a music library and just want to serve it, you can skim this page and proceed directly to Navidrome.
What This Page Is Actually For
The point is not to create “a bunch more containers”.
The point is to create a workflow where:
- music files land in a predictable place
- metadata and organization are manageable
- your playback server can scan a stable library path
That same pattern should look familiar by now from the movies/TV stack.
Create the Directories
mkdir -p /mnt/nas/media/music
mkdir -p /mnt/nas/media/downloads/music
mkdir -p ~/docker/appdata/{lidarr,slskd}
mkdir -p ~/docker/compose/media
If you do not have a NAS mounted yet, substitute local directories and migrate later.
Deploy slskd (Optional)
If you want a web-managed Soulseek client, create ~/docker/compose/media/slskd.compose.yml:
services:
slskd:
image: slskd/slskd:latest
container_name: slskd
ports:
- "5030:5030"
environment:
- SLSKD_REMOTE_CONFIGURATION=true
volumes:
- /home/<your-user>/docker/appdata/slskd:/app
- /mnt/nas/media/music:/music
- /mnt/nas/media/downloads/music:/downloads
restart: unless-stopped
networks: [proxy]
networks:
proxy:
external: true
Start it:
docker compose -f ~/docker/compose/media/slskd.compose.yml up -d
Then open:
http://<nixos-ip>:5030
If you do not need this part, skip it. Lidarr can still be useful for library management on its own.
Deploy Lidarr
Create ~/docker/compose/media/lidarr.compose.yml:
services:
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- /home/<your-user>/docker/appdata/lidarr:/config
- /mnt/nas/media/music:/music
- /mnt/nas/media/downloads/music:/downloads
ports:
- "8686:8686"
restart: unless-stopped
networks: [proxy]
networks:
proxy:
external: true
Start it:
docker compose -f ~/docker/compose/media/lidarr.compose.yml up -d
Open:
http://<nixos-ip>:8686
Configure the Flow
At a high level:
- Set your Lidarr root folder to
/music - Add your download client if you are using one
- Point completed downloads at the same download path the container can see
- Test with a small album before scaling up
The same warning from Sonarr/Radarr applies here too:
- path consistency matters
If Lidarr cannot see the same download path that the client sees, imports become awkward very quickly.
Keep Expectations Reasonable
Music automation is often messier than TV and movies because:
- metadata quality varies more
- release naming is inconsistent
- multi-disc and special editions are common
That is normal.
Expect some manual cleanup, especially at the beginning.
Next Steps
Next, we will serve the music library cleanly using Navidrome.
Proceed to Navidrome.
Last updated: March 2026