XCQ0607/lxserver

LX Music 数据同步服务端,同时支持了部分lx-music-desktop的网页端实现。

JavaScript

951

552 commits

updated Oct 12, 2026

See the code

README

LX Music Sync Server (Enhanced Edition)

lxserver

Build Status Version Node Version License

GitHub stars GitHub forks GitHub issues Last Commit Commit Activity Total Downloads

帮助文档 Documentation | 同步服务器 SyncServer | 更新日志 Changelog | English


本项目内置了一个功能强大的 Web 播放器,让你可以随时随地在浏览器中享受音乐。同时,它也是一个增强版的 LX Music 数据同步服务端。

✨ Web 播放器核心特性

1. 现代化界面

采用清爽的现代化 UI 设计,支持深色模式,提供极致的视觉体验。

Web Player Interface

2. 多源搜索

支持聚合搜索各大音乐平台的资源,想听什么搜什么。

Search Interface

3. 内容与播放列表

支持多平台歌单的浏览、搜索与一键播放,提供直观的歌单详情面板,包含封面、作者、简介等完整信息。播放队列支持拖拽排序、批量管理及快速定位当前播放。

歌单浏览

歌单详情 播放队列管理

4. 强大的播放控制

支持播放模式切换、音质选择、歌词显示、睡眠定时、播放倍数等功能。

Controller

5. 缓存管理

内置全自动化缓存系统,可自动保存歌词、链接及歌曲文件,通过专门的缓存控制面板实现颗粒化管理,极大提升弱网环境下的播放流畅度。

缓存自动化管理

6. 歌词卡片分享

新增歌词卡片分享功能,支持自定义卡片比例(竖版/横版/方版)、色彩风格(深色/浅色/专辑色)及歌词行数,一键生成精美海报,支持旋转缩放。

歌词卡片社交分享

7. 主题定制与系统功能

支持多套现代化主题(如森之韵、深海鲨、暖阳意、绯红月等),并可根据系统自动切换暗亮模式。系统设置支持自动更新网络歌单、账号设置自动备份及多维度代理配置,确保播放顺滑稳定。

现代化主题切换 全方位系统配置

8. 自定义源管理

支持导入自定义源脚本,扩展更多音乐来源。

Source Management

9. 专辑与歌手搜索与收藏

支持搜索专辑与歌手,并支持一键收藏,方便快速找回你喜爱的音乐人与专辑。

专辑展示 歌手展示

10. Subsonic 协议与全网检索支持

全面适配 Subsonic 协议,支持使用各类 Subsonic 客户端(如音流、Feishin 等)连接并播放本站资源。可通过客户端的音乐目录选择本地、全部在线或指定平台,也可在关键词前使用 wy:、kg:、tx:、kw:、mg: 指定平台,使用 all: / online: 或 local: 强制全部在线或本地搜索。

Subsonic 支持 Subsonic 在线全网搜索

11. 公共曲库与共享收藏

在后台系统配置中开启 “开启公共收藏和歌曲” 之后,所有用户(无论未登录或不同账号)均可共同拥有并共享一个公共曲库与公开歌单列表。

公共曲库与共享收藏

🔒 访问控制与安全

为了保护你的隐私,Web 播放器支持开启访问密码。

开启方式

  1. 环境变量配置(推荐 Docker 用户使用):
    • ENABLE_WEBPLAYER_AUTH=true: 开启认证
    • WEBPLAYER_PASSWORD=yourpassword: 设置访问密码
  2. Web 界面配置: 登录管理后台(默认端口 9527),进入 "系统配置",勾选 "启用 Web 播放器访问密码" 并设置密码。

权限与公开源限制矩阵 (当 user.enablePublicRestriction 开启时)

用户类型查看列表使用/切换(仅个人)修改默认音质上传/导入公开源删除/修改公开源
管理员✅ 允许✅ 允许✅ 允许✅ 允许✅ 允许
已登录用户✅ 允许✅ 允许✅ 允许❌ 禁止❌ 禁止
未登录访客❌ 隐藏❌ 禁止❌ 禁止❌ 禁止❌ 禁止

📱 移动端适配

Web 播放器针对移动端进行了深度优化,手机浏览器访问也能获得原生 App 般的体验。


🚀 快速启动

本项目基于 Node.js 开发,支持多种部署方式。

方式一:桌面客户端

可以通过桌面端更方便地运行 LX Music Sync Server,支持 Windows、macOS 和 Linux。

  • 📦 最新版本下载: GitHub Releases
  • ✨ 桌面端优势:
    • 单窗口管理: 服务器管理与 Web 播放器合二为一,界面更统一。
    • 托盘常驻: 窗口关闭后自动缩回托盘,服务在后台始终运行。
    • 全架构支持: 提供 Windows (x64/x86/ARM64 Setup 及 Portable)、macOS (Intel/Apple Silicon) 及 Linux (amd64/arm64/armv7l) 全家桶。

方式二:使用 Docker

本项目支持从 Docker Hub 或 GitHub Packages 拉取镜像:

  • Docker Hub: xcq0607/lxserver:latest
  • GitHub Packages: ghcr.io/xcq0607/lxserver:latest

Docker Run 示例:

