不需要分别搭建 Navidrome、MusicTagWeb、MusicDL 三套服务,运行一条 docker compose up -d,你就能拥有一个集媒体库管理、元数据刮削、在线搜索下载、歌单同步于一身的私人音乐中枢。
痛点:搭建一套完整的私人音乐库,到底有多折腾?
每个喜欢收藏本地无损音乐的人,大概都经历过这样的折腾:
- 你有一堆音乐文件,散落在 NAS、本地硬盘、甚至 WebDAV 挂载的云盘里,想统一管理 ------ 于是你搭建了 Navidrome,一个媒体库管理服务。
- 元数据一团糟,封面缺失、标题是乱码、艺人信息空白 ------ 于是你又搭建了 MusicTagWeb,专门做标签刮削。
- 想找新歌,想从网易云、QQ 音乐等平台搜罗资源下载入库 ------ 于是你又去折腾 MusicDL。
三套服务,三个数据库,三种配置方式,互不相通。光是维护它们就已经让人心力交瘁,更别提「优雅地听歌」这件事了。
有没有一种可能,把这三件事合在一起?
这就是 MusicFree 诞生的初心。
MusicFree 是什么?
MusicFree 是一个基于 Go + Vue 3 + TypeScript 构建的开源个人音乐服务器,核心理念只有一句话:
让听歌这件事变得简单一点。
它不是某个单一功能的替代品,而是音乐全生命周期的管理中枢:

从获取曲目到完美播放,一个服务就够了。
核心能力一图速览
音乐管理:搜索、去重、刮削,一站式搞定
MusicFree 的管理后台将三大音乐运维能力整合在同一个页面中:
Tab 做什么 怎么做的 音乐搜索 从外部平台搜索歌曲并一键下载入库 通过 WASM 插件接入各平台搜索/下载能力 音乐去重 发现库内重复曲目并批量清理 基于音频指纹(fpcalc)技术,识别转码、改名后的同一首歌 音乐刮削 补全元数据:封面、歌词、艺术家、专辑信息 多插件编排,依次尝试不同数据源直至命中
这不是三个独立的工具,而是同一套系统里无缝衔接的三个功能。

插件体系:能力边界,由你定义
MusicFree 的核心能力不写死在代码里 ,而是全部通过 WASM 插件 提供:
产品能力 插件接口 常见插件 在线搜索 / 下载 RemoteSearch / RemoteDownload mf-plugin-gomusicdl 元数据 / 封面 / 歌词 ScraperSong / GetCover / GetLyrics 网易云、QQ 音乐、MusicBrainz 专辑信息刮削 GetAlbumInfo 同上 艺术家信息与头像 GetArtistInfo 同上 歌单导入 / 同步 FetchPlaylist mf-plugin-netease、mf-plugin-qqmusic
你只需要在插件商店中订阅一个注册表 URL,就能看到所有可用插件,点击安装即可使用。

当多个插件实现同一能力时,还能通过插件编排设定优先级链,按序尝试------覆盖、歌词、专辑、艺术家、头像五个维度可分别指定插件链:
插件编排 - 五个维度的插件链配置
这意味着什么?------ 某个平台 API 变了?更新插件即可,你不需要等 MusicFree 发新版。远程搜索也由插件驱动,选好来源就能直接检索并下载入库:
远程搜索
客户端兼容:不只是 Web 播放器
MusicFree 实现了完整的 OpenSubsonic 1.16.1 接口规范,以及部分 Navidrome 风格 REST API。这意味着你可以用任何你喜欢的客户端来听歌:
- 音流 --- 国产精品 Subsonic 客户端,iOS/Android 双端
- Supersonic --- 跨平台桌面客户端,界面精美
- Feishin、Symfonium、DSub --- 更多兼容应用任你选
不需要被限制在某个特定的前端里。用你最顺手的播放器,连上 MusicFree 服务端,就像连上一个标准的流媒体服务器。
多源接入:本地 + WebDAV,一盘统管
音乐不一定都存在本地硬盘上。MusicFree 支持两类媒体源:
- 本地目录:直接扫描服务器上的音乐文件夹
- WebDAV:挂载远程存储(NAS、云盘),统一管理
配置后可以手动触发扫描,也支持定时增量扫描(默认每 30 分钟)。你还可开启文件监听器(基于 fsnotify),本地目录一有变化就自动同步入库。
媒体源管理 - 本地目录 + WebDAV
一分钟部署
MusicFree 已经发布为 Docker 镜像,一条 Compose 即可启动:
bash
services:
music-free:
image: ansgoo/music-free:latest
container_name: music-free
restart: unless-stopped
ports:
- "4533:4533"
volumes:
- /vol1/docker/music-free:/app/data
- /vol1/music:/app/music
bash
docker compose up -d
然后打开浏览器访问 http://<你的服务器IP>:4533,默认账号 admin / admin,进入后建议立刻修改密码。
不需要额外部署 Nginx,不需要单独启动前后端服务------Go 进程把静态页面和 API 合并在一个端口上,这就是「简单」的含义。
支持的音频格式
扫描器明确支持的格式覆盖了你的绝大多数收藏:
mp3 · flac · m4a · aac · ogg · opus · wav · wma · ape · dsf · dff
路线图与当前状态
MusicFree 是一个活跃开发中的项目,以下是当前完成度概览:
|-----------------------|---------|
| 模块 | 状态 |
| 音乐扫描(全量 + 增量) | ✅ 已完整实现 |
| 音频播放核心接口 | ✅ 已完整实现 |
| OpenSubsonic 基础兼容 | ✅ 已完整实现 |
| 登录认证 | ✅ 已完整实现 |
| 播放记录与统计 | ✅ 已完整实现 |
| 刮削系统(插件管理 + 批量刮削) | ✅ 已完整实现 |
| 媒体源管理(本地 / WebDAV) | ✅ 已完整实现 |
| 首页(随机歌曲、热门、最近播放) | ✅ 已完整实现 |
| 歌曲库 / 专辑 / 艺术家 / 歌单页面 | ✅ 已完整实现 |
| 媒体源扫描联动 | ✅ 已完整实现 |
| 转码 / 高级播放策略 | ✅ 已完整实现 |
项目当前已具备一个音乐服务原型里最关键的能力:能启动、能扫描、能播放、能刮削、能记录。如果你需要的是一个稳定的个人音乐服务器基础,它已经够用了。
功能掠影
更多核心界面一览:
音乐刮削

音乐去重 
专辑管理 
艺术家管理

歌单管理

歌单详情 
总结
|----------|-----------------|------------------------|
| 对比维度 | 传统方案(多服务组合) | MusicFree |
| 部署复杂度 | 3 套服务,各自配置 | 1 条 docker compose |
| 数据互通 | 割裂,各自独立数据库 | 统一曲库 |
| 搜索下载 | 单独工具 | 内置插件,一键入库 |
| 元数据刮削 | 单独工具 | 内置,支持多源编排 |
| 客户端 | 各有兼容范围 | OpenSubsonic 标准,多客户端可选 |
| 扩展性 | 受限于各工具自身 | WASM 插件体系,无需改核心 |
MusicFree 不追求成为功能最庞杂的音乐平台,而是追求用最简洁的方式覆盖最核心的需求。
它就是那个你想听歌的时候,不需要折腾环境的「一条龙」解决方案。
Docker 镜像:ansgoo/music-free:latest