侧边栏壁纸
博主头像
羊刀仙的部落格 博主等级

闲不下来!

  • 累计撰写 240 篇文章
  • 累计创建 57 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

真一步到位了!最强自有音乐服务器诞生~一键部署道理鱼音乐

羊刀仙
2026-01-30 / 0 评论 / 0 点赞 / 21 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
GW树洞

高速稳定 · 海外专线

  • 自用推荐
  • 90天使用时长
  • 70+ 节点分布
  • IEPL专线 油管4K无压力
  • 全平台客户端
  • 不限制在线设备
立即注册

这两年在 NAS 上搭音乐库,我一直有个小痛点:好用的项目不少,但很多是国外作者主导,功能很强没错,UI/交互基本没有对胃口的。

所以当我看到一个由国内开发者维护、界面风格更现代、并且把部署门槛压得很低的音乐管理项目时,那真的是眼前一亮。

本期想介绍的就是 「道理鱼音乐」:支持 Docker 一键部署,也提供 ARM 架构镜像;数据库方面既能走轻量化方案,也能对接常规数据库。

截屏2026-01-27 16.55.45.png

项目介绍

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

截屏2026-01-27 16.51.37.png

在部署形态上,它对 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,创建新的应用程序。

截屏2026-01-27 11.31.55.png

为了以防万一,我还是补充一个轻量化的部署代码吧:

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即可访问服务。首次进入需要注册账户。同样无需真实邮箱,格式对了即可。

QQ20260127-115933.png

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

截屏2026-01-27 11.50.21.png

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

截屏2026-01-27 16.42.57.png

点击「全量扫描」。

截屏2026-01-27 16.50.20.png

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

截屏2026-01-27 16.45.18.png

界面都很受用。

截屏2026-01-27 16.52.38.png

截屏2026-01-27 16.45.21.png

关于移动端,见下图。

截屏2026-01-27 16.53.23.png

最后

我倒是挺希望也继续推出个PC端。

感谢观看,本文完。

0

评论区