docker run -d \
  -p 9527:9527 \
  -v $(pwd)/data:/server/data \
  -v $(pwd)/logs:/server/logs \
  -v $(pwd)/cache:/server/cache \
  -v $(pwd)/music:/server/music \
  --name lx-sync-server \
  --restart unless-stopped \
  xcq0607/lxserver:latest

Docker Compose 示例:

新建 docker-compose.yml 文件:

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
      - ./logs:/server/logs
      - ./cache:/server/cache
      - ./music:/server/music
    environment:
      - NODE_ENV=production
      # - FRONTEND_PASSWORD=123456
      # - ENABLE_WEBPLAYER_AUTH=true
      # - WEBPLAYER_PASSWORD=yourpassword
      # - ADMIN_PATH=/music
      # - PLAYER_PATH=/

方式三:直接运行 (Git Clone)

# 1. 克隆项目
git clone https://github.com/XCQ0607/lxserver.git && cd lxserver

# 2. 安装依赖并编译
npm ci && npm run build

# 3. 启动服务
npm start

方式四:使用 Release 版本

  1. 在 GitHub Releases 下载压缩包。
  2. 解压后运行 npm install --production。
  3. 执行 npm start 启动。

3. 服务连接与客户端配置指南

① Web 界面访问

  • Web 播放器: http://<服务器IP>:9527(默认根路径,可通过 PLAYER_PATH 环境变量或后台配置自定义路径,如 /music)
    • 若启用了播放器访问密码认证(ENABLE_WEBPLAYER_AUTH),首次访问需输入播放器密码(默认 123456)。
  • 管理后台: http://<服务器IP>:9527/admin(默认路径为 /admin,可通过 ADMIN_PATH 自定义,默认管理员密码: 123456)。

② LX Music 客户端同步配置(桌面端 / 移动端)

进入客户端「设置 → 同步设置」,选择自定义连接:

  • 模式一:用户路径模式(推荐,默认开启 USER_ENABLE_PATH=true)
    • 连接 URL: http://<服务器IP>:9527/<用户名>(例如:http://192.168.1.100:9527/user1)
    • 连接密码: 对应用户的独立密码
    • 特点: 通过 URL 中的用户名精确路由到各用户独立存储空间,允许多个不同用户使用相同密码。
  • 模式二:根路径模式(需配置 USER_ENABLE_ROOT=true)
    • 连接 URL: http://<服务器IP>:9527(例如:http://192.168.1.100:9527)
    • 连接密码: 对应用户的密码
    • 特点: URL 无需携带用户名,服务端通过鉴权密码自动匹配用户。注意:此模式下所有用户的密码必须唯一,不允许不同用户使用相同密码。

③ Subsonic 音乐客户端配置(音流 / Feishin / Symfonium 等)

全面兼容 Subsonic API 协议,客户端中填写:

  • 服务器地址 (Server URL):
    • 默认共享主端口: http://<服务器IP>:9527/rest(子路径由 SUBSONIC_PATH 决定,默认 /rest)
    • 独立监听端口模式(若配置了 SUBSONIC_PORT > 0,例如 4533): http://<服务器IP>:4533/rest
  • 用户名 & 密码: 在后台“用户管理”中配置的用户名及其同步密码。
  • 在线搜索: 支持在 Subsonic 客户端中直接全网搜索与播放,可使用 wy:、tx:、kw:、kg:、mg: 指定平台,或使用 online: / local: 强制在线/本地搜索。

🏗️ 项目架构

本项目基于 Node.js 采用前后端分离架构:

  • Backend (Express + WebSocket): 核心同步逻辑与 WebDAV 备份。
  • WebPlayer (Vanilla JS): 负责音乐播放业务,默认访问路径为根路径 /。
  • Console (Vanilla JS): 位于 /admin 路径,负责用户与数据管理。

🛠️ 配置说明

系统配置文件已默认持久化在数据目录中的 data/config.js(Docker 部署只需挂载 ./data 卷即可在容器更新、重启后永久保留配置,若根目录下存在旧 config.js 会自动平滑迁移)。环境变量优先级最高:

