11 KiB
Executable File
音乐服务器
- navidrome 不支持strm
- songloft 待部署
- 飞牛音乐 不支持strm 升级后可以添加远程挂载了!
- Music TagWeb 2.0 支持subsonic strm 已购买永久使用
- jellyfin/emby
- audiodock 声仓 支持strm jellyfin/navidrome
音乐App
- ✅音流 iOS 支持navidrome+subsonic+emby+jellyfin+plex 支持strm
- ✅箭头音乐 iOS+Android 支持navidrome+飞牛音乐+audiobookshelf+subsonic
- ❌流云音盒 鸿蒙 5+
- ❌音乐方舟 鸿蒙 5+
- Prologue Android
- Symfonium Android navidrome+audiobookshelf(From local files and NAS to Plex, Emby, Jellyfin, Audiobookshelf, Subsonic, OpenSubsonic, Navidrome and cloud drives, Symfonium unifies your music and audiobook libraries in one Android player.)
- ✅流云 iOS navidrome+icloud+飞牛音乐+songloft+百度网盘+emby 永久会员38元
- jellyfin及第三方播放器
- audiodock 安卓
有声书服务器
- ✅audiobookshelf 支持RSS 生态支持
- ❌leelaa reader server 暂停使用 鸡肋!支持RSS 不支持wma 已购买永久使用
- ✅ting reader 听悦 支持RSS 有丰富的插件 支持strm+刮削
- 声仓 audiodock
有声书App
- ✅听见有声 audiobookshelf+ting reader+leelaa+emby+audiodown+musicDL iOS 支持strm
- leelaa reader 对应server 支持strm(iOS有bug) 不能自动刮削 不支持wma 安卓支持strm iOS说是支持strm 测试有问题
- ✅still 希声 audiobookshelf iOS
- ✅audiobookshelf Android 自带
- Buchable Android audiobookshelf
- lissen audiobookshelf Android
- ✅plappa iOS 永久38元
- ✅ting reader app Android+ipa(须自签名) 安卓/Mate30有点卡 leelaa要流畅一点
📊 总结方案:
- ⭐音乐:navidrome+飞牛音乐 流云+音流
- ⭐有声:audiobookshelf+ting reader 听见有声(iOS)+still(iOS)+ting reader(android)
- audiobookshelf用于每天定时下载博客RSS到本地,由tingreader监听更新书库
- tingreader:主要保存在115153上,openlist生成strm文件,将strm文件保存到/vol4/1000/MediaLibrary/有声书目录
- audiobookshelf:将115153远程挂载作为本地目录文件,添加到媒体库,效果不好!
英语+历史 115153
- 💡箭头音乐App 两者通用 箭头app bug:audiobookshelf 媒体库只加载了一个,原本是2个,待观察!
- ⚠️鸿蒙上的音乐方舟和流云音盒app待试用
- ✨songloft可以与小爱同学协同,待搭建。
歌曲组合:飞牛音乐+箭头音乐app 流云音乐app 界面差点 歌词跟歌曲对不上 箭头音乐app:经常没有歌词。。。飞牛web:有歌词
参考资料
Ting‑Reader(听悦)自建有声书库完整评测
Ting‑Reader(听悦)国产开源Docker有声书服务端,主打中文有声书,Rust后端,对中文资源友好,和Audiobookshelf(ABS)是现在自建有声书两大主流选择。
✨核心亮点
- 中文元数据刮削很强 对接喜马拉雅源,自动抓取书名、演播者、简介、封面,中文有声书识别远好于ABS(ABS英文刮削强,中文弱),文件名混乱也能匹配。
- 支持WebDAV库 不只是本地目录,可以直接挂载Alist、115、夸克WebDAV网盘当书库,不用把文件拷贝到NAS本地磁盘。
- 官方原生客户端
- Android:官方APK直接下载,离线缓存
- Windows/macOS/Linux:Flutter桌面客户端
- Web/PWA网页端,手机浏览器直接用
- iOS:只有未签名IPA,不能App Store直接装,普通iPhone只能用网页PWA,无法得到CarPlay支持。
- 播放功能:倍速、睡眠定时、跳过片头片尾、多用户独立进度、根据封面自动变色UI、插件系统(热插拔不用重启容器)。
- 资源占用低,Rust编写,小主机/树莓派/群晖/飞牛fnOS都能跑,提供现成docker‑compose配置。
# Ting‑Reader docker‑compose.yml
services:
ting-reader:
image: dqsq2e2/ting-reader:latest
container_name: ting-reader
ports:
- "3000:3000"
volumes:
- ./data:/app/data
- ./plugins:/app/plugins
- ./temp:/app/temp
- /你的有声书本地目录:/app/storage
restart: always
environment:
- RUST_LOG=info
- TING_SERVER__HOST=0.0.0.0
- TING_SERVER__PORT=3000
访问地址:http://nasip:3000
⚠️短板(重点,对比Audiobookshelf)
-
iOS硬伤:没有App Store上架版本,官方只提供未签名IPA,普通用户只能网页PWA;网页没有系统后台播放、CarPlay、离线缓存,iPhone体验大打折扣。
ABS虽然官方iOS也TestFlight,但大量第三方App(希声Still、AudioBooth)App Store可直接下,支持CarPlay离线。
-
没有播客订阅:不能订阅网络播客;ABS原生完整播客功能。
-
无电子书阅读(EPUB/PDF),只做音频;ABS可以同时管理有声书+电子书。
-
第三方客户端几乎没有,只能用官方客户端/PWA;ABS生态庞大,大量社区App。
-
m4b内置章节解析能力弱于ABS;多文件分割的有声书识别合并不如ABS成熟。
📊 Ting‑Reader vs Audiobookshelf(ABS)选型对比
| 项目 | Ting‑Reader(听悦) | Audiobookshelf(ABS) |
|---|---|---|
| 中文刮削 | ⭐⭐⭐⭐⭐喜马拉雅源,中文强 | ⭐⭐ 英文强,中文需要额外插件⭐ |
| WebDAV网盘库 | ✅原生支持 | ❌不支持WebDAV,只能本地挂载 |
| 安卓客户端 | ✅官方APK | ✅官方APK+大量第三方 |
| iPhone | ❌无商店版,仅网页PWA | ✅App Store大量第三方App(希声Still等)支持CarPlay |
| 播客功能 | ❌无 | ✅完整播客订阅 |
| EPUB/PDF电子书 | ❌ | ✅支持 |
| 第三方客户端生态 | 极少 | 非常丰富 |
| 适合资源 | 中文有声书,大量网盘WebDAV资源 | 有声书+播客+电子书,本地文件库 |
✅怎么选
选 Ting‑Reader(听悦),如果你:
- 主力安卓手机,少量/不用iPhone;
- 大量中文有声书,想要自动刮削中文信息,不想手动整理标签;
- 需要直接WebDAV挂载网盘(Alist等)做书库,不想把文件下载本地NAS;
- 不需要播客、电子书阅读。
选 Audiobookshelf(ABS),如果你:
- 有iPhone,想要CarPlay、原生App体验;
- 需要播客订阅、EPUB电子书阅读;
- 本地磁盘存储有声书,不需要WebDAV源;
- 希望多第三方客户端可以自由选择。
💡折中方案:两个docker同时跑,ABS处理本地库+播客,Ting‑Reader处理WebDAV网盘中文有声书,资源占用都很低。
补充注意点
- Ting‑Reader网页版在iPhone上:锁屏后容易断播,系统限制,无法像原生App那样后台稳定播放。
- 外网访问建议套反向代理开启HTTPS,不要裸端口暴露公网。
- WebDAV添加库时,网络网盘资源扫描受网速影响,不要一次性扫描超大库。
如果你需要,我可以把两者的反向代理Nginx配置一并给你。
Nginx 反向代理配置
前提说明
- 假设域名:
abs.example.com→ 代理 Audiobookshelf(ABS),容器内部端口80,宿主机端口13378ting.example.com→ 代理 Ting‑Reader,容器内部端口3000,宿主机端口3000
- 使用
certbot获取 SSL 证书;证书路径/etc/letsencrypt/live/你的域名/ - Nginx 与 docker 服务在同一台机器,后端地址写
127.0.0.1:端口;不在同一台则替换为对应内网IP。 - 两个服务都需要websocket支持,否则网页端实时状态、播放进度同步会异常。
1)Audiobookshelf (abs.example.com) nginx 配置
server {
listen 80;
server_name abs.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name abs.example.com;
ssl_certificate /etc/letsencrypt/live/abs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abs.example.com/privkey.pem;
proxy_set_header Host $host;
proxy_set_header X‑Real‑IP $remote_addr;
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
proxy_set_header X‑Forwarded‑Proto $scheme;
# WebSocket 关键配置,ABS必须
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://127.0.0.1:13378;
proxy_buffering off;
client_max_body_size 100M;
}
}
2)Ting‑Reader (ting.example.com) nginx 配置
server {
listen 80;
server_name ting.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name ting.example.com;
ssl_certificate /etc/letsencrypt/live/ting.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ting.example.com/privkey.pem;
proxy_set_header Host $host;
proxy_set_header X‑Real‑IP $remote_addr;
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
proxy_set_header X‑Forwarded‑Proto $scheme;
# Ting‑Reader 同样需要WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://127.0.0.1:3000;
proxy_buffering off;
client_max_body_size 100M;
}
}
单域名子路径模式(不推荐,简单给示例)
不建议子路径部署(如
https://xxx.com/abs、https://xxx.com/ting),两个程序对子路径兼容都一般,容易出现静态资源、websocket异常。优先用子域名。
使用步骤
- 将配置写入 nginx sites‑available 下,软链接到 sites‑enabled
- 检查配置语法:
nginx -t
- 重载nginx
systemctl reload nginx
重要踩坑提示
- 容器绑定地址:docker 端口映射必须是
0.0.0.0:xxxx:xxxx,不要只绑定 127.0.0.1(如果你nginx不在本机)。 - 不要直接把容器端口暴露公网,全部走nginx 443 HTTPS。
- ABS第三方客户端(希声Still、AudioBooth等)填写地址时直接填完整
https://abs.example.com,不要带端口。 - Ting‑Reader网页/PWA访问也直接用
https://ting.example.com。 - 如果你使用 Nginx Proxy Manager(NPM),不需要手写上面配置,网页界面填后端地址,开启Websocket开关即可。
NPM(Nginx Proxy Manager)界面填写要点
- ABS:Forward Hostname/IP
127.0.0.1,Port13378,勾选 WebSockets Support - Ting‑Reader:Forward Hostname/IP
127.0.0.1,Port3000,勾选 WebSockets Support - 申请SSL证书,强制HTTPS。
如果你需要,我可以顺带给一份两者的 Caddy v2 配置(更简单,自动https)。
audiodock 声仓
https://post.smzdm.com/p/arz6orng/ https://laosu.tech/2026/03/28/%E9%9F%B3%E4%B9%90%E5%92%8C%E6%9C%89%E5%A3%B0%E8%AF%BB%E7%89%A9%E6%92%AD%E6%94%BE%E5%99%A8AudioDock/ https://github.com/NasDock/AudioDock