All-in-One Music Powerhouse in a Single Docker Container - lxserver Review
A familiar scenario: you want to listen to music, but one app doesn't play nice with another, your favorite playlists are scattered across different services, and the desktop client eats up half your RAM. Usually in cases like these, we either make do or start cobbling together a mess of workarounds. The lxserver project offers a more elegant path — spin up your own server that glues together different music sources into one convenient interface.
What Is This Thing
lxserver is an extended server version of the popular LX Music player. Essentially, it's a Node.js application that combines a data synchronization server and a full-featured web player. While LX Music was previously mostly a desktop story, you can now deploy it on a home server or VPS and access your media library from any browser.
Interestingly, the author didn't just make "yet another player" — they added Subsonic protocol support. This means you can connect mobile apps like Feishin or "音流" to your server and listen to music on your smartphone as if it were stored locally.
What Makes It Great in Practice
The first thing that catches your eye is the interface. It's clean, modern, and not cluttered with unnecessary details. But the devil, as always, is in the details. Here are a few things I found most useful.
Versatile Search and Playlist Management
The problem with many self-hosted players is that they can only play what you've carefully downloaded to disk. lxserver can aggregate search across different platforms. You simply type in a band name and see results from multiple sources at once. Tracks you like can be combined into playlists, reordered by drag-and-drop, or bulk-edited in the playback queue.
Cache Automation
The weak point of any online player is a poor internet connection. The lxserver developers implemented an automatic caching system. The player saves lyrics, links, and audio files on its own. The settings include a dedicated cache management panel where you can set limits (default is 2 GB) and monitor how much space your favorite albums are taking up.
Social Sharing and Theming
A small but nice touch: the player has a feature for creating quote cards from songs. You can choose vertical or square format, customize colors to match the album cover, and save the image to share on social media. They also added a bunch of themes with poetic names like "Sea Shark" or "Crimson Moon."

Technical Details
The project is written in Node.js and uses Express for the backend. WebSocket runs under the hood for real-time operation. The architecture is divided into three parts:
- Core backend responsible for synchronization and WebDAV.
- Management console (admin panel).
- The web player itself in vanilla JavaScript.
For those concerned about security, the author included authorization. Access to the player can be password-protected via environment variables. This is especially relevant if you're exposing the server to the outside world.
Configuration via Environment
Instead of digging into config.js, the easiest way to configure the server is through variables. The most useful ones:
ENABLE_WEBPLAYER_AUTH: enables password-protected login.WEBPLAYER_PASSWORD: the password itself.CACHE_SIZE_LIMIT: so the server doesn't fill up the entire disk with temporary files.
How to Get Started
The fastest way is Docker. The author has prepared ready-made images on Docker Hub and GitHub Packages. Here's an example of a simple docker-compose.yml that will spin up everything you need:
version: '3'
services:
lx-sync-server:
image: xcq0607/lxserver:latest
container_name: lx-sync-server
restart: unless-stopped
ports:
- "9527:9527"
volumes:
- ./data:/server/data
- ./cache:/server/cache
- ./music:/server/music
environment:
- NODE_ENV=production
- ENABLE_WEBPLAYER_AUTH=true
- WEBPLAYER_PASSWORD=секретный_пароль
After startup, the admin panel will be available at http://your-ip:9527, and the player itself at http://your-ip:9527/music.

Caveats and Limitations
It's worth noting that the project is actively developing, and the documentation (especially in English) is somewhat sparse in places. Most settings are intuitive, but if you want deep customization of sources, you'll need to figure out the scripting system.
By default, the project has anonymous PostHog telemetry enabled for collecting errors and update notifications. If you're paranoid, you can disable it with the DISABLE_TELEMETRY=true parameter, but then you won't know when a new version comes out directly in the interface.
lxserver is a great find for anyone who wants to organize their music life without being tied to a specific device or paid subscription. It's lightweight, spins up quickly in Docker, and covers most needs of a typical music lover.
Who should give it a try:
- Those already using the desktop LX Music and wanting synchronization.
- Home server owners looking for a lightweight alternative to heavyweight Plex or Jellyfin for music.
- Customization enthusiasts and fans of third-party mobile clients.
The project looks alive, commits come regularly, and the GitHub star count is steadily growing. Seems like it's time to clear some space on the server for music.
Related projects