mStream 是 GitHub 上 2.4k Star 的极简自托管音乐流媒体服务器,基于 Node.js + Rust 构建。支持多用户管理、无缝播放、跨设备同步、拖拽上传,iOS/Android 都有官方 App,Docker 一键部署,Umbrel 应用商店官方收录。
🎤 引言
想把自己收藏多年的 FLAC 无损音乐库搬上云?又不想订阅 Spotify/Apple Music 那种「音乐是租来的」的服务?GitHub 上这个 mStream 项目就是把「私人音乐库」变成「私人流媒体服务」的最轻量方案 —— 2.4k Star,Node.js + Rust 混合架构,Docker 一键起,浏览器就能听。
跟 Plex/Jellyfin/Navidrome 那种全家桶相比,mStream 的定位非常纯粹:只做音乐流媒体,不做视频、不做照片、不做书籍。所以它体积小、启动快、内存占用低(< 100MB),适合「我就想随时随地听自己的无损音乐」这种刚需用户。
⭐ 核心功能
1. 真正的音乐流媒体体验
不是简单的文件下载 + 播放,而是把整个音乐库搬到浏览器:
- 浏览器直接播放 FLAC、ALAC、APE、WAV、MP3、AAC、OGG 等几乎所有格式
- 移动浏览器、PWA 安装后像原生 App
- iOS / Android 都有官方客户端(App Store 和 Google Play 都能下)
2. Gapless 无缝播放
经典专辑(比如 Pink Floyd《The Wall》、DJ 混音集)曲目之间不留白,真正的无缝播放,不是「下首歌接上首歌」那种。Rust 音频引擎专门为这个优化过。
3. 多用户 + 多目录
- 单部署支持多个独立账号,家庭/小团队共用一台服务器
- 每个用户管理自己的播放列表、收藏、播放历史
- 可挂载多个音乐根目录,自动扫描入库
4. On-the-fly 转码
后端集成 ffmpeg,自动转码到客户端支持的格式。比如:
- 手机流量紧张 → 自动转 128kbps MP3 省流量
- WiFi + 桌面浏览器 → 直送 FLAC 无损
- 老手机不支持 ALAC → 实时转码成 AAC
5. 拖拽上传 + 自动入库
浏览器里直接把音乐文件拖到页面就上传,不用 SSH 也不用 FTP。上传完自动加入音乐库、扫描元数据、读取专辑封面。
6. Milkdrop 可视化
听歌时背景跑 Milkdrop 音频可视化特效,怀旧又酷炫,适合桌面端大屏聆听。
7. 完整音乐库功能
- 智能搜索(标题/艺术家/专辑/流派)
- 播放队列管理
- 最近播放 / 最常播放
- 收藏 / 评分
- 播放列表导入导出
📥 安装使用
方式一:Docker(推荐)
docker run -d \
--name mstream \
-p 3000:3000 \
-v /path/to/your/music:/music \
-v /path/to/config:/config \
-e USER=admin \
-e PASSWORD=your_p…here \
-e USE_TRANSCODER=1 \
linuxserver/mstream访问 http://your-ip:3000,用 admin/your_p…here 登录即可。
方式二:Docker Compose(NAS 用户)
version: '3'
services:
mstream:
image: linuxserver/mstream:latest
container_name: mstream
restart: unless-stopped
ports:
- 3000:3000
volumes:
- ./music:/music
- ./config:/config
environment:
- PUID=1000
- PGID=1000
- USER=admin
- PASSWORD=your_p…here方式三:从源码安装(开发者)
git clone https://github.com/IrosTheBeggar/mStream.git
cd mStream
npm install
node server.js需要 Node.js 18+ 和 ffmpeg。
Umbrel 一键安装
如果你用 Umbrel Home NAS,直接在 App Store 搜 mStream 一键安装,官方收录的 app,配置最简单。
初次配置
- 启动后访问
http://ip:3000 - 输入账号密码登录
- 进入设置 → 「Music Directories」→ 添加你的音乐根目录
- 点 「Scan Library」 自动扫描专辑/艺术家元数据
- 完事开始听
元数据扫描
首次扫描取决于音乐库大小,1000 张专辑大约 2-5 分钟。建议首次启动前先用 MusicBrainz Picard 或 Mp3tag 整理好标签,否则很多专辑会出现「未知艺术家」「未知专辑」。
🎯 适用场景
无损音乐党 —— 收藏了大量 FLAC/ALAC,mStream 的无损直送能力比大多数云音乐服务都强。
隐私敏感 —— 不想让云端知道你听什么,自托管在 NAS 或 VPS 上,数据完全私有。
复古音乐库 —— 大量古典 / 现场 / DJ 混音需要无缝播放,Gapless 模式是刚需。
多设备用户 —— 家里电脑、手机、平板都能访问同一个音乐库,出差用移动 App 继续听。
小型乐队 / DJ —— 多用户功能可以让乐队成员共享同一套曲库,各自管理播放列表。
轻量需求 —— 不想要 Plex/Jellyfin 那种全家桶,只需要音乐,mStream 体积小、吃资源少。
不适合谁:需要歌词同步、推荐算法、社交功能的用户 —— mStream 是工具不是平台,没有这些花哨功能。
🔍 对比/替代方案
| 工具 | 类型 | 优势 | 劣势 |
|---|---|---|---|
| mStream | 轻量自托管 | 极简、Rust 引擎、无缝播放 | 功能少、无歌词、无推荐 |
| Navidrome | 自托管音乐 | Subsonic API、客户端生态丰富 | 配置稍复杂 |
| Funkwhale | 自托管音乐 | 联邦化、社交功能 | 资源占用大 |
| Plex | 全能媒体 | 一站式音乐+电影+照片 | 重、吃资源 |
| Jellyfin | 开源 Plex | 视频+音乐全包 | 音乐功能不如专业工具 |
| Airsonic | 自托管音乐 | 老牌、客户端多 | Java 吃资源 |
| Spotify | 托管服务 | 曲库大、推荐好 | 订阅贵、无 FLAC |
关键差异:mStream 的核心定位是 「最简音乐流媒体」 —— 比 Navidrome 还轻量,但功能也最少。适合「我就要个能听 FLAC 的 Web 服务」这种纯粹需求。
⚠️ 注意事项
1. 元数据质量
mStream 的自动扫描依赖文件标签。整理标签前先听歌:
- 推荐工具:MusicBrainz Picard、Mp3tag
- 确保
艺术家、专辑、专辑艺术家、曲目编号字段正确 - 专辑封面内嵌进文件最稳妥
2. 移动 App 选型
mStream 官方有多个客户端:
- iOS: mStream Player(App Store)
- Android: 官方 APK(GitHub Releases)
- 通用:Substreamer、play:Sub 等 Subsonic 客户端部分兼容
3. 反向代理 + HTTPS
如果想公网访问,务必套 HTTPS:
# Nginx 配置示例
location /mstream/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}或者直接用 Caddy / Nginx Proxy Manager 反代。
4. 转码性能
开启转码(USE_TRANSCODER=1)会消耗 CPU 资源。老机器/低配 VPS 建议:
# 限制转码并发
-e MAX_TRANSCODERS=1或者干脆关掉转码,直送原文件(适合桌面浏览器场景)。
5. 内存建议
- 1k 张专辑以下:512MB 内存足够
- 10k 张专辑:建议 2GB+
- 大型音乐库(> 50k 曲目):4GB+ 才不会卡
6. 不支持歌词
mStream 目前没有歌词显示功能,需要歌词的用户可以:
- 用 LRCLib 这类服务
- 或者转用 Navridrome(支持歌词同步)
✅ 总结
mStream 是「最纯粹的私人音乐流媒体」—— 不做视频、不做社交、不做推荐,只把音乐这件事做到极致轻量。2.4k Star 不算爆火,但 2,210+ commits 和稳定维护说明这是个认真打磨的项目。
优点:
- ✅ 体积小、内存占用低(< 100MB)
- ✅ 无缝播放(Rust 音频引擎)
- ✅ 浏览器 + iOS + Android 全平台
- ✅ On-the-fly 转码省流量
- ✅ Umbrel 官方上架
缺点:
- ⚠️ 功能简单,无歌词/推荐/社交
- ⚠️ 元数据自动整理能力弱
- ⚠️ 移动 App 功能比 Navidrome 客户端生态少
推荐指数:⭐⭐⭐⭐(4/5)—— 只想要个能随时听无损音乐的小工具?mStream 是当下最轻量的选择,扔到 NAS 上常年开着几乎无感。
🔗 GitHub 仓库:https://github.com/IrosTheBeggar/mStream
🌐 官网:https://mstream.io
📱 iOS App:https://apps.apple.com/ge/app/mstream-player/id1605378892
🐳 Docker Hub:https://hub.docker.com/r/linuxserver/mstream
⭐ 当前 Star:2.4k