这两年在 NAS 上搭音乐库,我一直有个小痛点:好用的项目不少,但很多是国外作者主导,功能很强没错,UI/交互基本没有对胃口的。
所以当我看到一个由国内开发者维护、界面风格更现代、并且把部署门槛压得很低的音乐管理项目时,那真的是眼前一亮。
本期想介绍的就是 「道理鱼音乐」:支持 Docker 一键部署,也提供 ARM 架构镜像;数据库方面既能走轻量化方案,也能对接常规数据库。

项目介绍
道理鱼音乐是一套面向自建媒体库场景的音乐播放与管理系统,气质偏现代:页面信息密度控制得比较舒服,功能入口也更接近我们熟悉的主流 Web 应用逻辑,不需要花太多时间去适应。其覆盖的内容不只音乐,也包括视频和有声书,更像一个统一的媒体库入口。

在部署形态上,它对 NAS 用户非常友好:可以用 Docker 直接跑起来,并且提供 ARM 架构版本,像群晖、威联通、软路由/小主机这类设备都更容易覆盖。数据层也做了分层思路:如果你只是个人听歌、库不大、想快速落地,可以走轻量化数据库;如果你打算长期使用、设备多、并发访问更多,或者希望更稳定可迁移,也能切到常规数据库方案,后续扩展空间更大。
项目特点
- 高音质播放:主打多声道/高码率音频自动兼容,在保持音质的同时快速启动
- 边播边转:针对 DTS/DSD/APE/WMA 等高码率格式,自动转码为兼容流,边播边转不卡顿
- 封面同步+三档缩略图:封面同步生成 100/300/600 三档缩略图,列表浏览加载更快。
- 多媒体库统一管理:音乐、视频、有声书统一管理,元数据与封面同步解析
- 轻量部署:提供 PostgreSQL/SQLite 双版本镜像,内置 Redis 轻量模式,拉起即用。
- 移动端支持:提供移动端获取入口,随时随地播放。
部署流程
本文以威联通NAS为例,通过Docker Compose的方式进行部署。
因为音乐项目属于长期使用项目,随着周期拉长,会产生大量数据,因此我这里给出的是PostgreSQL 版部署,代码如下:
services:
postgres:
image: postgres:16-alpine
container_name: daoliyu-postgres
restart: always
environment:
- POSTGRES_DB=daoliyu
- POSTGRES_USER=daoliyu
- POSTGRES_PASSWORD=daoliyupassword
- PGDATA=/var/lib/postgresql/data/pgdata
command:
- "postgres"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=256MB"
- "-c"
- "work_mem=32MB"
- "-c"
- "maintenance_work_mem=256MB"
- "-c"
- "checkpoint_completion_target=0.9"
- "-c"
- "wal_buffers=16MB"
- "-c"
- "port=5433"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U daoliyu -d daoliyu -p 5433"]
interval: 10s
timeout: 5s
retries: 6
start_period: 30s
# ports:
# - "5433:5433" # 数据库一般无需映射
volumes:
- /share/Container/daoliyu/data:/var/lib/postgresql/data
backend:
image: msmkls/daoliyu-music:latest
container_name: daoliyu-music
restart: always
depends_on:
postgres:
condition: service_healthy
environment:
- NODE_ENV=production
- DB_PROVIDER=pg
- LOG_LEVEL=${LOG_LEVEL:-info}
- DEBUG=${DEBUG:-true}
# - STREAMING_TRANSCODE_ENABLED=true
# - VIDEO_HWACCEL=vaapi
# - VIDEO_HWACCEL_DEVICE=/dev/dri/renderD128
# - LIBVA_DRIVER_NAME=iHD
# devices:
# - /dev/dri:/dev/dri # 硬件加速
ports:
- "5173:4000" # 冒号左侧可改
volumes:
- /share/Container/daoliyu/backend-storage:/app/storage
- /share/media/music:/data/media # 音乐目录
- /share/media/有声书:/data/audiobooks # 有声书目录
- /share/media/music-videos:/data/music-videos # 音乐视频
- /share/Container/daoliyu/playlists:/data/playlists # 歌单目录
- /share/Container/daoliyu/plugins:/plugins # 插件目录
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
interval: 30s
timeout: 5s
retries: 5
如果要自定义多个有声书和音乐目录,分别如下写:
/你的媒体库目录:/data/media1
/你的媒体库目录:/data/audiobooks1
打开威联通的Container Station,创建新的应用程序。

为了以防万一,我还是补充一个轻量化的部署代码吧:
services:
backend:
image: msmkls/daoliyu-music:0.2.2
container_name: daoliyu-music-sqlite
restart: always
environment:
- NODE_ENV=production
- DB_PROVIDER=sqlite
- PRISMA_SCHEMA=${PRISMA_SCHEMA-prisma/schema.sqlite.prisma}
- LOG_LEVEL=${LOG_LEVEL:-info}
- DEBUG=${DEBUG:-true}
ports:
- "5173:4000"
volumes:
- /share/Container/daoliyu/backend-storage:/app/storage
- /share/Container/daoliyu/backend-data:/app/backend-data # 必须持久化
- /share/media/music:/data/media
- /share/media/有声书:/data/audiobooks
- /share/media/music-videos:/data/music-videos
- /share/Container/daoliyu/playlists:/data/playlists
- /share/Container/daoliyu/plugins:/plugins
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
interval: 30s
timeout: 5s
retries: 5
使用介绍
部署完毕后,浏览器输入NAS_IP:5137即可访问服务。首次进入需要注册账户。同样无需真实邮箱,格式对了即可。

我这个已经是部署了一段时间,有新版本进入会提示版本更新。

点击右上角色头像,点击「多媒体库」,便可对其进行配置。别忘记把资源放进去~

点击「全量扫描」。

扫描完毕后,效果如下,可以开始享受了。

界面都很受用。


关于移动端,见下图。

最后
我倒是挺希望也继续推出个PC端。
感谢观看,本文完。
评论区