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
- Open
http://your-server-ip:9000in your browser - LMS walks you through a setup wizard on first launch
- Point the music library to
/music(the container path) - Set the playlist directory to
/playlist - 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.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments