mrkeyoor.com_
Sat 17 Oct 13:31 UTC
Self-Hostedevaluationupdated 10 Oct 2026

lxserver review

lxserver combines LX Music playlist synchronization with a browser music player, local library management, and connections from compatible music apps. The project is primarily documented in Chinese, with an English README and sync guide available. It suits listeners who want their LX lists and server-hosted playback in the same place.

+20stars / 7d
Verdict

Our lxserver run installed 570 packages and built successfully in 35 seconds, but its test command failed because the requested test files were missing. Choose it for LX playlist synchronization plus browser playback if you will configure authentication and verify your music sources. For a local collection alone, I would start with Navidrome, and commercial adopters should read the supplementary README terms before choosing this fork.

We ran it

Lab card: what happened when we ran lxserverScreenshot of lxserver (xcq0607.github.io/lxserver)
Install✓ · 16s570 packages · 264 MB
Build✓ · 35s
Tests✗ · 1sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo537 files~87,210 lines of source · 69.9 MB · 4 CI workflows · Dockerfile

Answers from our run

Does lxserver build from source?

Dependencies installed in 16 seconds (570 packages), and the build succeeded in 35 seconds. We cloned commit 9006e61 into a clean Debian container with 3 CPUs and no project-specific setup.

Do lxserver's tests pass?

No. The project's own test command exited unsuccessfully after 1 seconds, and its output did not expose an individual test count.

Does lxserver have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use lxserver?

Operators expecting safe public access from the sample settings: player authentication defaults to off and the README supplies a default administrator password.

What are the alternatives to lxserver?

LX Music Sync Server, Navidrome. Our lxserver run installed 570 packages and built successfully in 35 seconds, but its test command failed because the requested test files were missing.

Setup3/516-second install; storage, credentials, and sources need configuration
Docs4/5English setup and permission tables accompany the Chinese README
Community3/5940 stars, October 10 push, and recent cache and playback work
Maturity2/5Build passed; the test command could not find its files

Who it’s for

LX Music users who want synchronized playlists alongside a browser player.
Self-hosters willing to configure user permissions, custom music sources, and persistent storage.
Listeners who want local and online search accessible through documented Subsonic integration.

Who it’s NOT for

