Spotify may still dominate global music streaming, but for many technically inclined users and sysadmins, the cracks are impossible to ignore. The issues go beyond convenience:

  • Artist royalties remain tiny, around $0.003–$0.005 per stream. It takes thousands of plays for a musician to make the equivalent of a single digital album sale.
  • Playlists padded with “ghost artists” and AI-generated tracks, designed to cut royalty costs.
  • Fake albums published under the names of real — even deceased — artists, exploiting weak content moderation.
  • Biometric/ID verification in the UK, required just to play explicit tracks.

For some, the answer isn’t to wait for change but to take control. A growing number of sysadmins and hobbyists are turning to self-hosted music stacks, leveraging open source tools and containerization to build personal streaming platforms that rival — and often surpass — Spotify.

One such setup, detailed by developer James Ambrose, combines Navidrome, Lidarr, and Docker, with secure tunneling for remote access.


Architecture Overview

Ambrose’s stack follows a modular, containerized architecture, designed for flexibility and maintainability:

  1. Music server (Navidrome): indexes, organizes, and streams the music library through a modern web UI and Subsonic-compatible API.
    • Project: Navidrome
    • Deployment: standalone Docker container with persistent volumes.
    • Integration: compatible with web, desktop, and mobile clients.
  2. Library management (Lidarr): automates library organization and monitors new releases.
    • Project: Lidarr
    • Function: integrates with download clients, keeps metadata consistent.
  3. Download client (sabnzbd): handles automated, legitimate downloads of purchased music.
  4. Synced lyrics (lrcget): downloads LRC files to bring back synced lyrics.
  5. History & discovery (Last.fm + ListenBrainz + Lidify): tracks listening habits (scrobbling) and generates recommendations.
  6. Secure remote access (tunneling): exposes Navidrome safely without direct port forwarding.
  7. Containerization (Docker): each component runs in its own container, isolated but connected via internal networking.

Why Go Self-Hosted Instead of Spotify?

For sysadmins, the appeal is clear:

  • Audio quality: lossless FLAC or ALAC instead of Spotify’s 320 kbps cap.
  • Ownership: files remain under user control, not subject to catalog removals or licensing disputes.
  • Privacy: no tracking, telemetry, or targeted advertising.
  • Scalability: deploy at home, on a NAS, VPS, or public cloud.
  • Automation: Lidarr and sabnzbd automate acquisition and organization, reducing manual maintenance.

Practical Deployment with Docker

Most services are containerized. A basic docker-compose.yml might look like this:

version: "3.8"

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    ports:
      - "4533:4533"
    volumes:
      - ./data/navidrome:/data
      - ./music:/music
    environment:
      - ND_SCANSCHEDULE=1h
      - ND_LOGLEVEL=info
    restart: unless-stopped

  lidarr:
    image: lscr.io/linuxserver/lidarr:latest
    container_name: lidarr
    ports:
      - "8686:8686"
    volumes:
      - ./data/lidarr:/config
      - ./music:/music
      - ./downloads:/downloads
    restart: unless-stopped

  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    ports:
      - "8080:8080"
    volumes:
      - ./data/sabnzbd:/config
      - ./downloads:/downloads
    restart: unless-stopped
Code language: PHP (php)

This structure isolates each service, while shared volumes keep the music and download directories consistent.


Security Considerations

Running your own stack means taking responsibility for security:

  • Do not expose ports directly to the internet. Use secure tunneling or VPNs.
  • Authentication: Navidrome supports token-based access; Lidarr should be kept behind internal networks.
  • Automated updates: tools like Watchtower can keep containers up to date.
  • TLS/HTTPS: always encrypt external traffic with valid certificates.
  • Monitoring: integrate with Prometheus/Grafana for metrics and alerting.

User Experience: Multi-Platform Clients

Thanks to Navidrome’s Subsonic API, a wide range of clients can be used:

These clients bring features like offline playback, synced lyrics, playlist management, and high-quality streaming.


Supporting Artists Directly

Self-hosting doesn’t mean ignoring artist support. In fact, it encourages more direct, fairer relationships:

  • Bandcamp: artists keep 80–90% of sales.
  • Direct subscriptions: Patreon or artist-run platforms.
  • Merchandise and concerts: tangible support outside streaming royalties.

A $10 album on Bandcamp yields about $8–$9 for the artist. On Spotify, they would need between 1,600–3,000 streams to earn the same — often more if a label takes a cut.


Comparison: Spotify vs. Self-Hosted Stack

FeatureSpotifySelf-Hosted Stack
Audio qualityUp to 320 kbpsFLAC/Lossless
Content ownershipRental only, no controlFull ownership
Cost$9.99–$14.99 monthlyOne-time hardware + storage
Artist compensation~$0.003–0.005 per stream80–90% of purchases
PrivacyHeavy tracking & profilingNo telemetry
AvailabilitySubject to catalog licensingPermanent, user-controlled

Conclusion

For sysadmins, engineers, and power users, a self-hosted music stack provides both technical freedom and ethical clarity. By combining Navidrome, Lidarr, sabnzbd, and add-ons like ListenBrainz and lrcget, it’s possible to replicate Spotify’s convenience while regaining control over audio quality, privacy, and ownership.

It’s not for everyone — casual listeners may prefer the convenience of a subscription — but for those with technical skills, the benefits outweigh the initial setup time. Most importantly, it puts the music back in the hands of the listener and ensures artists can be supported more directly.


FAQ

1. What’s the minimum hardware required for a self-hosted music stack?
A modest server with 2–4 CPU cores, 4–8 GB RAM, and sufficient storage (SSD for system, HDD for library) is enough. Many NAS devices work too.

2. Do I need to expose ports for remote access?
No. Best practice is to avoid open ports and instead use a tunneling solution or VPN for secure external access.

3. How can I keep containers up to date automatically?
Use Watchtower to monitor and update running Docker containers with the latest images.

4. Why use Lidarr instead of managing music manually?
Lidarr automates monitoring, metadata, and library organization. For large or growing collections, it eliminates the overhead of manual file management.

sources: leshicodes and messenger

Scroll to Top