
各位老铁们好啊!好久不见~~👋
问你们一个问题:你的 NAS 里是不是躺着一大堆音乐和有声书,但每次想听的时候,都要在好几个 App 之间来回切换?
听音乐用一个播放器,听有声书又要换另一个,手机、电脑、平板各自为政,进度不同步,封面不显示,歌词也没有……
这种割裂感,真的太难受了!😩
今天给大家安利一个我最近挖到的宝藏开源项目——AudioDock(声仓)!⚡️ 一款把音乐和有声书合二为一的本地化播放器,多端同步、颜值在线、功能能打,NAS 党和本地音频收藏家直接闭眼看!
🏷️ 一、AudioDock 是个啥?
AudioDock,中文名声仓,是一款基于现代 Web 技术构建的音乐 + 有声书一体化本地播放器。
它最大的亮点就是:一套系统,两种模式,全端覆盖。
不管是听周杰伦的专辑,还是追《三体》有声书,AudioDock 都能一站式搞定,而且两种模式可以一键无缝切换,还会分别独立记忆播放进度,完全不会乱!
目前支持的平台:
- 💻 桌面端(Windows / macOS / Linux)
- 📱 移动端(iOS / Android)
- 🌐 Web 端(浏览器直接访问)
- 📺 小程序 & 电视端(开发中)
一套服务,全家桶覆盖,这才叫真正的多端同步!

