面向飞牛 NAS、Docker 与自托管的 Web 音乐工具:本地音乐库、标签整理、试听播放,并兼容落雪(LX Music)、澜音、MusicFree、BakaMusic 音源插件。浏览器内完成「找歌 → 试听 → 下载 → 整理」。
空壳软件,不内置任何在线音源与版权曲库。
搜歌 / 试听 / 下载依赖你自行导入的兼容音源脚本;未导入时仍可使用本地曲库、标签、播放等本地能力。基于落雪音乐修改,与落雪桌面版无官方从属关系。
当前版本见 Releases · 开源协议:MIT
飞牛应用中心显示名:柠檬音乐(浏览器标题可为「柠檬音乐下载」)
仓库:https://github.com/jia070310/lemon-muisc
| 部署方式 | 说明 |
|---|---|
| 飞牛 FPK | 原生应用,运行时依赖应用中心 Node.js v22(有系统证书时自动 HTTPS) |
| Docker / 服务器 | 拉镜像即可,见 docs/docker.md |
| 开放 API | docs/open-api.md · 本机 http://<主机>:7983/api/docs · OpenAPI |
| 上架介绍文案 | docs/store-app-intro.md |
QQ 互动群「飞牛柠檬🍋muisc」(群号 1126326017)

日常主流程:搜索 / 发现 → 试听下载 → 音乐库 / 文件管理整理。截图清单见 docs/screenshots/README-SCREENSHOTS.md。
| 每日推荐 | 搜索 | 文件管理 |
|---|---|---|
![]() |
![]() |
![]() |
| 全屏歌词 | 风格样式 |
|---|---|
![]() |
![]() |
分析本地音乐后,在坐标图上找歌;点封面进入独立心情队列。
| 查重 | 备份 | 睡眠定时 | 手机端 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
请仅用于个人已合法授权的音乐资源管理。请遵守当地法律法规及各平台服务条款,不要将本项目用于侵权或商业用途。
- 不内置音源:需在「设置 → 音源管理」自行导入兼容脚本并启用(落雪 / 澜音 / MusicFree / BakaMusic)
- 可同时启用多个音源;各用户可独立开关;合集类插件可按平台单独开关
- 未配置音源时:本地扫描、播放、标签、清理、整理等仍可用
- 通过已激活音源检索(常见脚本可覆盖酷我、酷狗、QQ、网易云、咪咕;亦可导入汽水、B站、喜马拉雅等)
- 按关键词分页搜索 歌曲 / 专辑 / 歌单
- 单曲试听、加入试听列表、选音质下载;多选批量下载
- 歌单结果可浏览曲目、批量下载,或 导入到音乐库歌单
- 粘贴歌单链接或 ID,解析完整曲目列表
- 推荐歌单、排行榜、新歌 / 新碟(依赖音源能力)
- 试听、下载、收藏、加入歌单;可一键保存为音乐库网络歌单
- 底栏播放器:播放控制、进度、音量;试听列表持久化(列表循环 / 单曲循环)
- 全屏播放:大封面、逐行 / 逐字歌词、频谱;滚动后空闲回当前句
- 情绪地图 / 心情试听:本地曲情绪坐标;独立心情队列;心形喜欢 / 碎心跳过
- 试听短片段时可跨音源 / 平台补源;睡眠定时;桌面 / 手机自适应
- 本地 WAV 可直播;APE 等需主机 ffmpeg 转码后再播
- 弱网 / 车机可选本地转码流畅播放;局域网访问时可对本地曲直出原文件
- 任务队列 + WebSocket 进度;失败分类与重试
- 音质按曲目真实可用档展示(含 FLAC / Hi-Res / 母带等,有则可选)
- 路径、文件名格式、并发、同名策略、按歌手 / 专辑分组(避免「未知专辑」空目录等)
- 内嵌封面 / 歌词与文本标签(歌名、歌手、专辑、专辑艺术家、年份、风格等)
- 歌单循序下载、分批与间隔;可选按歌单建文件夹
- 扫描「设置 → 文件路径」中的音乐库目录:歌曲、专辑、歌手、风格
- 每日推荐(本地 + 平台混搭,需音源)、推荐歌单、漫游播放
- 智能歌单:最新添加、最近播放、收藏(歌曲 / 专辑 / 歌手);自定义歌单
- 复制网络歌单、同步本地标识;网络歌单可按间隔检查更新
- 热更新:后台监测与进入库增量检查(可关,减轻低性能 NAS 压力)
- 路径权限:管理员可为用户指定管理员路径 / 专属路径 / 允许自选
- 标签编辑:批量改 MP3 / FLAC / WAV / APE / M4A 等;匹配缺失、按文件名重设、手动检测、网络补全
- 清理:重复曲目去重;按自定义大小阈值清理小文件(试听片段等);支持版本变体归组
- 整理:按歌手 / 专辑迁移到目标目录;伪 FLAC 检测;整理后刷新音乐库
- 音质升级:按库内格式筛选并循序升到目标无损档(覆盖原文件,需音源)
| 模块 | 内容 |
|---|---|
| 文件路径 | 音乐库目录(可多路径);下载共享目录 + 可选个人目录 |
| 音源管理 | 导入脚本、启用开关、健康度、标签匹配并发、平台解析开关 |
| 风格样式 | 主题、配色、封面样式、可视化、歌词颜色、音乐库列数 |
| 试听下载 | 试听音质、跨平台补源、流畅播放 / 本地转码;下载与内嵌选项 |
| 账号管理 | 资料、改密、备份导入导出;管理员管用户与路径权限 |
| 关于 | 版本检测、Release / FPK 更新说明、互动群 |
- 原生 FPK,不依赖 Docker;默认端口 7983
- 依赖应用中心 Node.js v22;安装向导填写绝对路径即可
- 有系统证书时应用内自动 HTTPS;桌面入口跟随飞牛当前协议
- 卸载可选保留配置,不删除用户音乐文件
| 部分 | 说明 |
|---|---|
| 前端 | Vue 3 + Vue Router + Vite |
| 后端 | Node.js 20+、Express 5、WebSocket |
| 数据 | better-sqlite3 |
| 标签 | node-id3、music-metadata |
| 可视化 | Web Audio API + Canvas |
| 飞牛 | 原生 FPK + 商店 Node.js v22 |
| 服务器 | Docker(docs/docker.md)或 npm start |
需要 Node.js 20 或以上。
git clone https://github.com/jia070310/lemon-muisc.git
cd lemon-muisc
npm install
npm run dev| 地址 | 作用 |
|---|---|
| http://localhost:5174 | Vite 开发前端 |
| http://localhost:7983 | Express 后端 |
生产模式:
npm run build
npm start- 默认账号
admin123/admin123登录后立即修改用户名和密码 - 设置 → 音源管理:自行导入并启用兼容脚本(本仓库不提供音源)
- 设置 → 文件路径:添加音乐库与下载目录
- 在 搜索 / 发现 找歌(需音源),或在 音乐库 / 文件管理 整理本地文件
用户数据在配置目录下的 SQLite:
| 环境 | 路径 |
|---|---|
| 本地开发(默认) | config/lx-music.db |
| 飞牛 NAS(示例) | /vol1/@appdata/lemon-music/config/lx-music.db |
相关表:users、sessions、user_settings 等。
| 部署 | 行为 |
|---|---|
| 飞牛 FPK | 有系统证书则自动 HTTPS;HTTPS=0 可强制 HTTP |
| Docker / 服务器 | 默认 HTTP;挂载证书并设 SSL_CERT / SSL_KEY。见 docs/docker.md |
拉镜像部署,不必 clone、不必 --build。把下面保存为 docker-compose.yml 后执行 docker compose up -d。完整说明见 docs/docker.md。
services:
lemon-music: # 服务名,一般不用改
image: ghcr.io/jia070310/lemon-muisc:latest # 镜像;国内可改 ghcr.1ms.run/jia070310/lemon-muisc:latest
container_name: lemon-music # 容器名
ports:
- "7983:7983" # 宿主机端口:容器端口,改左边即可
restart: unless-stopped # 异常退出后自动重启
environment:
PORT: "7983" # 容器内监听端口,需与上面 ports 右侧一致
DOWNLOAD_PATH: /downloads # 容器内下载目录
CONFIG_PATH: /config # 容器内配置与数据库目录
volumes:
- ./data/music:/music # 音乐库:左边改成你的歌曲目录
- ./data/downloads:/downloads # 下载保存目录
- ./data/config:/config # 配置与数据库,更新镜像不要删或:
docker pull ghcr.io/jia070310/lemon-muisc:latest
docker run -d --name lemon-music --restart unless-stopped -p 7983:7983 \
-e PORT=7983 -e DOWNLOAD_PATH=/downloads -e CONFIG_PATH=/config \
-v "$PWD/data/music:/music" -v "$PWD/data/downloads:/downloads" -v "$PWD/data/config:/config" \
ghcr.io/jia070310/lemon-muisc:latest国内拉不动 ghcr.io 时,把 image 换成 ghcr.1ms.run/jia070310/lemon-muisc:latest(步骤见 docs/docker.md「国内源拉取」)。
启用 HTTPS(证书放到 certs/):
docker compose -f docker-compose.yml -f docker-compose.https.yml up -d只改登录密码,不清空歌单 / 收藏 / 音乐文件。飞牛请用商店 Node.js v22,不要用 npm:
PATH=/var/apps/nodejs_v22/target/bin:$PATH CONFIG_PATH=/vol1/@appdata/lemon-music/config node /var/apps/lemon-music/target/scripts/reset-password.js --list
PATH=/var/apps/nodejs_v22/target/bin:$PATH CONFIG_PATH=/vol1/@appdata/lemon-music/config node /var/apps/lemon-music/target/scripts/reset-password.js 用户名 新密码配置在 @appdata,不是 @appconf。本地源码可用:
npm run auth:reset-password -- --list
npm run auth:reset-password -- 用户名 新密码会重新生成默认管理员 admin123 / admin123,不清全局音源 / 路径 / 下载任务:
# 本地源码
npm run auth:reset-users -- --yes
# 飞牛
PATH=/var/apps/nodejs_v22/target/bin:$PATH CONFIG_PATH=/vol1/@appdata/lemon-music/config node /var/apps/lemon-music/target/scripts/reset-users.js --yesnpm run fpk:build生成 fpk/lemon-music-<版本>-x86.fpk 与 -arm.fpk(版本以 fpk/manifest 为准)。说明见 docs/fpk-install.md。
本机打包并上传 GitHub Release:
npm run fpk:publish| 命令 | 说明 |
|---|---|
npm run dev |
前后端开发服务 |
npm run build |
构建前端到 dist/public |
npm run start |
启动后端 |
npm run openapi:build |
重新生成 OpenAPI 规格 |
npm run auth:reset-password |
本地重置密码(飞牛见上文 node ...) |
npm run auth:reset-users -- --yes |
本地清空用户并初始化 |
npm run fpk:build |
打包原生 FPK |
npm run fpk:publish |
打包并上传 GitHub Release |
- 版本发布与变更说明:Releases · docs/RELEASE-NOTES.md
- 截图清单:docs/screenshots/README-SCREENSHOTS.md
- Docker:docs/docker.md · 开放 API:docs/open-api.md
- 应用内 关于 页可检测 GitHub 最新 Release
- 音源脚本需自行准备,本仓库不内置任何第三方平台音源。
- 项目定位为 NAS / 自托管上的个人音乐整理与播放工具;基于落雪音乐修改,无官方从属关系。
- 社区贡献致谢:@theroad(#18)等。
- 仅供个人合法使用。请确保你对所管理的音乐拥有相应权利,并遵守当地法律与各平台条款。
本项目采用 MIT License。













