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 scheduledAuthor 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 — periodicHTTP 500 InternalServerErrorandInvalid response received from LidarrAPIerrors 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.
Related¶
- Arrstack — host VM and full compose context
- slskd — Soulseek client that Tubifarry talks to
- beets — on-demand tagger for post-import cleanup
- Music acquisition bringup runbook — first-boot procedure with hold points + the 2026-05-16 lessons