Operators expecting safe public access from the sample settings: player authentication defaults to off and the README supplies a default administrator password.
Users expecting reliable audio for every online search result: the README says custom sources supply audio links whose accuracy it cannot verify.
Commercial adopters choosing solely by the Apache badge: the README adds a supplementary agreement, a non-commercial section, and data-clearing conditions.
Teams requiring a runnable regression suite at the measured revision: the test command could not find test/*.test.cjs.
People who need both zero telemetry and built-in update alerts: the documented opt-out disables notifications too.

Setup reality

Our sandbox installed commit 9006e61 in 16 seconds, adding 570 packages and occupying 264 MB. The build passed in 35 seconds. Tests failed after 1 second because node --test could not find /work/repo/test/*.test.cjs. Npm audit reported 0 known vulnerabilities.

The README documents desktop, Docker, and source routes. Choose persistent data, log, cache, and music directories, create user credentials, replace the administrator password, and enable player authentication where needed. Optional WebDAV backups need a server URL and credentials. Online audio comes through custom sources.

Our container used Node 22. Client URLs differ between username-path and root-path sync modes, with the root mode requiring unique passwords. Subsonic shares the main port by default. Environment variables override stored configuration, and disabling telemetry also disables update notifications.

LX playlists and browser playback share one service

lxserver puts LX Music playlist synchronization beside a browser player and a local music library. Its primary README is Chinese, with an English README and sync guide available. The fork adds online search, custom source scripts, server caching, and Subsonic access to the original sync-server idea. Choose it because your listening already involves LX Music. That existing workflow gives the extra administration a purpose.

Our checkout occupied 69.9 MB across 537 files, before the installed environment reached 264 MB. The project has grown beyond a background service that copies favorites between devices. Its documented browser controls include playback speed, a sleep timer, and lyrics, while the library handles downloaded and cached audio. Those conveniences are attractive together. They also create more behavior to check than basic playlist synchronization requires, especially when a remote source supplies the audio link.

What happened when we ran it

Our sandbox installed lxserver in 16 seconds, adding 570 packages and occupying 264 MB, then built successfully in 35 seconds. We ran commit 9006e61 on October 8, 2026, using the lab-node:22 image in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. Npm audit reported 0 known vulnerabilities across all severity levels. That is a successful repository setup on the measured path.

The test command failed with exit code 1 after 1 second. Its output identified the package as lx-music-sync-server@2.1.2, invoked node --test test/*.test.cjs, and reported that /work/repo/test/*.test.cjs could not be found. No failing assertion appears in that tail. The command could not find the files it was told to execute, so the result gives us no passing suite to point to.

Our scan found 4 CI workflow files, a Dockerfile, and a compose file, but no tests directory. Container examples make deployment approachable, yet their presence does not resolve the missing test files. The lab findings also contain no playback or client-compatibility measurement. Treat claims about mobile behavior and Subsonic support as documented capabilities to verify with your own clients, rather than outcomes established by our install and build.

Player authentication defaults to off

The English configuration table lists player authentication as disabled and documents a default administrator password. Set ADMIN_PASSWORD yourself and enable ENABLE_WEBPLAYER_AUTH with a separate chosen password before exposing the player. The dashboard and player have separate paths and access settings. A container that starts successfully can still have settings you would never accept on an internet-facing music service.

The 570 packages installed in our run are unrelated to that access decision. A clean dependency audit cannot tell you whether your public favorites or music directories have the permissions you intended. The README exposes separate controls for public library access, downloads, and server caching. Configure those for the people who will actually use the server. Optional WebDAV backup also needs a destination and credentials, and its exclusions determine which cached or downloaded files enter backups.

Custom sources determine whether online audio works

The README's data-source section says online audio links come from the selected custom source, and that the project cannot verify their accuracy. That is a consequential limit for someone expecting every search result to play reliably. Finding a track in aggregated results and obtaining a usable stream are separate operations. I'd try the particular sources and tracks I rely on before migrating a household's playlists to this service.

Version 2.1.2 appears in our test output and in a recent download report. Issue 423, now closed, described completed browser downloads remaining marked as processing and some downloads producing empty files. This concerns the fork's download workflow, rather than an unrelated LX desktop component. It is evidence of a reported problem and tracker activity. Its closed status alone does not establish that every deployed version resolves the behavior.

The English README adds conditions beyond the Apache label

GitHub identifies Apache-2.0 licensing, but the README also presents a supplementary agreement and says that agreement takes precedence in a conflict. Its wording describes technical learning and research, includes a non-commercial section, and tells users to clear generated copyrighted data within a stated period. Those provisions deserve direct reading before you approve commercial adoption. The badge alone does not explain the text accompanying the project.

The roughly 87,210 source lines measured in our checkout cover software you can inspect, not ownership of the remote music it searches. The README distinguishes platform metadata, custom audio links, and stored user lists. This makes lxserver a poor default for someone seeking an uncomplicated commercial redistribution basis. Likewise, a user who prohibits telemetry should set DISABLE_TELEMETRY=true deliberately. The documentation says that switch also disables update notifications, so it changes how you learn about new releases.

October maintenance is active, while client behavior still needs checking

GitHub recorded a push on October 10, 2026, and 3 open issues and PRs, with 940 stars. The v2.1.2 release was published on October 7, although its notes carry a September date. Recent activity includes cache fixes and an open playback-session PR. These dates and tracker changes support a finding of active maintenance. They do not turn the missing test files at our measured commit into a successful regression check.

The original LX sync server is the narrower choice when you only need favorites synchronized. Navidrome fits a local music collection served to browser and Subsonic clients. I'd choose lxserver when its LX integration and custom-source playback solve a problem those alternatives leave open. Before moving your library, confirm a playlist round trip, playback in your chosen client, and recovery from the backup destination you configured.

Alternatives

ProjectWhat it isPick it when
LX Music Sync ServerThe original server for synchronizing LX Music favorites between clients.pick this instead when playlist synchronization is the whole requirement.
Navidrome gh↗A personal music collection server with browser playback and Subsonic clients.pick this instead when serving your local collection matters more than LX sync and custom online sources.

What people are saying

  1. [github-trending] XCQ0607/lxserver

Sources

  1. lxserver Chinese README
  2. English README and supplementary agreement
  3. v2.1.2 release
  4. Download-state report, issue 423
  5. Playback and session PR 428
  6. Original LX sync server
  7. Navidrome repository

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →