Self-Hosting Lyrion Music Server with Docker

What Is Lyrion Music Server?

Lyrion Music Server (formerly Logitech Media Server, or LMS) is a community-maintained music server that streams your personal music library to Squeezebox hardware players and compatible software clients. Originally developed by Slim Devices and later acquired by Logitech, the project was rebranded to Lyrion in 2024 after Logitech discontinued official support. It replaces Spotify, Apple Music, or any commercial streaming service for users who own their music.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 512 MB of free RAM (minimum)
  • Storage for your music library
  • A domain name (optional, for remote access)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  lms:
    image: lmscommunity/lyrionmusicserver:9.1.1
    container_name: lyrion-music-server
    hostname: lyrion-music-server
    volumes:
      - lms-config:/config
      - /path/to/your/music:/music:ro
      - lms-playlists:/playlist
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "9000:9000/tcp"   # Web UI
      - "9090:9090/tcp"   # CLI interface (player control)
      - "3483:3483/tcp"   # Squeezebox player protocol
      - "3483:3483/udp"   # Squeezebox player discovery
    environment:
      - HTTP_PORT=9000
      - PUID=1000          # Match your host user ID
      - PGID=1000          # Match your host group ID
    restart: unless-stopped

volumes:
  lms-config:
  lms-playlists:

Replace /path/to/your/music with the actual path to your music library on the host. The :ro flag mounts it read-only — LMS only needs to read your files, not modify them.

Start the stack:

docker compose up -d

Initial Setup

  1. Open http://your-server-ip:9000 in your browser
  2. LMS walks you through a setup wizard on first launch
  3. Point the music library to /music (the container path)
  4. Set the playlist directory to /playlist
  5. LMS scans your library automatically — large collections (50,000+ tracks) may take several minutes

The web UI doubles as a full-featured music player. You can browse, search, and play music directly from the browser without any Squeezebox hardware.

Configuration

Player Discovery

LMS uses port 3483 (TCP and UDP) for Squeezebox player discovery. All four port mappings must use 1:1 host-to-container mapping. If port 9000 conflicts with another service, set HTTP_PORT to match your chosen port:

ports:
  - "9002:9002/tcp"
environment:
  - HTTP_PORT=9002

Custom Initialization

Place a script named custom-init.sh in the config volume to run commands before LMS starts. Useful for installing codec packages:

#!/bin/bash
apt-get update && apt-get install -y ffmpeg

Material Skin

The default web UI works but feels dated. Install the Material Skin plugin from the built-in plugin manager (Settings → Manage Plugins) for a modern, mobile-friendly interface.

Advanced Configuration (Optional)

Network Player Advertisement

If players on your network can’t discover LMS, force it to advertise a specific IP:

environment:
  - EXTRA_ARGS=--advertiseaddr=192.168.1.100

Audio Output (Local Playback)

To use LMS as a direct audio output device, mount the host’s sound device:

devices:
  - /dev/snd:/dev/snd

This requires the Local Player plugin enabled in LMS settings.

Plugin Installation

Beyond the built-in plugin manager, you can manually install plugins by placing them in the config volume at cache/Plugins/. Restart the container after adding plugins.

Reverse Proxy

If you want remote access, put LMS behind a reverse proxy. Note that Squeezebox protocol traffic (port 3483) cannot be proxied — only the web UI (port 9000) works through a reverse proxy.

For Nginx Proxy Manager or Caddy configuration, see Reverse Proxy Setup.

Backup

Back up the lms-config volume — it contains your server configuration, database, plugin cache, and scan data. The music library itself is mounted read-only from your host, so back that up separately.

For a complete backup strategy, see Backup Strategy.

Troubleshooting

Players Can’t Find the Server

Symptom: Squeezebox hardware or software players don’t discover LMS on the network. Fix: Ensure ports 3483/tcp and 3483/udp are mapped 1:1. If using Docker’s bridge network, try adding --advertiseaddr=YOUR_HOST_IP via EXTRA_ARGS. As a last resort, use network_mode: host.

Web UI Shows “Connection Refused”

Symptom: Browser can’t connect to port 9000. Fix: Verify HTTP_PORT matches the container port in your mapping. If you’re using a non-default port, both the ports mapping and HTTP_PORT env var must match.

Library Scan Stalls or Misses Files

Symptom: LMS doesn’t find all your music files. Fix: Check that the music volume is mounted correctly and the PUID/PGID match a user with read access to the files. Verify file formats — LMS supports FLAC, MP3, AAC, ALAC, WAV, AIFF, Ogg Vorbis, and WMA.

High Memory Usage During Scan

Symptom: Container uses excessive RAM during initial library scan. Fix: This is normal for large libraries. A 100,000-track library may use 1-2 GB during scanning. Memory drops to ~200 MB after the scan completes. If RAM is tight, scan in batches by pointing to subdirectories first.

Resource Requirements

  • RAM: ~150 MB idle, 500 MB-2 GB during library scans (depends on library size)
  • CPU: Low (transcoding increases usage if enabled)
  • Disk: ~500 MB for application data, plus your music library

Verdict

Lyrion Music Server is the definitive choice for Squeezebox hardware owners — nothing else supports these players. Even without Squeezebox hardware, the Material Skin plugin makes it a capable web-based music player with excellent library management. Its plugin ecosystem (Spotify Connect, YouTube, radio stations) extends it well beyond local file playback. Choose Navidrome if you want a lighter Subsonic-compatible server, or Jellyfin if you want video alongside music. LMS excels when you have Squeezebox hardware or want the deepest plugin ecosystem for audio streaming.

FAQ

Do I need Squeezebox hardware to use Lyrion?

No. Lyrion works entirely through its web UI and software players like Squeezelite. You can browse, search, and play music directly from the browser. Squeezebox hardware is optional — Squeezelite runs on any Linux device, Raspberry Pi, or even Windows/Mac.

Can Lyrion stream to Chromecast or AirPlay speakers?

Not natively, but plugins add this capability. The Chromecast Bridge plugin enables casting to Chromecast devices. AirPlay support is available through the ShairTunes2 plugin. Install both via Settings → Manage Plugins.

How does Lyrion compare to Navidrome?

Navidrome is lighter (single binary, no plugins needed), uses the Subsonic API for broad mobile app support, and is simpler to deploy. Lyrion has multi-room sync, a 20+ year plugin ecosystem, streaming service integration (Spotify, Tidal), and Squeezebox protocol support. Choose Navidrome for simplicity; choose Lyrion for multi-room audio or Squeezebox hardware. See Lyrion vs Navidrome.

Can I use Lyrion with Spotify or Tidal?

Yes. Install the Spotty plugin (for Spotify) or TIDAL Connect plugin via the plugin manager. Both require paid subscriptions to the respective services. Lyrion acts as a Spotify Connect endpoint, letting you control playback from the Spotify app.

What is Material Skin?

Material Skin is a community plugin that replaces Lyrion’s dated default web UI with a modern, responsive interface. It provides album art, mobile-friendly controls, and a clean library browser. Most users consider it essential — install it immediately from Settings → Manage Plugins.

Does Lyrion support high-resolution audio and DSD?

Yes. Lyrion supports FLAC, ALAC, WAV, AIFF, DSD, and other audiophile formats natively. It can serve hi-res files bit-perfect to capable players or transcode down for players that don’t support the source format.

Comments