环境变量对应配置项说明默认值
PORTport服务端口9527
ADMIN_PATHadmin.path后台管理界面访问路径/admin
PLAYER_PATHplayer.pathWeb 播放器访问路径 (默认为根路径 /)/
FRONTEND_PASSWORDfrontend.passwordWeb 管理界面访问密码123456
SERVER_NAMEserverName同步服务名称lxserver
ENABLE_DEBUGdebug.enabled是否启用 DEBUG 模式 (开启后输出详细调试日志与音源内部日志,默认关闭)false
MAX_SNAPSHOT_NUMmaxSnapshotNum保留的最大快照数量10
CONFIG_PATH-指定外部配置文件的绝对路径 (默认使用 data/config.js)-
DATA_PATH-指定数据存储目录的绝对路径./data
LOG_PATH-指定日志输出目录的绝对路径./logs
PROXY_HEADERproxy.header代理转发 IP 头 (如 x-real-ip)-
USER_ENABLE_ROOTuser.enableRoot启用根路径 (开启后连接URL即为 ip:port,不允许不同用户密码相同)false
USER_ENABLE_PATHuser.enablePath启用用户路径 (开启后连接URL需为 ip:port/用户名,允许密码相同)true
WEBDAV_ENABLEwebdav.enable是否启用 WebDAV 同步与备份false
WEBDAV_URLwebdav.urlWebDAV 地址-
WEBDAV_USERNAMEwebdav.usernameWebDAV 用户名-
WEBDAV_PASSWORDwebdav.passwordWebDAV 密码-
WEBDAV_SYNC_PATHwebdav.syncPathWebDAV 增量同步远端路径/lx-sync
WEBDAV_BACKUP_PATHwebdav.backupPathWebDAV 全量备份远端路径/lx-sync-backups
SYNC_INTERVALsync.intervalWebDAV 增量同步检测间隔(分钟)60
BACKUP_INTERVALsync.backupIntervalWebDAV 全量备份间隔(小时)24
WEBDAV_EXCLUDE_CACHEwebdav.excludeCache排除缓存目录同步 (data/<用户>/cache),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
WEBDAV_EXCLUDE_MUSICwebdav.excludeMusic排除下载目录同步 (data/<用户>/music),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
ENABLE_WEBPLAYER_AUTHplayer.enableAuth是否启用 Web 播放器访问密码false
WEBPLAYER_PASSWORDplayer.passwordWeb 播放器访问密码123456
DISABLE_TELEMETRYdisableTelemetry是否禁用匿名数据统计,系统更新提示以及系统公告提示false
ENABLE_PUBLIC_USER_RESTRICTIONuser.enablePublicRestriction是否启用公开用户权限限制 (限制上传、删除公开源、缓存到服务器等)true
ENABLE_PUBLIC_NON_ADMIN_LOCAL_MUSICuser.enablePublicNonAdminLocalMusic是否开启非管理员访问本地音乐 (允许未登录管理员的公开账号访问本地音乐)false
ENABLE_PUBLIC_NON_ADMIN_BROWSER_DOWNLOADuser.enablePublicNonAdminBrowserDownload是否开启非管理员浏览器下载 (允许未登录管理员的公开/普通账号使用浏览器下载歌曲)true
ENABLE_PUBLIC_NON_ADMIN_SERVER_CACHEuser.enablePublicNonAdminServerCache是否开启非管理员服务器缓存 (允许未登录管理员的公开/普通账号将歌曲缓存到服务器)false
ENABLE_PUBLIC_FAVORITESuser.enablePublicFavorites是否开启公开收藏和歌曲 (开启后允许公开/未登录用户查看及播放公开收藏)false
ENABLE_PUBLIC_NON_ADMIN_ACCESSuser.enablePublicNonAdminAccess是否开启非管理员访问公开收藏和歌曲 (允许未登录管理员的公开账号查看)false
ENABLE_CUSTOM_MUSIC_DIRuser.enableCustomMusicDir是否开启自定义歌曲目录总开关false
ENABLE_LOGIN_USER_CACHE_RESTRICTIONuser.enableLoginCacheRestriction是否启用登录用户缓存限制 (开启后限非管理员登录用户的缓存设置)false
ENABLE_CACHE_SIZE_LIMITuser.enableCacheSizeLimit是否启用缓存空间限制 (开启后超出容量将按 LRU 自动清理)false
CACHE_SIZE_LIMITuser.cacheSizeLimit缓存空间限制大小 (单位: MB)2000
CONFIG_BACKUP_ENABLEconfigBackup.enable是否启用配置文件自动备份功能 (每天生成一份历史配置副本)true
CONFIG_BACKUP_RETENTION_DAYSconfigBackup.retentionDays配置文件备份保留天数 (自动清理过期备份)7
CONFIG_BACKUP_DIRconfigBackup.dir配置文件备份存储目录路径 (支持绝对路径或相对 ./data)backups
SNAPSHOT_BACKUP_PATHsnapshot.backupPath歌单快照自定义存储路径 (支持绝对路径或相对 ./data,各用户独立隔离)-
LIST_ADD_MUSIC_LOCATION_TYPElist.addMusicLocationType添加歌曲到列表时的位置 (top / bottom)top
PROXY_ALL_ENABLEDproxy.all.enabled是否启用外发请求代理 (针对 Music SDK)false
PROXY_ALL_ADDRESSproxy.all.address代理地址 (支持 http:// 或 socks5://)-
SINGER_SOURCE_PRIORITYsinger.sourcePriority歌手信息获取来源优先级 (如 tx,wy 或 wy,tx)tx,wy
SUBSONIC_ENABLEsubsonic.enable是否启用 Subsonic 协议支持true
SUBSONIC_PATHsubsonic.pathSubsonic 接口访问路径 (默认为 /rest)/rest
SUBSONIC_PORTsubsonic.portSubsonic 独立监听端口 (0 为关闭独立端口,与主服务共用端口)0
SUBSONIC_ENABLE_DEBUGsubsonic.enableDebug是否开启 Subsonic 调试日志模式false
SUBSONIC_ONLINE_SEARCHsubsonic.onlineSearch是否开启 Subsonic 在线全网搜索true
SUBSONIC_ONLINE_SEARCH_MODEsubsonic.onlineSearchModeSubsonic 在线搜索模式 (fallback / merge / local_only)fallback
SUBSONIC_ONLINE_SEARCH_SOURCESsubsonic.onlineSearchSourcesSubsonic 在线搜索默认音源列表wy,tx,kw,kg,mg
SUBSONIC_PUBLIC_LEADERBOARDSsubsonic.publicLeaderboards是否开启 Subsonic 公开排行榜 (将在线排行榜映射为只读歌单)true
SUBSONIC_LEADERBOARD_SOURCEsubsonic.leaderboardSourceSubsonic 公开排行榜默认音源平台 (仅支持单选, 如 tx, wy 等)tx
SUBSONIC_LYRIC_TRANSLATIONsubsonic.lyricTranslationSubsonic 歌词中是否包含翻译true
SUBSONIC_CACHE_ON_PLAYsubsonic.cacheOnPlaySubsonic 播放时是否触发服务器自动缓存保存 (落盘到用户目录)false
SUBSONIC_PLAY_CACHE_FIRSTsubsonic.playCacheFirstSubsonic 播放时是否优先使用服务器已有的本地缓存/下载文件直接传输true
SUBSONIC_QUALITY_ENABLEDsubsonic.quality.enabledSubsonic 是否开启音质优选true
SUBSONIC_QUALITY_PRIORITYsubsonic.quality.prioritySubsonic 音质优选优先级列表 (如 flac,320k,128k)flac,320k,128k
ARTIST_MAX_FETCH_PAGESartist.maxFetchPages歌手歌曲最大抓取页数20
CACHE_NAMING_PATTERNcache.namingPattern缓存文件命名规则 (simple / custom)simple
SYSTEM_ALLOW_UNSAFE_VMsystem.allowUnsafeVM是否允许运行 VM 模式自定义源脚本 (需注意安全风险)false
LX_USER_<用户名>users 数组快速添加用户,值为该用户的密码 (如 LX_USER_test=123)-

高级用户配置说明:环境变量 LX_USER_<用户名> 仅用于快速添加用户及设置密码。若需为特定用户配置独立的高级选项(如开启个人自定义音乐目录、分配操作权限 allowOperateCustomMusicDir 或写入权限 allowWriteCustomMusicDir、调整快照数量等),请直接在 config.js 的 users 数组中手动配置对应字段,或者在后台管理界面的“用户管理”面板中通过图形界面修改。

布尔类型环境变量说明:所有布尔类型的环境变量支持灵活的写法(不区分大小写),开启支持 true / 1 / yes / y / on;关闭支持 false / 0 / no / n / off。

提示:目前服务支持 启用根路径 (URL配置为 ip:port) 和 启用用户路径 (URL配置为 ip:port/username) 两种数据同步连接方式。如果没有启用用户路径,则必须保证每一个同步用户的鉴权密码不重复。


🛡️ 数据收集与隐私说明

本项目集成了 PostHog 匿名数据统计,主要用于:

  1. Bug 追踪: 收集版本号、环境类型。
  2. 通知推送: 弹出 版本更新提醒 与 紧急维护公告。
  • 绝对匿名: 绝不收集 IP、用户名或具体歌单内容。
  • 关闭方法: 环境变量设置 DISABLE_TELEMETRY=true。注意:关闭后将无法收到新版本通知。

🤝 贡献与致谢

👥 贡献者 (Contributors)

📈 Star History

Star History Chart

📄 开源协议

本项目基于 Apache License 2.0 许可证发行,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。

Apache License 2.0 copyright (c) 2026 xcq0607

词语约定:本协议中的“本项目”指 LX Music Web 播放器;“使用者”指签署本协议的使用者;“官方音乐平台”指对本项目内置的包括酷我、酷狗、咪咕等音乐源的官方平台统称;“版权数据”指包括但不限于图像、音频、名字等在内的他人拥有所属版权的数据。

一、数据来源

  1. 官方平台: 本项目的各官方平台在线数据来源原理是从其公开服务器中拉取数据,经过对数据简单地筛选与合并后进行展示(与未登录状态在官方APP获取的数据相同),因此本项目不对数据的合法性、准确性负责。
  2. 音频数据: 本项目本身没有获取某个音频数据的能力,所使用的在线音频数据来源来自设置内“自定义源”所选择的“源”返回的在线链接。本项目无法校验其准确性,使用过程中可能会出现播放异常。
  3. 其他数据: 本项目的非官方平台数据(例如“我的列表”内列表)来自服务器存储数据,本项目不对这些数据的合法性、准确性负责。

二、免责声明

  1. 版权数据: 使用本项目的过程中可能会产生版权数据。对于这些版权数据,本项目不拥有它们的所有权。为了避免侵权,使用者务必在 24 小时内 清除使用本项目的过程中所产生的版权数据。
  2. 责任承担: 由于使用本项目产生的包括由于本协议或由于使用或无法使用本项目而引起的任何性质的任何直接、间接、特殊、偶然或结果性损害由使用者负责。
  3. 法律法规: 本项目完全免费,且开源发布于 GitHub 面向全世界人用作对技术的学习交流。禁止在违反当地法律法规的情况下使用本项目。对于使用者在明知或不知当地法律法规不允许的情况下使用本项目所造成的任何违法违规行为由使用者承担。

三、其他

  1. 资源使用: 本项目内使用的部分包括但不限于字体、图片等资源来源于互联网。如果出现侵权可联系本项目移除。
  2. 非商业性质: 本项目仅用于对技术可行性的探索及研究,不接受任何商业(包括但不限于广告等)合作及捐赠。
  3. 接受协议: 若你使用了本项目,即代表你接受本协议。

XCQ0607/lxserver

LX Music 数据同步服务端,同时支持了部分lx-music-desktop的网页端实现。

JavaScript

951

552 commits

updated Oct 12, 2026

See the code

README

LX Music Sync Server (Enhanced Edition)

lxserver

Build Status Version Node Version License

GitHub stars GitHub forks GitHub issues Last Commit Commit Activity Total Downloads

帮助文档 Documentation | 同步服务器 SyncServer | 更新日志 Changelog | English


本项目内置了一个功能强大的 Web 播放器,让你可以随时随地在浏览器中享受音乐。同时,它也是一个增强版的 LX Music 数据同步服务端。

✨ Web 播放器核心特性

1. 现代化界面

采用清爽的现代化 UI 设计,支持深色模式,提供极致的视觉体验。

Web Player Interface

2. 多源搜索

支持聚合搜索各大音乐平台的资源,想听什么搜什么。

Search Interface

3. 内容与播放列表

支持多平台歌单的浏览、搜索与一键播放,提供直观的歌单详情面板,包含封面、作者、简介等完整信息。播放队列支持拖拽排序、批量管理及快速定位当前播放。

歌单浏览

歌单详情 播放队列管理

4. 强大的播放控制

支持播放模式切换、音质选择、歌词显示、睡眠定时、播放倍数等功能。

Controller

5. 缓存管理

内置全自动化缓存系统,可自动保存歌词、链接及歌曲文件,通过专门的缓存控制面板实现颗粒化管理,极大提升弱网环境下的播放流畅度。

缓存自动化管理

6. 歌词卡片分享

新增歌词卡片分享功能,支持自定义卡片比例(竖版/横版/方版)、色彩风格(深色/浅色/专辑色)及歌词行数,一键生成精美海报,支持旋转缩放。

歌词卡片社交分享

7. 主题定制与系统功能

支持多套现代化主题(如森之韵、深海鲨、暖阳意、绯红月等),并可根据系统自动切换暗亮模式。系统设置支持自动更新网络歌单、账号设置自动备份及多维度代理配置,确保播放顺滑稳定。

现代化主题切换 全方位系统配置

8. 自定义源管理

支持导入自定义源脚本,扩展更多音乐来源。

Source Management

9. 专辑与歌手搜索与收藏

支持搜索专辑与歌手,并支持一键收藏,方便快速找回你喜爱的音乐人与专辑。

专辑展示 歌手展示

10. Subsonic 协议与全网检索支持

全面适配 Subsonic 协议,支持使用各类 Subsonic 客户端(如音流、Feishin 等)连接并播放本站资源。可通过客户端的音乐目录选择本地、全部在线或指定平台,也可在关键词前使用 wy:、kg:、tx:、kw:、mg: 指定平台,使用 all: / online: 或 local: 强制全部在线或本地搜索。

Subsonic 支持 Subsonic 在线全网搜索

11. 公共曲库与共享收藏

在后台系统配置中开启 “开启公共收藏和歌曲” 之后,所有用户(无论未登录或不同账号)均可共同拥有并共享一个公共曲库与公开歌单列表。

公共曲库与共享收藏

🔒 访问控制与安全

为了保护你的隐私,Web 播放器支持开启访问密码。

开启方式

  1. 环境变量配置(推荐 Docker 用户使用):
    • ENABLE_WEBPLAYER_AUTH=true: 开启认证
    • WEBPLAYER_PASSWORD=yourpassword: 设置访问密码
  2. Web 界面配置: 登录管理后台(默认端口 9527),进入 "系统配置",勾选 "启用 Web 播放器访问密码" 并设置密码。

权限与公开源限制矩阵 (当 user.enablePublicRestriction 开启时)

用户类型查看列表使用/切换(仅个人)修改默认音质上传/导入公开源删除/修改公开源
管理员✅ 允许✅ 允许✅ 允许✅ 允许✅ 允许
已登录用户✅ 允许✅ 允许✅ 允许❌ 禁止❌ 禁止
未登录访客❌ 隐藏❌ 禁止❌ 禁止❌ 禁止❌ 禁止

📱 移动端适配

Web 播放器针对移动端进行了深度优化,手机浏览器访问也能获得原生 App 般的体验。


🚀 快速启动

本项目基于 Node.js 开发,支持多种部署方式。

方式一:桌面客户端

可以通过桌面端更方便地运行 LX Music Sync Server,支持 Windows、macOS 和 Linux。

  • 📦 最新版本下载: GitHub Releases
  • ✨ 桌面端优势:
    • 单窗口管理: 服务器管理与 Web 播放器合二为一,界面更统一。
    • 托盘常驻: 窗口关闭后自动缩回托盘,服务在后台始终运行。
    • 全架构支持: 提供 Windows (x64/x86/ARM64 Setup 及 Portable)、macOS (Intel/Apple Silicon) 及 Linux (amd64/arm64/armv7l) 全家桶。

方式二:使用 Docker

本项目支持从 Docker Hub 或 GitHub Packages 拉取镜像:

  • Docker Hub: xcq0607/lxserver:latest
  • GitHub Packages: ghcr.io/xcq0607/lxserver:latest

Docker Run 示例:

docker run -d \
  -p 9527:9527 \
  -v $(pwd)/data:/server/data \
  -v $(pwd)/logs:/server/logs \
  -v $(pwd)/cache:/server/cache \
  -v $(pwd)/music:/server/music \
  --name lx-sync-server \
  --restart unless-stopped \
  xcq0607/lxserver:latest

Docker Compose 示例:

新建 docker-compose.yml 文件:

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
      - ./logs:/server/logs
      - ./cache:/server/cache
      - ./music:/server/music
    environment:
      - NODE_ENV=production
      # - FRONTEND_PASSWORD=123456
      # - ENABLE_WEBPLAYER_AUTH=true
      # - WEBPLAYER_PASSWORD=yourpassword
      # - ADMIN_PATH=/music
      # - PLAYER_PATH=/

方式三:直接运行 (Git Clone)

# 1. 克隆项目
git clone https://github.com/XCQ0607/lxserver.git && cd lxserver

# 2. 安装依赖并编译
npm ci && npm run build

# 3. 启动服务
npm start

方式四:使用 Release 版本

  1. 在 GitHub Releases 下载压缩包。
  2. 解压后运行 npm install --production。
  3. 执行 npm start 启动。

3. 服务连接与客户端配置指南

① Web 界面访问

  • Web 播放器: http://<服务器IP>:9527(默认根路径,可通过 PLAYER_PATH 环境变量或后台配置自定义路径,如 /music)
    • 若启用了播放器访问密码认证(ENABLE_WEBPLAYER_AUTH),首次访问需输入播放器密码(默认 123456)。
  • 管理后台: http://<服务器IP>:9527/admin(默认路径为 /admin,可通过 ADMIN_PATH 自定义,默认管理员密码: 123456)。

② LX Music 客户端同步配置(桌面端 / 移动端)

进入客户端「设置 → 同步设置」,选择自定义连接:

  • 模式一:用户路径模式(推荐,默认开启 USER_ENABLE_PATH=true)
    • 连接 URL: http://<服务器IP>:9527/<用户名>(例如:http://192.168.1.100:9527/user1)
    • 连接密码: 对应用户的独立密码
    • 特点: 通过 URL 中的用户名精确路由到各用户独立存储空间,允许多个不同用户使用相同密码。
  • 模式二:根路径模式(需配置 USER_ENABLE_ROOT=true)
    • 连接 URL: http://<服务器IP>:9527(例如:http://192.168.1.100:9527)
    • 连接密码: 对应用户的密码
    • 特点: URL 无需携带用户名,服务端通过鉴权密码自动匹配用户。注意:此模式下所有用户的密码必须唯一,不允许不同用户使用相同密码。

③ Subsonic 音乐客户端配置(音流 / Feishin / Symfonium 等)

全面兼容 Subsonic API 协议,客户端中填写:

  • 服务器地址 (Server URL):
    • 默认共享主端口: http://<服务器IP>:9527/rest(子路径由 SUBSONIC_PATH 决定,默认 /rest)
    • 独立监听端口模式(若配置了 SUBSONIC_PORT > 0,例如 4533): http://<服务器IP>:4533/rest
  • 用户名 & 密码: 在后台“用户管理”中配置的用户名及其同步密码。
  • 在线搜索: 支持在 Subsonic 客户端中直接全网搜索与播放,可使用 wy:、tx:、kw:、kg:、mg: 指定平台,或使用 online: / local: 强制在线/本地搜索。

🏗️ 项目架构

本项目基于 Node.js 采用前后端分离架构:

  • Backend (Express + WebSocket): 核心同步逻辑与 WebDAV 备份。
  • WebPlayer (Vanilla JS): 负责音乐播放业务,默认访问路径为根路径 /。
  • Console (Vanilla JS): 位于 /admin 路径,负责用户与数据管理。

🛠️ 配置说明

系统配置文件已默认持久化在数据目录中的 data/config.js(Docker 部署只需挂载 ./data 卷即可在容器更新、重启后永久保留配置,若根目录下存在旧 config.js 会自动平滑迁移)。环境变量优先级最高:

环境变量对应配置项说明默认值
PORTport服务端口9527
ADMIN_PATHadmin.path后台管理界面访问路径/admin
PLAYER_PATHplayer.pathWeb 播放器访问路径 (默认为根路径 /)/
FRONTEND_PASSWORDfrontend.passwordWeb 管理界面访问密码123456
SERVER_NAMEserverName同步服务名称lxserver
ENABLE_DEBUGdebug.enabled是否启用 DEBUG 模式 (开启后输出详细调试日志与音源内部日志,默认关闭)false
MAX_SNAPSHOT_NUMmaxSnapshotNum保留的最大快照数量10
CONFIG_PATH-指定外部配置文件的绝对路径 (默认使用 data/config.js)-
DATA_PATH-指定数据存储目录的绝对路径./data
LOG_PATH-指定日志输出目录的绝对路径./logs
PROXY_HEADERproxy.header代理转发 IP 头 (如 x-real-ip)-
USER_ENABLE_ROOTuser.enableRoot启用根路径 (开启后连接URL即为 ip:port,不允许不同用户密码相同)false
USER_ENABLE_PATHuser.enablePath启用用户路径 (开启后连接URL需为 ip:port/用户名,允许密码相同)true
WEBDAV_ENABLEwebdav.enable是否启用 WebDAV 同步与备份false
WEBDAV_URLwebdav.urlWebDAV 地址-
WEBDAV_USERNAMEwebdav.usernameWebDAV 用户名-
WEBDAV_PASSWORDwebdav.passwordWebDAV 密码-
WEBDAV_SYNC_PATHwebdav.syncPathWebDAV 增量同步远端路径/lx-sync
WEBDAV_BACKUP_PATHwebdav.backupPathWebDAV 全量备份远端路径/lx-sync-backups
SYNC_INTERVALsync.intervalWebDAV 增量同步检测间隔(分钟)60
BACKUP_INTERVALsync.backupIntervalWebDAV 全量备份间隔(小时)24
WEBDAV_EXCLUDE_CACHEwebdav.excludeCache排除缓存目录同步 (data/<用户>/cache),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
WEBDAV_EXCLUDE_MUSICwebdav.excludeMusic排除下载目录同步 (data/<用户>/music),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
ENABLE_WEBPLAYER_AUTHplayer.enableAuth是否启用 Web 播放器访问密码false
WEBPLAYER_PASSWORDplayer.passwordWeb 播放器访问密码123456
DISABLE_TELEMETRYdisableTelemetry是否禁用匿名数据统计,系统更新提示以及系统公告提示false
ENABLE_PUBLIC_USER_RESTRICTIONuser.enablePublicRestriction是否启用公开用户权限限制 (限制上传、删除公开源、缓存到服务器等)true
ENABLE_PUBLIC_NON_ADMIN_LOCAL_MUSICuser.enablePublicNonAdminLocalMusic是否开启非管理员访问本地音乐 (允许未登录管理员的公开账号访问本地音乐)false
ENABLE_PUBLIC_NON_ADMIN_BROWSER_DOWNLOADuser.enablePublicNonAdminBrowserDownload是否开启非管理员浏览器下载 (允许未登录管理员的公开/普通账号使用浏览器下载歌曲)true
ENABLE_PUBLIC_NON_ADMIN_SERVER_CACHEuser.enablePublicNonAdminServerCache是否开启非管理员服务器缓存 (允许未登录管理员的公开/普通账号将歌曲缓存到服务器)false
ENABLE_PUBLIC_FAVORITESuser.enablePublicFavorites是否开启公开收藏和歌曲 (开启后允许公开/未登录用户查看及播放公开收藏)false
ENABLE_PUBLIC_NON_ADMIN_ACCESSuser.enablePublicNonAdminAccess是否开启非管理员访问公开收藏和歌曲 (允许未登录管理员的公开账号查看)false
ENABLE_CUSTOM_MUSIC_DIRuser.enableCustomMusicDir是否开启自定义歌曲目录总开关false
ENABLE_LOGIN_USER_CACHE_RESTRICTIONuser.enableLoginCacheRestriction是否启用登录用户缓存限制 (开启后限非管理员登录用户的缓存设置)false
ENABLE_CACHE_SIZE_LIMITuser.enableCacheSizeLimit是否启用缓存空间限制 (开启后超出容量将按 LRU 自动清理)false
CACHE_SIZE_LIMITuser.cacheSizeLimit缓存空间限制大小 (单位: MB)2000
CONFIG_BACKUP_ENABLEconfigBackup.enable是否启用配置文件自动备份功能 (每天生成一份历史配置副本)true
CONFIG_BACKUP_RETENTION_DAYSconfigBackup.retentionDays配置文件备份保留天数 (自动清理过期备份)7
CONFIG_BACKUP_DIRconfigBackup.dir配置文件备份存储目录路径 (支持绝对路径或相对 ./data)backups
SNAPSHOT_BACKUP_PATHsnapshot.backupPath歌单快照自定义存储路径 (支持绝对路径或相对 ./data,各用户独立隔离)-
LIST_ADD_MUSIC_LOCATION_TYPElist.addMusicLocationType添加歌曲到列表时的位置 (top / bottom)top
PROXY_ALL_ENABLEDproxy.all.enabled是否启用外发请求代理 (针对 Music SDK)false
PROXY_ALL_ADDRESSproxy.all.address代理地址 (支持 http:// 或 socks5://)-
SINGER_SOURCE_PRIORITYsinger.sourcePriority歌手信息获取来源优先级 (如 tx,wy 或 wy,tx)tx,wy
SUBSONIC_ENABLEsubsonic.enable是否启用 Subsonic 协议支持true
SUBSONIC_PATHsubsonic.pathSubsonic 接口访问路径 (默认为 /rest)/rest
SUBSONIC_PORTsubsonic.portSubsonic 独立监听端口 (0 为关闭独立端口,与主服务共用端口)0
SUBSONIC_ENABLE_DEBUGsubsonic.enableDebug是否开启 Subsonic 调试日志模式false
SUBSONIC_ONLINE_SEARCHsubsonic.onlineSearch是否开启 Subsonic 在线全网搜索true
SUBSONIC_ONLINE_SEARCH_MODEsubsonic.onlineSearchModeSubsonic 在线搜索模式 (fallback / merge / local_only)fallback
SUBSONIC_ONLINE_SEARCH_SOURCESsubsonic.onlineSearchSourcesSubsonic 在线搜索默认音源列表wy,tx,kw,kg,mg
SUBSONIC_PUBLIC_LEADERBOARDSsubsonic.publicLeaderboards是否开启 Subsonic 公开排行榜 (将在线排行榜映射为只读歌单)true
SUBSONIC_LEADERBOARD_SOURCEsubsonic.leaderboardSourceSubsonic 公开排行榜默认音源平台 (仅支持单选, 如 tx, wy 等)tx
SUBSONIC_LYRIC_TRANSLATIONsubsonic.lyricTranslationSubsonic 歌词中是否包含翻译true
SUBSONIC_CACHE_ON_PLAYsubsonic.cacheOnPlaySubsonic 播放时是否触发服务器自动缓存保存 (落盘到用户目录)false
SUBSONIC_PLAY_CACHE_FIRSTsubsonic.playCacheFirstSubsonic 播放时是否优先使用服务器已有的本地缓存/下载文件直接传输true
SUBSONIC_QUALITY_ENABLEDsubsonic.quality.enabledSubsonic 是否开启音质优选true
SUBSONIC_QUALITY_PRIORITYsubsonic.quality.prioritySubsonic 音质优选优先级列表 (如 flac,320k,128k)flac,320k,128k
ARTIST_MAX_FETCH_PAGESartist.maxFetchPages歌手歌曲最大抓取页数20
CACHE_NAMING_PATTERNcache.namingPattern缓存文件命名规则 (simple / custom)simple
SYSTEM_ALLOW_UNSAFE_VMsystem.allowUnsafeVM是否允许运行 VM 模式自定义源脚本 (需注意安全风险)false
LX_USER_<用户名>users 数组快速添加用户,值为该用户的密码 (如 LX_USER_test=123)-

高级用户配置说明:环境变量 LX_USER_<用户名> 仅用于快速添加用户及设置密码。若需为特定用户配置独立的高级选项(如开启个人自定义音乐目录、分配操作权限 allowOperateCustomMusicDir 或写入权限 allowWriteCustomMusicDir、调整快照数量等),请直接在 config.js 的 users 数组中手动配置对应字段,或者在后台管理界面的“用户管理”面板中通过图形界面修改。

布尔类型环境变量说明:所有布尔类型的环境变量支持灵活的写法(不区分大小写),开启支持 true / 1 / yes / y / on;关闭支持 false / 0 / no / n / off。

提示:目前服务支持 启用根路径 (URL配置为 ip:port) 和 启用用户路径 (URL配置为 ip:port/username) 两种数据同步连接方式。如果没有启用用户路径,则必须保证每一个同步用户的鉴权密码不重复。


🛡️ 数据收集与隐私说明

本项目集成了 PostHog 匿名数据统计,主要用于:

  1. Bug 追踪: 收集版本号、环境类型。
  2. 通知推送: 弹出 版本更新提醒 与 紧急维护公告。
  • 绝对匿名: 绝不收集 IP、用户名或具体歌单内容。
  • 关闭方法: 环境变量设置 DISABLE_TELEMETRY=true。注意:关闭后将无法收到新版本通知。

🤝 贡献与致谢

👥 贡献者 (Contributors)

📈 Star History

Star History Chart

📄 开源协议

本项目基于 Apache License 2.0 许可证发行,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。

Apache License 2.0 copyright (c) 2026 xcq0607

词语约定:本协议中的“本项目”指 LX Music Web 播放器;“使用者”指签署本协议的使用者;“官方音乐平台”指对本项目内置的包括酷我、酷狗、咪咕等音乐源的官方平台统称;“版权数据”指包括但不限于图像、音频、名字等在内的他人拥有所属版权的数据。

一、数据来源

  1. 官方平台: 本项目的各官方平台在线数据来源原理是从其公开服务器中拉取数据,经过对数据简单地筛选与合并后进行展示(与未登录状态在官方APP获取的数据相同),因此本项目不对数据的合法性、准确性负责。
  2. 音频数据: 本项目本身没有获取某个音频数据的能力,所使用的在线音频数据来源来自设置内“自定义源”所选择的“源”返回的在线链接。本项目无法校验其准确性,使用过程中可能会出现播放异常。
  3. 其他数据: 本项目的非官方平台数据(例如“我的列表”内列表)来自服务器存储数据,本项目不对这些数据的合法性、准确性负责。

二、免责声明

  1. 版权数据: 使用本项目的过程中可能会产生版权数据。对于这些版权数据,本项目不拥有它们的所有权。为了避免侵权,使用者务必在 24 小时内 清除使用本项目的过程中所产生的版权数据。
  2. 责任承担: 由于使用本项目产生的包括由于本协议或由于使用或无法使用本项目而引起的任何性质的任何直接、间接、特殊、偶然或结果性损害由使用者负责。
  3. 法律法规: 本项目完全免费,且开源发布于 GitHub 面向全世界人用作对技术的学习交流。禁止在违反当地法律法规的情况下使用本项目。对于使用者在明知或不知当地法律法规不允许的情况下使用本项目所造成的任何违法违规行为由使用者承担。

三、其他

  1. 资源使用: 本项目内使用的部分包括但不限于字体、图片等资源来源于互联网。如果出现侵权可联系本项目移除。
  2. 非商业性质: 本项目仅用于对技术可行性的探索及研究,不接受任何商业(包括但不限于广告等)合作及捐赠。
  3. 接受协议: 若你使用了本项目,即代表你接受本协议。