Sign inSign up

xcq0607/lxserver

By xcq0607

•Updated 1 day ago

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

Image
8

100K+

xcq0607/lxserver repository overview


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

💡 Docker 快速部署镜像:

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

⁠✨ Web 播放器核心特性

⁠1. 现代化界面与全能播放控制

采用清新现代的响应式 UI 设计,支持深浅色模式切换与沉浸式全屏歌词;底栏集成音质切换、倍速播放、睡眠定时等完整控制。

Web 播放器主界面

播放控制栏

⁠2. 多源聚合搜索与歌手专辑

聚合各大音乐平台在线资源,秒级检索歌曲、歌手与完整专辑,支持一键收藏与作品快速回溯。

多源搜索

专辑展示 歌手展示

⁠3. 多平台歌单与播放队列管理

支持同步浏览多平台热门网络歌单与详情;右侧便捷抽屉面板支持播放队列拖拽排序及自动化本地缓存管理。

歌单广场 歌单详情

播放队列抽屉 缓存管理抽屉

⁠4. 本地音乐库与共享收藏

统一管理服务器本地存储、下载及缓存的音频文件,支持无损规格解析、布尔逻辑搜索(&、|、!)、状态查漏与批量操作;支持开启多用户公共共享曲库。

本地音乐库与高级检索

收藏与共享曲库

⁠5. 个性化主题、歌词卡片与自定义源

提供多套精美色彩主题与暗亮模式切换;支持一键生成多比例高清歌词分享卡片;支持导入自定义音源脚本扩展无限可能。

多套色彩主题 全方位系统配置

歌词卡片社交分享 自定义源管理

⁠6. Subsonic 协议与多端互联

全面兼容 Subsonic API 协议,支持使用各类第三方客户端(音流、Feishin 等)连接播放,支持客户端内全网在线搜索与本地资源检索。

Subsonic 客户端连接 Subsonic 在线全网搜索

⁠🔒 访问控制与安全

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

⁠开启方式
  1. 环境变量配置(推荐 Docker 用户使用):
    • ENABLE_WEBPLAYER_AUTH=true: 开启认证
    • WEBPLAYER_PASSWORD=yourpassword: 设置访问密码
  2. Web 界面配置: 登录管理后台(默认端口 9527),进入 "系统配置",勾选 "启用 Web 播放器访问密码" 并设置密码。
⁠权限与公开源限制矩阵 (当 user.enablePublicRestriction 开启时)
用户类型查看列表使用/切换(仅个人)修改默认音质上传/导入公开源删除/修改公开源
管理员✅ 允许✅ 允许✅ 允许✅ 允许✅ 允许
已登录用户✅ 允许✅ 允许✅ 允许❌ 禁止❌ 禁止
未登录访客❌ 隐藏❌ 禁止❌ 禁止❌ 禁止❌ 禁止

⁠📱 移动端适配

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


⁠🚀 快速启动 (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
      # - ADMIN_PASSWORD=123456
      # - ENABLE_WEBPLAYER_AUTH=true
      # - WEBPLAYER_PASSWORD=yourpassword
      # - ADMIN_PATH=/music
      # - PLAYER_PATH=/

⁠📂 持久化卷映射 (Volumes)

为了确保数据在容器更新、重启或镜像升级后永久保存,请挂载以下数据卷:

容器内路径说明
/server/data核心数据目录:持久化存放用户列表、同步快照、系统配置核心数据库 (data/config.js)、历史配置备份以及自定义快照。
/server/logs日志目录:存放服务运行日志、错误日志及请求记录。
/server/cache缓存目录:存放 Web 播放器的自动化缓存文件(歌曲音频、歌词、封面及波形数据等)。
/server/music本地音乐库:挂载本地音乐文件夹,供本地音乐库扫描管理及 Subsonic 客户端直接访问。

⁠🌐 服务连接与客户端配置指南

⁠① 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 会自动平滑迁移)。环境变量优先级最高:

