自建LX Music同步服务增强版:带Web管理后台+网页版播放器,一键部署!
大家平常听歌用洛雪音乐(LX Music)吗?我感觉大部分应该用过,但是肯定大家也想多端同步一下歌单数据,但是去部署一下那个同步服务器可能是部署在公共 PaaS 平台上的时候,就不好管理里面的数据,可能要连接数据库之类的很麻烦不好数据持久化。但是大家有同步需求的话肯定有自己的webdav服务器,所以我就想基于lx-music-sync-server先做一个带有前端面板的服务器,可以在线管理数据之类的,加上webdav同步。原本只是一个简单的功能也没受到什么关注之类的,正好最近又没啥事情,就在此基础上加了一个在线播放的功能。因此在家开发了整整2天。大家可能觉得很快?因为大量使用了AI生成技术,但是对我来说也不短了,是整整2天,这些天啥事没做有时间就开发这个,睡觉都是在4点多,可能是太想把这个完成了吧。最后做出来的效果挺不错的,想给各位佬友分享一下这个项目,有条件的可以自己部署一下。
基于 lyswhut/lx-music-sync-server 搓出来的增强版同步服务端!
项目地址:https://github.com/XCQ0607/lxserver
文档网址:https://xcq0607.github.io/lxserver/
🤔 所以到底这是个啥?
简单来说,这是一个二合一的快乐方案:
-
数据同步服务端:完美支持 LX Music 客户端的同步功能。
-
Web 管理面板:可视化管理用户、数据、日志,还能快照回滚。
-
Web 播放器:内置了一个网页版的 LX Music(参考了桌面版实现),随时随地在浏览器听歌。
全部功能打包在一个 Docker 镜像里,一键部署,开箱即用!
1.可视化仪表盘 & 用户管理
告别黑框框,服务状态一目了然。支持直接在网页上添加/删除用户,管理多人使用非常方便。
2.快照回滚
手滑把歌单删了?客户端同步出问题了?
后台自动生成快照,支持一键回滚到历史状态,不仅能回滚,还能把快照下载下来导入回客户端。
3.WebDAV 云备份
支持把你的珍贵歌单数据自动备份到 WebDAV 网盘(坚果云、Alist、Nextcloud 等)
4.内置 Web 播放器
这个是我最喜欢的功能!看了官方桌面版的API接口,就拿过来用了,用浏览器就能听歌。
-
多源搜索:想听啥搜啥。
-
歌单同步:登录后自动同步你收藏的歌单到LX客户端
-
PWA 支持:手机安上就是个独立 App。
-
歌曲可视化:可视化歌曲
-
评论区展示:可以看歌曲评论
这里用的和官方一样的逻辑,你上传自己的js自定义源文件在云端运行。这里使用了vm2库来创建沙箱环境,这是一个专门用于在 Node.js 中运行不受信任代码的库。 仅暴露了console Buffer JSON Math等基础 JavaScript 对象,有 沙箱白名单机制和 执行超时限制, 连网络请求也是受控制的状态,不用担心影响到服务器。
如何食用?
最推荐 Docker 一键部署,支持 amd64 和 arm64:
docker run -d \
-p 9527:9527 \
-v $(pwd)/data:/server/data \
--name lx-sync-server \
--restart unless-stopped \
ghcr.io/xcq0607/lxserver:latest
部署好后访问 http://IP:9527 即可。
Docker 部署环境变量:
| 环境变量 | 对应配置项 | 说明 | 默认值 |
|---|---|---|---|
PORT |
port |
服务端口 | 9527 |
BIND_IP |
bindIP |
绑定 IP | 0.0.0.0 |
FRONTEND_PASSWORD |
frontend.password |
Web 管理界面访问密码 | 123456 |
SERVER_NAME |
serverName |
同步服务名称 | My Sync Server |
MAX_SNAPSHOT_NUM |
maxSnapshotNum |
保留的最大快照数量 | 10 |
PROXY_HEADER |
proxy.header |
代理转发 IP 头 (如 x-real-ip) |
- |
WEBDAV_URL |
webdav.url |
WebDAV 地址 | - |
WEBDAV_USERNAME |
webdav.username |
WebDAV 用户名 | - |
WEBDAV_PASSWORD |
webdav.password |
WebDAV 密码 | - |
SYNC_INTERVAL |
sync.interval |
WebDAV 自动备份间隔(分钟) | 60 |
ENABLE_WEBPLAYER_AUTH |
player.enableAuth |
是否启用 Web 播放器访问密码 | false |
ENABLE_WEBPLAYER_AUTH |
player.enableAuth |
是否启用 Web 播放器访问密码 | false |
WEBPLAYER_PASSWORD |
player.password |
Web 播放器访问密码 | 123456 |
DISABLE_TELEMETRY |
disableTelemetry |
是否禁用匿名数据统计,系统更新提示以及系统公告提示 | false |
🤝 致谢
本项目在巨人的肩膀上完成:
-
核心同步逻辑基于 lyswhut/lx-music-sync-server
-
Web 播放器实现参考及接口支持来自 lyswhut/lx-music-desktop
感谢 lyswhut 大佬开发了这么好用的工具!
各位如果觉得这个项目不错,求去 GitHub 点个 Star ⭐,或者给帖子点点赞 👍,感谢大家支持!
如果有 Bug 或者建议,欢迎在下面或者 Issue 提出来~