Skip to content

Self-hosting music

A friendly starting point for homelabbers who want a clean music stack: Lidarr for the permanent library, Aurral for discovery, Navidrome for streaming, and Tailscale for private access.

Core ideaTreat discovery as temporary until music proves it belongs in your permanent library.
Default postureAdd artists as taste anchors. Keep album monitoring at none. Add full albums intentionally.
Daily listeningUse flows for fresh music, then move the best finds into static Aurral playlists.

Self-hosting music works best when each tool has a narrow job.

ToolRole
LidarrArtists, albums, metadata, imports, and long-term library state
AurralDiscovery, flows, imported playlists, and Lidarr adds
NavidromeMain library and Aurral-generated playback over Subsonic
slskdSoulseek client used by Aurral for flow and playlist downloads
TubifarryOptional Lidarr plugin for Soulseek-backed album searches in Lidarr
AmperfyNative-feeling iOS playback against Navidrome
TailscalePrivate remote access without exposing admin tools publicly

Keep these separate in your head:

  1. Library albums — Lidarr (optionally with Tubifarry + slskd as indexer and download client) pulls full albums into /data/music.
  2. Flows and playlists — Aurral talks to slskd directly, picks candidates, and moves completed files into DOWNLOAD_FOLDER under aurral-weekly-flow/.

Aurral does not route flow downloads through Lidarr. Lidarr and Aurral can both use the same slskd instance, but they serve different jobs.

The biggest mistake in self-hosted music is treating discovery as collection. Every saved album becomes storage, metadata, scans, backups, and maintenance. Let discovery stay temporary until the music proves it deserves to be permanent.

Aurral gives that temporary layer a real home. It surfaces new artists, builds rotating flows, imports outside playlists, and writes generated tracklists into its own folder instead of dumping every find into the main music library.

Practical rules:

  • Add artists when you want discovery to learn from them.
  • Add full albums only when you really enjoy the album.
  • Use flows as the main source of new listening.
  • Move standout tracks into static Aurral playlists.
  • Let Lidarr focus on music you actually want to keep.

For a discovery-heavy setup, keep Lidarr and Aurral defaults conservative. The important choice is monitoring.

DefaultRecommendation
Artist monitoringEnable when you want the artist in your library graph
Album monitoringDefault to none. Add albums intentionally.
Search on addSearch for albums you know you want, not every artist
TagsUse an Aurral tag for discovery-driven additions
Quality profilePick the profile you actually want long term

In Aurral onboarding, you can optionally apply Davo’s Community Lidarr Guide — an Aurral-friendly quality profile, custom formats, and naming scheme. You can also apply it later from Settings → Integrations → Lidarr.

Map this to Aurral by setting default album monitoring to none while still adding the artist. The artist library becomes a set of taste anchors. Albums become deliberate commitments.

If you want Soulseek-backed album downloads inside Lidarr:

  1. Run Lidarr nightly for plugin support.
  2. Install Tubifarry from its GitHub plugin URL.
  3. Run slskd as the Soulseek client.
  4. Add slskd in Lidarr as both an indexer and download client.
  5. Align download paths or configure remote path mapping so imports land in /data/music.

For Aurral flows and playlists, connect slskd directly in Aurral onboarding or Settings → Integrations → slskd. Aurral sends searches to slskd, selects the best candidate, and moves completed files from slskd’s download directory into your DOWNLOAD_FOLDER.

Aurral and slskd are separate from Lidarr album downloads

Section titled “Aurral and slskd are separate from Lidarr album downloads”
  • slskd finished downloads: /data/downloads/slskd/complete
  • Aurral output: /data/downloads/aurral/aurral-weekly-flow/<playlist-id>/
  • Lidarr library: /data/music

Mount the same host tree at /data in Aurral, Lidarr, slskd, and Navidrome. See Shared storage for the full layout.