🏷️ 二、核心功能拆解
1. 双模式无缝切换 ♻️:音乐 & 有声书,一个都不少
这是 AudioDock 最让我眼前一亮的功能。
以前我们听音乐和听有声书完全是两套体验——有声书要记章节和进度,音乐要管专辑、歌手、歌单……
AudioDock 把两种模式整合在一起,却又互不干扰。切到有声书模式,它记住你上次听到哪;切回音乐模式,你的歌单和进度也原封不动。
这个设计,是真的懂用户!👍
2. 多端数据源支持 🔌:Emby、Jellyfin、Navidrome 全接入
已经在用 Emby 或 Jellyfin 管理媒体库的老铁,不用重新折腾!
AudioDock 直接支持接入这些主流媒体服务器作为数据源,你的音乐库和有声书库可以直接导入,省去重复建库的麻烦。
同时还支持:
- strm 文件入库
- WebDAV 数据源入库
云盘里的音频、NAS 上的文件,统统可以接进来,真正做到「一个入口,管理所有音频」。
3. 元数据解析 🖼️:歌词、封面、专辑信息一个不少
本地音乐最头疼的就是封面不显示、歌词没有、专辑信息乱七八糟。
AudioDock 支持解析音频文件内嵌的元数据,如果你的音乐文件本身带有完整 ID3 标签,它能自动展示:
- 🎵 歌词(支持滚动显示)
- 🖼️ 专辑封面
- 👤 艺术家信息
- 💿 专辑分类
听歌的仪式感,直接拉满!
4. 多端同步 & 设备接力 📱:换个设备,无缝继续
这个功能对我来说简直是刚需!
在公司用电脑听到一半,回家拿起手机,AudioDock 能直接从上次进度继续播放。不管是音乐还是有声书,进度全部本地同步。
更厉害的是设备接力功能——支持多设备之间无缝切换,有点像 AirPlay 那味儿,但完全本地化,数据不出家门。
5. 多用户支持 👥:全家共享,各自独立
家里多人共用一套 NAS?
AudioDock 支持多用户,每个人有独立的播放记录、收藏列表和播放进度,互不干扰。老爸听评书,老妈听广场舞歌曲,你听 Lo-Fi,完全不会串!
6. 桌面歌词 & 系统交互 🖥️:沉浸式听歌体验
桌面端还支持桌面歌词显示,就像网易云音乐那种悬浮歌词效果,工作时也能优雅看着歌词飘过。
同时支持系统媒体控制交互,耳机上的播放/暂停/切歌按键都能正常使用,体验非常原生。
🏷️ 三、功能完整度一览
| 功能 | Web/桌面端 | 移动端 |
|---|---|---|
| 音乐/有声书模式切换 | ✅ | ✅ |
| 播放器功能 | ✅ | ✅ |
| 歌词展示 | ✅ | ✅ |
| 专辑、艺术家 | ✅ | ✅ |
| 聚合搜索 | ✅ | ✅ |
| 多端同步 | ✅ | ✅ |
| 播放记录 & 收藏 | ✅ | ✅ |
| 桌面歌词 | ✅ | ❌ |
| 云盘聚合 | ✅ | ✅ |
| 迷你播放器 | ✅ | — |
| TTS 生成有声书 | 开发中 | 开发中 |
整体完成度相当高,而且作者还在持续迭代更新!
🏷️ 四、部署教程:Docker 一键搞定!
作为 NAS 玩家,Docker 部署肯定是首选!AudioDock 提供了完整的 Docker Compose 配置,跟着步骤走,10 分钟轻松部署!
第一步:准备 docker-compose.yml
把下面内容复制到你的 NAS 上,保存为 docker-compose.yml:
services:
audiodock-api:
image: docker.1ms.run/mmdctjj/audiodock-api:latest
container_name: audiodock-api
restart: unless-stopped
network_mode: bridge
ports:
- "6080:3000"
environment:
- AUDIO_BOOK_DIR=/audio
- MUSIC_BASE_DIR=/music
- CACHE_DIR=/covers
- DATABASE_URL=file:/data/dev.db
- JWT_SECRET=/.jwt_secret
volumes:
- /share/media3/audio:/audio
- /share/media3/music:/music
- /share/Container/audiodock/covers:/covers
- /share/Container/audiodock/data:/data
- /share/Container/audiodock/.jwt_secret:/.jwt_secret
audiodock-web:
image: docker.1ms.run/mmdctjj/audiodock-web:latest
container_name: audiodock-web
restart: unless-stopped
network_mode: bridge
ports:
- "6081:9958"
volumes:
- /share/Container/audiodock/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- audiodock-api
⚠️ 注意:记得把
/share/Container/audiodock/covers、/share/Container/audiodock/data、/share/Container/audiodock/.jwt_secret、/share/media3/audio和/share/media3/music改成你 NAS 上实际的目录和音频文件路径!
第二步:配置 nginx.conf 文件
接下来需要在 NAS 上创建 nginx.conf 配置文件(路径对应上面 docker-compose.yml 里的 /share/Container/audiodock/nginx/nginx.conf),这个文件主要负责 AudioDock 前端页面的静态资源缓存和后端 API 接口的代理转发,确保前端能正常访问后端服务。
将以下内容完整复制到 nginx.conf 文件中:
worker_processes 1;
events { worker_connections 1024; }
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9958;
server_name localhost;
# 1. 静态文件 (前端 SPA)
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 针对 index.html: 永远不缓存,确保用户总是获取最新版本
if ($request_filename ~* ^.*?.(html|htm)$) {
add_header Cache-Control "no-store, no-cache, must-revalidate";
}
# 针对静态资源 (JS/CSS/Images): 长期缓存,因为文件名带有 hash
if ($request_filename ~* ^.*?.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$) {
add_header Cache-Control "public, max-age=31536000, immutable";
}
try_files $uri $uri/ /index.html;
}
# 2. 可选代理:仅在后端地址配置时使用
location /api/ {
# 把NAS_IP改为你自己NAS的IP
set $backend "http://NAS_IP:6080";
# 去掉 /api 前缀
rewrite ^/api/(.*)$ /$1 break;
proxy_pass $backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
✨ 关键配置说明:
- 静态资源缓存:对 HTML 文件禁用缓存,保证每次访问都是最新页面;对 JS/CSS/图片等资源设置长期缓存,提升加载速度。
- API 代理:将前端的
/api开头请求转发到后端 API 服务(需把NAS_IP替换为你 NAS 的实际 IP 地址),解决跨域问题。
第三步:启动服务
docker-compose up -d
第四步:访问
打开浏览器,访问 http://你的NAS_IP:9958,先注册账号,然后登录,刷新页面就能看到你的音频库了!
就这么简单!🎉


⏬ 网盘下载
下载链接:https://pan.baidu.com/s/1U9TUgTEMKmrdPMJxSUVsZw?pwd=gc5s
提取码:gc5s
复制这段内容后打开百度网盘手机App,操作更方便哦
🏷️ 总结
AudioDock(声仓)对我来说,解决了一个长期存在的痛点——本地音频管理太分散。
音乐和有声书终于可以在一个地方统一管理,多端同步、设备接力、元数据解析……这些功能叠加在一起,体验真的不输那些商业 App。
更重要的是,数据完全本地化,不依赖任何云服务,隐私安全有保障。对 NAS 党来说,这简直是量身定制!
如果你也有一堆本地音频资源,强烈推荐上手试试 AudioDock!Docker 部署超简单,折腾成本极低,收益却很高。
宝子们,如果觉得这篇文章有用,记得点赞 + 在看,让更多 NAS 玩家发现这个宝藏项目!有问题或者已经用上的,评论区见!💖

原创文章,作者:诺多,如若转载,请注明出处:https://www.huluohu.com/posts/2054/
微信扫一扫
支付宝扫一扫