Skip to content

Lidarr

Music library manager — the music sibling of Sonarr/Radarr. Tracks artists, manages quality profiles, imports new releases, hands acquisitions off to slskd via the Tubifarry plugin.

Web UI: http://192.168.1.252:8686/ (LAN-only)

Phase 6D complete — 2026-05-16

Live on arrstack VM 101 via ghcr.io/hotio/lidarr:pr-plugins (plugins branch — linuxserver/lidarr mainline has no plugin support). Tubifarry plugin installed and wired to slskd as both indexer + download client. Existing 612-artist / 877-album library auto-imported on root folder add (10,691 tracks registered in ~25 min). Plex Connect notification via Plex.tv OAuth for auto-rescan on import.

Service details

Property Value
Host arrstack VM 101 (192.168.1.252) — see Arrstack
Image ghcr.io/hotio/lidarr:pr-plugins — pre-configured for the plugins branch; mainline linuxserver/lidarr cannot load plugins
Container name lidarr
Network arr Docker bridge
Web port 8686 (LAN-only)
Config dir /opt/mediaserver/lidarr (on host) → /config (in container)
Library mount /stash/rodneystash/Music/media/Music (read-write)
Downloads mount /stash/rodneystash/Downloads/media/Downloads (read-write)
Root folder /media/Music
Quality profile Lossless (FLAC/ALAC)
Metadata profile Standard (Album + EP + Single; excludes Live/Remixes/Compilations)
Plugin support Yes (System → Plugins UI; visible because we're on the plugins branch)
Auth Forms login; admin set on first boot
Plex notification Via Plex.tv OAuth (Settings → Connect → Plex Media Server)

Tubifarry plugin

Installed from https://github.com/TypNull/Tubifarry via Lidarr's System → Plugins → Install From URL. Provides:

  • A Slskd indexer registered under Settings → Indexers — queries slskd's API for search matches against monitored albums
  • A Slskd download client registered under Settings → Download Clients — submits Tubifarry-selected releases to slskd for download

Both use the same slskd URL (http://gluetun:5030 — slskd shares gluetun's network namespace) and the same SLSKD_API_KEY from the arrstack stack env.

Search and indexer config (in the slskd indexer)

Setting Value Why
Search Templates {{CleanAlbumQuery}} Critical — Tubifarry's default Artist AlbumTitle query format returns ZERO results from slskd because Soulseek matches against filenames (not folder paths) and track filenames don't contain the artist name. Album-only query matches the universal Artist/Album/01 - Track.flac convention on Soulseek.
Enable Fallback Search enabled Retry with additional metadata if primary search returns no results
Track Fallback enabled Last-resort track-name search if album search fails (handy for compilations and obscure releases)
Audio Files Only enabled Filter out non-audio metadata files
Grabs per User 3 / Per Day Closer to community "≤1 album/day per user" strict norm; default 5/day is lenient
Max Queued/User 5 Don't pile a peer's queue with batch requests
Min Peer Speed 0 Many Soulseek peers report 0 or unknown upload speed even when functional; filtering excluded too many viable peers
Min File Count 5 Prefer full albums over single tracks; avoids partial-upload matches
Max Peer Queue 500 Skip peers with multi-day queues but don't exclude in-demand peers (popular albums often have peers with longer queues)
Ignore List /config/ignored_users.txt File path containing peer usernames to skip (one per line). Use to block chronically busy peers that consistently reject downloads. Host path: /opt/mediaserver/lidarr/ignored_users.txt.

Track naming (Rename Tracks enabled)

Lidarr's "Rename Tracks" setting must be enabled — default is OFF, which means Lidarr preserves Soulseek's flat-folder structure and dumps all tracks at the artist root (no album subfolder). Plex can't reliably pick up a flat-organised library.

Settings → Media Management → Track Naming:

Field Value Notes
Rename Tracks ✅ enabled Master toggle — without this, none of the templates apply
Replace Illegal Characters ✅ enabled Strips chars Plex/Windows can't handle
Colon Replacement Smart Replace Default
Standard Track Format {Album Title}/{Artist Name} - {Album Title} - {track:00} - {Track Title} The {Album Title}/ prefix creates the album subfolder
Multi Disc Track Format {Album Title}/{medium:0}-{track:00} - {Track Title} Same prefix pattern for multi-disc releases
Artist Folder Format {Artist Name} Default

No separate Album Folder Format field

The hotio plugins-branch Lidarr image does NOT have a separate "Album Folder Format" field (the Servarr Wiki documents one for mainline). The album subfolder MUST come from a path prefix in the two track format fields above. The helper preview at the bottom of the File Name Tokens dialog shows a (1) suffix in examples — that's a Lidarr UI preview artifact, NOT part of the actual rendered filename.

Remote Path Mapping (required)

slskd writes to /downloads/... (its internal path); Lidarr sees the same files at /media/Downloads/music/... (its bind mount). Without a mapping, Lidarr health warning fires: download client Slskd places downloads in /downloads but this directory does not appear to exist inside the container.

Settings → Download Clients → Remote Path Mappings:

Field Value
Host gluetun (matches slskd indexer URL hostname)
Remote Path /downloads/
Local Path /media/Downloads/music/

Known quirks

  • RSS sync not supported by the slskd indexer. Lidarr fires the health warning No indexers available with RSS sync enabled — expected and benign for Soulseek (no feed-of-new-releases concept). Discovery happens via scheduled Author Refresh (every 6h) + manual album/artist searches. Ignore the warning.
  • No automatic search for Wanted → Missing albums. Because the slskd indexer doesn't support RSS, scheduled tasks don't trigger searches for wanted items, and Author Refresh only refreshes metadata. Practical pattern: weekly manual sweep of Wanted → Missing. Select all → Search Selected when ready to acquire.
  • Adding a root folder triggers an auto-scan + bulk import of everything found in it, on a delayed schedule (~minutes after add). Don't add the root folder until you're ready for the full library scan to fire.
  • Bulk import can miss albums with non-canonical tags / unusual filename formats. Lidarr's tag-matcher reads FLAC tags to map files to MusicBrainz albums; albums with mojibake'd titles, period-vs-dash separators, or special edition tags may fail to match and end up in Wanted → Missing even though files exist on disk. Recovery: Wanted → Missing → select album → "Manual Import" toolbar button → approve track-to-position matches. Post-bulk-import audit step worth running: browse Wanted → Missing and manual-import any false negatives.
  • Tubifarry returns only the single best report to Lidarr per search. No automatic peer-fallback when the chosen peer rejects. If the best-scored peer is offline / overwhelmed, Lidarr's grab fails until you manually retry. Mitigation: add chronically busy peers to the Ignore List file.
  • Soulseek "Overwhelmed with requests" peer rejection is a normal state, not a config issue. Peer-side queue capacity. All tracks of an album will reject simultaneously because slskd queued them all to the same peer. Retry the Lidarr search (different peer may be picked) or ignore-list the peer if it persists.
  • api.lidarr.audio (the metadata server) is flaky — periodic HTTP 500 InternalServerError and Invalid response received from LidarrAPI errors visible in logs for background tasks. Doesn't block imports of pre-cached metadata, can affect adding new artists when the API is down. LidMeta is the bolt-on insurance if outages become frequent.