环境变量说明默认值
PORT服务端口9527
ADMIN_PATH后台管理界面访问路径/admin
PLAYER_PATHWeb 播放器访问路径 (默认为根路径 /)/
ADMIN_PASSWORD管理员密码(用于登录控制台和音乐播放器管理员登录)123456
SERVER_NAME同步服务名称(客户端连接展示名称及管理后台标题)LX Sync Server
PLAYER_NAMEWeb 播放器名称(播放器网页标题及登录卡片标题)LX Music Web
ENABLE_DEBUG是否启用 DEBUG 模式 (开启后输出详细调试日志与音源内部日志,默认关闭)false
MAX_SNAPSHOT_NUM保留的最大快照数量10
CONFIG_PATH指定外部配置文件的绝对路径 (默认使用 data/config.js)-
DATA_PATH指定数据存储目录的绝对路径./data
LOG_PATH指定日志输出目录的绝对路径./logs
PROXY_HEADER代理转发 IP 头 (如 x-real-ip)-
USER_ENABLE_ROOT启用根路径 (开启后连接URL即为 ip:port,不允许不同用户密码相同)false
USER_ENABLE_PATH启用用户路径 (开启后连接URL需为 ip:port/用户名,允许密码相同)true
WEBDAV_ENABLE是否启用 WebDAV 同步与备份false
WEBDAV_URLWebDAV 地址-
WEBDAV_USERNAMEWebDAV 用户名-
WEBDAV_PASSWORDWebDAV 密码-
WEBDAV_SYNC_PATHWebDAV 增量同步远端路径/lx-sync
WEBDAV_BACKUP_PATHWebDAV 全量备份远端路径/lx-sync-backups
SYNC_INTERVALWebDAV 增量同步检测间隔(分钟)60
BACKUP_INTERVALWebDAV 全量备份间隔(小时)24
WEBDAV_EXCLUDE_CACHE排除缓存目录同步 (data/<用户>/cache),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
WEBDAV_EXCLUDE_MUSIC排除下载目录同步 (data/<用户>/music),开启后不参与增量同步及全量备份(已同步的文件不会被删除)false
ENABLE_WEBPLAYER_AUTH是否启用 Web 播放器访问密码false
WEBPLAYER_PASSWORDWeb 播放器访问密码123456
DISABLE_TELEMETRY是否禁用匿名数据统计,系统更新提示以及系统公告提示false
ENABLE_PUBLIC_USER_RESTRICTION是否启用公开用户权限限制 (限制上传、删除公开源、缓存到服务器等)true
ENABLE_PUBLIC_NON_ADMIN_LOCAL_MUSIC是否开启非管理员访问本地音乐 (允许未登录管理员的公开账号访问本地音乐)false
ENABLE_PUBLIC_NON_ADMIN_BROWSER_DOWNLOAD是否开启非管理员浏览器下载 (允许未登录管理员的公开/普通账号使用浏览器下载歌曲)true
ENABLE_PUBLIC_NON_ADMIN_SERVER_CACHE是否开启非管理员服务器缓存 (允许未登录管理员的公开/普通账号将歌曲缓存到服务器)false
ENABLE_PUBLIC_FAVORITES是否开启公开收藏和歌曲 (开启后允许公开/未登录用户查看及播放公开收藏)false
ENABLE_PUBLIC_NON_ADMIN_ACCESS是否开启非管理员访问公开收藏和歌曲 (允许未登录管理员的公开账号查看)false
ENABLE_CUSTOM_MUSIC_DIR是否开启自定义歌曲目录总开关false
ENABLE_LOGIN_USER_CACHE_RESTRICTION是否启用登录用户缓存限制 (开启后限非管理员登录用户的缓存设置)false
ENABLE_CACHE_SIZE_LIMIT是否启用缓存空间限制 (开启后超出容量将按 LRU 自动清理)false
CACHE_SIZE_LIMIT缓存空间限制大小 (单位: MB)2000
CONFIG_BACKUP_ENABLE是否启用配置文件自动备份功能 (每天生成一份历史配置副本)true
CONFIG_BACKUP_RETENTION_DAYS配置文件备份保留天数 (自动清理过期备份)7
CONFIG_BACKUP_DIR配置文件备份存储目录路径 (支持绝对路径或相对 ./data)backups
SNAPSHOT_BACKUP_PATH歌单快照自定义存储路径 (支持绝对路径或相对 ./data,各用户独立隔离)-
LIST_ADD_MUSIC_LOCATION_TYPE添加歌曲到列表时的位置 (top / bottom)top
PROXY_ALL_ENABLED是否启用外发请求代理 (针对 Music SDK)false
PROXY_ALL_ADDRESS代理地址 (支持 http:// 或 socks5://)-
SINGER_SOURCE_PRIORITY歌手信息获取来源优先级 (如 tx,wy 或 wy,tx)tx,wy
SUBSONIC_ENABLE是否启用 Subsonic 协议支持true
SUBSONIC_PATHSubsonic 接口访问路径 (默认为 /rest)/rest
SUBSONIC_PORTSubsonic 独立监听端口 (0 为关闭独立端口,与主服务共用端口)0
SUBSONIC_ENABLE_DEBUG是否开启 Subsonic 调试日志模式false
SUBSONIC_ONLINE_SEARCH是否开启 Subsonic 在线全网搜索true
SUBSONIC_ONLINE_SEARCH_MODESubsonic 在线搜索模式 (fallback / merge / local_only)fallback
SUBSONIC_ONLINE_SEARCH_SOURCESSubsonic 在线搜索默认音源列表wy,tx,kw,kg,mg
SUBSONIC_PUBLIC_LEADERBOARDS是否开启 Subsonic 公开排行榜 (将在线排行榜映射为只读歌单)true
SUBSONIC_LEADERBOARD_SOURCESubsonic 公开排行榜默认音源平台 (仅支持单选, 如 tx, wy 等)tx
SUBSONIC_LYRIC_TRANSLATIONSubsonic 歌词中是否包含翻译true
SUBSONIC_CACHE_ON_PLAYSubsonic 播放时是否触发服务器自动缓存保存 (落盘到用户目录)false
SUBSONIC_PLAY_CACHE_FIRSTSubsonic 播放时是否优先使用服务器已有的本地缓存/下载文件直接传输true
SUBSONIC_QUALITY_ENABLEDSubsonic 是否开启音质优选true
SUBSONIC_QUALITY_PRIORITYSubsonic 音质优选优先级列表 (如 flac,320k,128k)flac,320k,128k
ARTIST_MAX_FETCH_PAGES歌手歌曲最大抓取页数20
CACHE_NAMING_PATTERN缓存文件命名规则 (simple / custom)simple
SYSTEM_ALLOW_UNSAFE_VM是否允许运行 VM 模式自定义源脚本 (需注意安全风险)false
LX_USER_<用户名>快速添加用户,值为该用户的密码 (如 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. 接受协议: 若你使用了本项目,即代表你接受本协议。

Tag summary

Content type

Image

Digest

sha256:d1c2ffb60…

Size

78.1 MB

Last updated

1 day ago

docker pull xcq0607/lxserver