Aurral works best when it connects the stack without trying to own every part of it.

  • Discovering related artists and browsing trends
  • Searching artists and albums before sending them to Lidarr
  • Building scheduled flows and discover playlists that stay fresh
  • Importing outside playlists into a self-hosted format
  • Publishing generated libraries and playlists to Navidrome
  • Tracking requests, downloads, and playlist jobs in History
  • Long-term artist and album state
  • Metadata, quality profiles, root folders, and imports
  • Album searches for releases you want to keep
  1. Add only meaningful artists to Lidarr through Aurral.
  2. Keep default album monitoring set to none.
  3. Let Aurral discovery use those artists as taste anchors.
  4. Build one or more flows for regular listening.
  5. Listen in Navidrome or Amperfy.
  6. Move standout tracks into a static Aurral playlist.
  7. Add full albums to Lidarr only when they clearly earn it.

Treat flows like radio stations you control. Start with a small number of useful flows instead of creating one for every genre.

Flow ideaRecipe
Weekly discoveryBalanced mix of Discover, Trending, and Focus
Library adjacentRelated picks connected to artists already in your library
Deep cutsAdventurous tags and related artists, with Deep Dive on
Comfort rotationMostly Library with a small amount of Discover

You can also adopt discover playlists such as Release Radar from the Discover page and promote them into your Playlists library.

Keep flow sizes moderate — roughly 25 to 75 tracks. Schedule them weekly unless you listen through them faster. Use Focus when you know the mood, tag, or related-artist lane you want.

Static Aurral playlists are the memory layer. They preserve individual finds without pretending every find should become part of the core library.

For source mix, focus matching, and fallback behavior, see Flows.

Keep the main Lidarr library and Aurral-generated folders separate on disk. That makes scans, cleanup, backups, and permissions easier to reason about.

Example stack compose (matches docker-compose.example.yml):

services:
aurral:
image: ghcr.io/lklynet/aurral:latest
restart: unless-stopped
ports:
- "3001:3001"
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
volumes:
- ${MEDIA_ROOT:-/srv/media}:/data
- ${CONFIG:-./config/aurral}:/config
lidarr:
image: lscr.io/linuxserver/lidarr:latest
restart: unless-stopped
ports:
- "8686:8686"
environment:
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
volumes:
- ${MEDIA_ROOT:-/srv/media}:/data
- ${LIDARR_CONFIG:-./config/lidarr}:/config
slskd:
image: slskd/slskd:latest
restart: unless-stopped
ports:
- "5030:5030"
volumes:
- ${MEDIA_ROOT:-/srv/media}:/data
- ${SLSKD_CONFIG:-./config/slskd}:/app
navidrome:
image: deluan/navidrome:latest
restart: unless-stopped
ports:
- "4533:4533"
environment:
- ND_SCANNER_PURGEMISSING=always
- ND_DATA=/config
volumes:
- ${MEDIA_ROOT:-/srv/media}:/data:ro
- ${NAVIDROME_DATA:-./data/navidrome}:/config

After startup:

  • Lidarr root folder: /data/music
  • slskd downloads: /data/downloads/slskd/complete
  • Aurral DOWNLOAD_FOLDER: /data/downloads/aurral (set during onboarding)
  • Navidrome scans: /data/music and /data/downloads/aurral

In Settings → Playlists, choose how generated playlists handle files that already exist:

ModeWhen to use
DownloadSimple first setup and troubleshooting
Reuse existing filesSame-disk efficiency when Aurral or Lidarr already has a matching track

Reuse requires Aurral to mount Lidarr’s library paths at the same container locations Lidarr reports. See Playlist imports — file reuse.

For daily iOS playback, use Amperfy with Navidrome:

  1. Run Navidrome at home.
  2. Connect Amperfy through Subsonic.
  3. Install Tailscale on the server and phone.
  4. Use the server’s Tailscale address or MagicDNS name.

For Aurral discovery on iOS, join the Aurral Discord for beta app access.

A self-hosted music setup stays healthy when the routine is light. The goal is a smaller, better library with a discovery system around it.

  • Listen through current flows.
  • Move standout tracks into static playlists.
  • Add only the albums that clearly deserve it.
  • Review recommendation feedback and tune Discover sections.
  • Remove stale static playlists.
  • Check History for failed Lidarr imports and playlist downloads.

Aurral keeps fresh music moving. Lidarr keeps the permanent collection orderly. Navidrome and Amperfy make listening easy. Tailscale keeps it reachable without turning the whole stack into a public service.