帮助文档 Documentation | 同步服务器 SyncServer | 更新日志 Changelog | English
音云(Yinyun) 是一个洛雪魔改的,面向私有部署的音乐服务器,内置 Web 播放器、下载与本地曲库管理,支持独立 Windows 客户端账户快照和 Subsonic 客户端。
Important
v1.5.0 调整了固定访问入口:根地址 / 为 Web 播放器,管理后台为 /admin,旧 /music 网页入口已删除。/api/v1、Subsonic /rest 以及 /server/music 音频持久化目录不受影响。
- 服务端: bobcc4/yinyun-lxserver 支持使用 Docker 搭建,也提供 Windows、macOS 等平台的安装包。
- Windows 客户端: bobcc4/yinyun-windows 当前仅制作了 Windows 客户端;其他平台更推荐使用成熟的第三方客户端。
推荐使用方式: 在 NAS 或服务器上通过 Docker 部署音云服务端,再使用音流、箭头音乐等支持 Subsonic 的第三方客户端连接。客户端填写服务端 IP:端口,并使用音云用户名和密码登录即可。
使用 Lucky 等工具进行反向代理时,请确保放行 /rest/* 路径。
交流群: 点击加入音云 issue 反馈群
支持聚合搜索主流音乐平台,搜索结果可直接播放、收藏或下载,并可按平台和内容类型快速切换。
自动扫描 /music 与 /cache,支持多层目录、快速搜索、高级布尔筛选、批量选择、歌单收藏和元数据管理。
支持标准、高品、无损、24bit 无损、高解析度、空间音频、增强空间音频和母带音质。下载前会显示解析到的文件大小及最终来源平台,服务端下载队列可在关闭浏览器后继续运行。
可筛选并批量选择本地歌曲,按指定目标音质重新下载;目标音质不可用时可按规则降级,并在任务结果中列出成功与失败歌曲。
支持默认音质、缓存与下载、代理、歌词、主题、音效和播放行为设置。外置与内嵌歌词可分别选择逐行、逐字或增强型 LRC,TX 支持原生 QRC 逐字歌词。同步账户可按音源选择启用平台;管理员共享完整音源后,接收者可独立配置自己使用的平台。
管理后台集中展示连接数、用户数、运行时间和资源占用,并提供数据、快照、WebDAV、日志和系统维护入口。
支持创建和管理同步账户、标识管理员身份,并隔离各用户的歌单、设置、自定义源、缓存与下载目录。
可在后台配置访问路径、Subsonic、WebDAV、缓存限制、代理和其他服务端选项,Docker 环境变量仍具有最高优先级。
适配 Subsonic 协议,可使用音流、LMP、Feishin 等客户端连接本地曲库和歌单。搜索支持 wy:、kg:、tx:、kw:、mg: 平台前缀,以及 online: / local: 范围前缀。
管理后台使用 FRONTEND_PASSWORD 保护服务器配置;Web 播放器中的歌单、自定义源、下载与个人设置由同步账户认证并按用户隔离。通过公网访问时,建议同时在反向代理层启用 HTTPS 和访问控制。
本项目基于 Node.js 开发,支持多种部署方式。
直接运行源码需要 Node.js 22.12.0 或更高版本,推荐使用 Node.js 24 LTS。
独立 音云 Windows 客户端 连接 NAS 上已部署的服务端,不会在电脑上启动第二套服务。客户端使用服务器地址、同步账户用户名和密码登录,并在 Windows 安全存储中保留加密账户快照。
当服务端容器和全部持久化数据意外丢失时,重新部署服务端并创建相同的小写用户名,客户端会在确认服务端账户为空后提示恢复。音频、缓存与下载任务不在账户快照内。
本项目支持从 Docker Hub 或 GitHub Packages 拉取镜像:
- Docker Hub:
bobcc4/yinyun-lxserver:latest - GitHub Packages:
ghcr.io/bobcc4/yinyun-lxserver:latest
Important
Docker 正式镜像已改用 latest 标签,原 v1 标签停止更新。现有用户必须把 Compose 或 NAS 容器中的镜像改为 bobcc4/yinyun-lxserver:latest。每次正式发布还会永久保留完整版本标签,例如 bobcc4/yinyun-lxserver:v1.5.4,用于锁定版本或回滚。数据目录结构没有变化,请保留原有 /server/data、/server/logs、/server/cache 和 /server/music 挂载。
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 yinyun \
--restart unless-stopped \
bobcc4/yinyun-lxserver:latestDocker Compose 示例:
新建 docker-compose.yml 文件:
services:
yinyun:
image: bobcc4/yinyun-lxserver:latest
container_name: yinyun
restart: unless-stopped
ports:
- "9527:9527"
volumes:
- ./data:/server/data
- ./logs:/server/logs
- ./cache:/server/cache
- ./music:/server/music
environment:
NODE_ENV: production启动服务:
docker compose up -d升级镜像:
docker compose pull
docker compose up -d升级容器不会删除已挂载目录。请始终保留 /server/data、/server/logs、/server/cache 和 /server/music 的持久化挂载。
# 1. 克隆项目
git clone https://github.com/bobcc4/yinyun-lxserver.git && cd yinyun-lxserver
# 2. 安装依赖并编译
npm ci && npm run build
# 3. 启动服务
npm start- 在 GitHub Releases 下载压缩包。
- 解压后运行
npm install --production。 - 执行
npm start启动。
- Web 播放器:
http://your-ip:9527/ - 管理后台:
http://your-ip:9527/admin(默认管理密码:123456) - Subsonic:
http://your-ip:9527/rest
本项目基于 Node.js 采用前后端分离架构:
- Backend (Node.js HTTP): 用户 API、媒体处理、Subsonic 与 WebDAV 备份。
- Console (Vanilla JS): 固定访问路径为
/admin,负责用户与数据管理。 - WebPlayer (Vanilla JS): 固定访问路径为
/,负责音乐播放业务。
可以直接编辑 config.js。环境变量优先级最高:
| 环境变量 | 对应配置项 | 说明 | 默认值 |
|---|---|---|---|
PORT |
port |
服务端口 | 9527 |
BIND_IP |
bindIP |
绑定 IP | 0.0.0.0 |
SUBSONIC_ENABLE |
subsonic.enable |
是否启用 Subsonic 协议支持 (服务默认开启) | true |
SUBSONIC_PATH |
subsonic.path |
Subsonic 访问路径 (默认为 /rest) |
/rest |
FRONTEND_PASSWORD |
frontend.password |
Web 管理界面访问密码 | 123456 |
SERVER_NAME |
serverName |
同步服务名称 | yinyun |
MAX_SNAPSHOT_NUM |
maxSnapshotNum |
保留的最大快照数量 | 10 |
CONFIG_PATH |
- | 指定外部配置文件的绝对路径 | - |
DATA_PATH |
- | 指定数据存储目录的绝对路径 | ./data |
LOG_PATH |
- | 指定日志输出目录的绝对路径 | ./logs |
PROXY_HEADER |
proxy.header |
代理转发 IP 头 (如 x-real-ip) |
- |
WEBDAV_ENABLE |
webdav.enable |
是否启用 WebDAV 同步与备份 | false |
WEBDAV_URL |
webdav.url |
WebDAV 地址 | - |
WEBDAV_USERNAME |
webdav.username |
WebDAV 用户名 | - |
WEBDAV_PASSWORD |
webdav.password |
WebDAV 密码 | - |
WEBDAV_SYNC_PATH |
webdav.syncPath |
WebDAV 增量同步远端路径 | /lx-sync |
WEBDAV_BACKUP_PATH |
webdav.backupPath |
WebDAV 全量备份远端路径 | /lx-sync-backups |
SYNC_INTERVAL |
sync.interval |
WebDAV 增量同步检测间隔(分钟) | 60 |
BACKUP_INTERVAL |
sync.backupInterval |
WebDAV 全量备份间隔(小时) | 24 |
DISABLE_TELEMETRY |
disableTelemetry |
是否禁用匿名数据统计,系统更新提示以及系统公告提示 | false |
ENABLE_LOGIN_USER_CACHE_RESTRICTION |
user.enableLoginCacheRestriction |
是否启用登录用户缓存限制 (开启后限非管理员登录用户的缓存设置) | false |
ENABLE_CACHE_SIZE_LIMIT |
user.enableCacheSizeLimit |
是否启用缓存空间限制 (开启后超出容量将按 LRU 自动清理) | false |
CACHE_SIZE_LIMIT |
user.cacheSizeLimit |
缓存空间限制大小 (单位: MB) | 2000 |
LIST_ADD_MUSIC_LOCATION_TYPE |
list.addMusicLocationType |
添加歌曲到列表时的位置 (top / bottom) |
top |
PROXY_ALL_ENABLED |
proxy.all.enabled |
是否启用外发请求代理 (针对 Music SDK) | false |
PROXY_ALL_ADDRESS |
proxy.all.address |
代理地址 (支持 http:// 或 socks5://) | - |
SINGER_SOURCE_PRIORITY |
singer.sourcePriority |
歌手信息获取来源优先级 (如 tx,wy 或 wy,tx) |
tx,wy |
LX_USER_<用户名> |
users 数组 |
快速添加用户,值为该用户的密码 (如 LX_USER_test=123) |
- |
部分高级选项仅可通过直接修改 config.js 进行配置:
| 配置项 | 说明 | 默认值 |
|---|---|---|
subsonic.enableDebug |
是否开启 Subsonic 调试日志模式 | true |
subsonic.onlineSearch |
是否开启 Subsonic 在线全网搜索 | true |
subsonic.onlineSearchMode |
Subsonic 在线搜索模式 (fallback 回退模式 / merge 合并模式 / local_only 仅本地) |
"fallback" |
subsonic.onlineSearchSources |
Subsonic 在线搜索默认音源列表 | "wy,tx,kw,kg,mg" |
subsonic.lyricTranslation |
Subsonic 歌词中是否包含翻译 | true |
artist.maxFetchPages |
歌手歌曲最大抓取页数 | 20 |
cache.namingPattern |
缓存文件命名规则 (simple / custom) |
"simple" |
system.allowUnsafeVM |
是否允许运行 VM 模式自定义源脚本 (需注意安全风险) | false |
本项目集成了 PostHog 匿名数据统计,主要用于:
- Bug 追踪: 收集版本号、环境类型。
- 通知推送: 弹出 版本更新提醒 与 紧急维护公告。
- 绝对匿名: 绝不收集 IP、用户名或具体歌单内容。
- 关闭方法: 环境变量设置
DISABLE_TELEMETRY=true。注意:关闭后将无法收到新版本通知。
- 修改自 lyswhut/lx-music-sync-server。
- Web 播放器逻辑参考 lx-music-desktop。
- 接口实现基于
musicsdk。
本项目基于 Apache License 2.0 许可证发行,以下协议是对于 Apache License 2.0 的补充,如有冲突,以以下协议为准。
Apache License 2.0 copyright (c) 2026 bobcc4
词语约定:本协议中的“本项目”指音云 Yinyun;“使用者”指签署本协议的使用者;“官方音乐平台”指对本项目内置的包括酷我、酷狗、咪咕等音乐源的官方平台统称;“版权数据”指包括但不限于图像、音频、名字等在内的他人拥有所属版权的数据。
- 官方平台: 本项目的各官方平台在线数据来源原理是从其公开服务器中拉取数据,经过对数据简单地筛选与合并后进行展示(与未登录状态在官方APP获取的数据相同),因此本项目不对数据的合法性、准确性负责。
- 音频数据: 本项目本身没有获取某个音频数据的能力,所使用的在线音频数据来源来自设置内“自定义源”所选择的“源”返回的在线链接。本项目无法校验其准确性,使用过程中可能会出现播放异常。
- 其他数据: 本项目的非官方平台数据(例如“我的列表”内列表)来自服务器存储数据,本项目不对这些数据的合法性、准确性负责。
- 版权数据: 使用本项目的过程中可能会产生版权数据。对于这些版权数据,本项目不拥有它们的所有权。为了避免侵权,使用者务必在 24 小时内 清除使用本项目的过程中所产生的版权数据。
- 责任承担: 由于使用本项目产生的包括由于本协议或由于使用或无法使用本项目而引起的任何性质的任何直接、间接、特殊、偶然或结果性损害由使用者负责。
- 法律法规: 本项目完全免费,且开源发布于 GitHub 面向全世界人用作对技术的学习交流。禁止在违反当地法律法规的情况下使用本项目。对于使用者在明知或不知当地法律法规不允许的情况下使用本项目所造成的任何违法违规行为由使用者承担。
- 资源使用: 本项目内使用的部分包括但不限于字体、图片等资源来源于互联网。如果出现侵权可联系本项目移除。
- 非商业性质: 本项目仅用于对技术可行性的探索及研究,不接受任何商业(包括但不限于广告等)合作及捐赠。
- 接受协议: 若你使用了本项目,即代表你接受本协议。







