# 音乐服务器 - 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要流畅一点 📊 总结方案: 1. ⭐音乐:navidrome+飞牛音乐 流云+音流 2. ⭐有声: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)是现在自建有声书两大主流选择**。 ## ✨核心亮点 1. **中文元数据刮削很强** 对接喜马拉雅源,自动抓取书名、演播者、简介、封面,中文有声书识别远好于ABS(ABS英文刮削强,中文弱),文件名混乱也能匹配。 2. **支持WebDAV库** 不只是本地目录,可以直接挂载Alist、115、夸克WebDAV网盘当书库,不用把文件拷贝到NAS本地磁盘。 3. **官方原生客户端** - Android:官方APK直接下载,离线缓存 - Windows/macOS/Linux:Flutter桌面客户端 - Web/PWA网页端,手机浏览器直接用 - iOS:**只有未签名IPA,不能App Store直接装**,普通iPhone只能用网页PWA,无法得到CarPlay支持。 4. 播放功能:倍速、睡眠定时、跳过片头片尾、多用户独立进度、根据封面自动变色UI、插件系统(热插拔不用重启容器)。 5. 资源占用低,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) 1. **iOS硬伤**:没有App Store上架版本,官方只提供未签名IPA,普通用户只能网页PWA;网页没有系统后台播放、CarPlay、离线缓存,iPhone体验大打折扣。 > ABS虽然官方iOS也TestFlight,但大量第三方App(希声Still、AudioBooth)App Store可直接下,支持CarPlay离线。 2. **没有播客订阅**:不能订阅网络播客;ABS原生完整播客功能。 3. **无电子书阅读(EPUB/PDF)**,只做音频;ABS可以同时管理有声书+电子书。 4. **第三方客户端几乎没有**,只能用官方客户端/PWA;ABS生态庞大,大量社区App。 5. 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(听悦),如果你: 1. **主力安卓手机,少量/不用iPhone**; 2. 大量中文有声书,想要自动刮削中文信息,不想手动整理标签; 3. 需要直接WebDAV挂载网盘(Alist等)做书库,不想把文件下载本地NAS; 4. 不需要播客、电子书阅读。 ### 选 Audiobookshelf(ABS),如果你: 1. **有iPhone,想要CarPlay、原生App体验**; 2. 需要播客订阅、EPUB电子书阅读; 3. 本地磁盘存储有声书,不需要WebDAV源; 4. 希望多第三方客户端可以自由选择。 > 💡折中方案:两个docker同时跑,ABS处理本地库+播客,Ting‑Reader处理WebDAV网盘中文有声书,资源占用都很低。 ## 补充注意点 1. Ting‑Reader网页版在iPhone上:锁屏后容易断播,系统限制,**无法像原生App那样后台稳定播放**。 2. 外网访问建议套反向代理开启HTTPS,不要裸端口暴露公网。 3. WebDAV添加库时,网络网盘资源扫描受网速影响,不要一次性扫描超大库。 如果你需要,我可以把两者的反向代理Nginx配置一并给你。 ## Nginx 反向代理配置 > 前提说明 1. 假设域名: - `abs.example.com` → 代理 Audiobookshelf(ABS),容器内部端口 `80`,宿主机端口 `13378` - `ting.example.com` → 代理 Ting‑Reader,容器内部端口 `3000`,宿主机端口 `3000` 2. 使用 `certbot` 获取 SSL 证书;证书路径 `/etc/letsencrypt/live/你的域名/` 3. Nginx 与 docker 服务在同一台机器,后端地址写 `127.0.0.1:端口`;不在同一台则替换为对应内网IP。 4. 两个服务都需要**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异常。优先用**子域名**。 ### 使用步骤 1. 将配置写入 nginx sites‑available 下,软链接到 sites‑enabled 2. 检查配置语法: ``` nginx -t ``` 3. 重载nginx ``` systemctl reload nginx ``` ### 重要踩坑提示 1. **容器绑定地址**:docker 端口映射必须是 `0.0.0.0:xxxx:xxxx`,不要只绑定 127.0.0.1(如果你nginx不在本机)。 2. 不要直接把容器端口暴露公网,全部走nginx 443 HTTPS。 3. ABS第三方客户端(希声Still、AudioBooth等)填写地址时直接填完整 `https://abs.example.com`,不要带端口。 4. Ting‑Reader网页/PWA访问也直接用 `https://ting.example.com`。 5. 如果你使用 Nginx Proxy Manager(NPM),不需要手写上面配置,网页界面填后端地址,开启Websocket开关即可。 ### NPM(Nginx Proxy Manager)界面填写要点 - ABS:Forward Hostname/IP `127.0.0.1`,Port `13378`,勾选 **WebSockets Support** - Ting‑Reader:Forward Hostname/IP `127.0.0.1`,Port `3000`,勾选 **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