boxmoe_header_banner_img

Hello! 欢迎来到孤寡小青蛙的VLOG!

加载中

文章导读

颜值爆表的私人音乐库!一键在 飞牛NAS 上快速部署


avatar
1394179649 2025年12月29日 32

1.项目简介

    1. 自建 NAS 音乐管理与播放系统,提供媒体扫描、元数据补全、**、收藏与队列管理、自动转码等能力,可通过 Docker 或本地环境快速部署。
    2. 这是一个全栈音乐管理系统,包含后端API服务器和React前端应用。
    3. 媒体扫描:支持多目录配置,自动解析 ID3 元数据、封面、歌词并写入数据库。
    4. 智能播放:Web 前端提供队列、收藏、下一首/上一首、音量与进度控制,支持令牌式音频流与 HLS。
    5. 账号系统:区分管理员与普通用户,支持注册开关、资料修改、密码变更与头像上传。
    6. 收藏体系:曲目、专辑收藏与歌单管理一应俱全,可直接加入播放器队列。
    7. 实时通知:内置 WebSocket 网关,后续可扩展扫描与播放的实时反馈。
    8. 转码缓存:集成 FFmpeg 实时转码,支持自动生成指定码率的缓存文件并在后台统计与清理。
    9. 有声书:有声书按目录入库支持绝大部分已刮削
    10. 音乐视频:音乐视频入库点播
    11. 插件与元数据:插件清单自动识别目录内 manifest,元数据提供方支持启用、优先级配置与第三方源扩展。
    12. 项目体验链接:点我访问 账户名:1394179649@qq.com 密码:12345678


2.功能亮点

  1. 媒体扫描:支持多目录配置,自动解析 ID3 元数据、封面、歌词并写入数据库。
  2. 智能播放:Web 前端提供队列、收藏、下一首/上一首、音量与进度控制,支持令牌式音频流与 HLS。
  3. 账号系统:区分管理员与普通用户,支持注册开关、资料修改、密码变更与头像上传。
  4. 收藏体系:曲目、专辑收藏与歌单管理一应俱全,可直接加入播放器队列。
  5. 实时通知:内置 WebSocket 网关,后续可扩展扫描与播放的实时反馈。
  6. 转码缓存:集成 FFmpeg 实时转码,支持自动生成指定码率的缓存文件并在后台统计与清理。
  7. 有声书:有声书按目录入库支持绝大部分已刮削
  8. 音乐视频:音乐视频入库点播
  9. 插件与元数据:插件清单自动识别目录内 manifest,元数据提供方支持启用、优先级配置与第三方源扩展。

3.安装方式

使用Docker Compose进行安装

在文件管理器中新建一个docker文件夹>在docker文件夹内在新建一个daoliyu的文件夹

打开docker-选择compose-新建项目-项目名称:daoliyu 文件路径选择咱们刚才新建的daoliyu的文件夹-选择创建docker-compose.yml-将代码粘贴进去-创建项目后立即启动

services:
postgres:
image: postgres:16-alpine
container_name: daoliyu-postgres
restart: unless-stopped
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:
– ./docker-data/postgres:/var/lib/postgresql/dataredis:
image: redis:7-alpine
container_name: daoliyu-redis
restart: unless-stopped
command: [“redis-server”, “–appendonly”, “yes”]
volumes:
– ./docker-data/redis:/data
healthcheck:
test: [“CMD”, “redis-cli”, “ping”]
interval: 10s
timeout: 5s
retries: 5backend:
image: msmkls/daoliyu-backend:0.1.9
build:
context: ./backend
dockerfile: Dockerfile
container_name: daoliyu-backend
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
environment:
NODE_ENV: production
DATABASE_URL: “postgresql://daoliyu:daoliyupassword@postgres:5433/daoliyu?schema=public&connection_limit=25&pool_timeout=10&statement_timeout=60000&idle_in_transaction_session_timeout=60000”
APP_PORT: 4000
ADMIN_DISPLAY_NAME: “${ADMIN_DISPLAY_NAME}”
ADMIN_EMAIL: “${ADMIN_EMAIL}”
ADMIN_PASSWORD: “${ADMIN_PASSWORD}”
LIBRARY_ROOT: “/data/media”
AUDIOBOOK_LIBRARY_ROOT: “/data/audiobooks”
VIDEO_LIBRARY_ROOT: “/data/music-videos”
VIDEO_TRANSCODE_CACHE: “/app/storage/transcoded/videos”
VIDEO_THUMBNAIL_CACHE: “/app/storage/thumbnails/videos”
PLAYLISTS_IMPORT_ROOT: “/data/playlists”
REGISTRATION_OPEN: “${REGISTRATION_OPEN:-true}”
PLUGINS_DIR: “/plugins”
REDIS_URL: “redis://redis:6379/0”
ACOUSTID_API_KEY: “${ACOUSTID_API_KEY}”
LASTFM_API_KEY: “${LASTFM_API_KEY}”
LASTFM_API_SECRET: “${LASTFM_API_SECRET}”
SPOTIFY_TOKEN: “${SPOTIFY_TOKEN}”
SPOTIFY_CLIENT_ID: “${SPOTIFY_CLIENT_ID}”
SPOTIFY_CLIENT_SECRET: “${SPOTIFY_CLIENT_SECRET}”
LOG_LEVEL: “${LOG_LEVEL:-info}”
DEBUG: “${DEBUG:-true}”
volumes:
– ./backend-storage:/app/storage
– /vol2/1000/Media/Music:/data/media # 音乐目录
– /vol2/1000/Media/Book:/data/audiobooks # 有声书
– /vol2/1000/Media/Video:/data/music-videos # 音乐视频
– ./playlists:/data/playlists # 歌单(首层子目录文件夹名为歌单名)
– ./plugins:/plugins
healthcheck:
test: [“CMD”, “wget”, “-qO-“, “http://localhost:4000/health”]
interval: 30s
timeout: 5s
retries: 5frontend:
image: msmkls/daoliyu-frontend:0.1.9
build:
context: ./frontend
dockerfile: Dockerfile
container_name: daoliyu-frontend
restart: unless-stopped
depends_on:
backend:
condition: service_healthy
ports:
– “5173:8080”

注意重点部分来了 我们要修改一下 第87行的volumes的文件路径 其中
/vol2/1000/Media/Music:/data/media # 音乐目录

–/vol2/1000/Media/Book:/data/audiobooks # 有声书
/vol2/1000/Media/Video:/data/musicvideos # 音乐视频

 – /vol2/1000/Media/Music

 – /vol2/1000/Media/Book

 – /vol2/1000/Media/Video 

要根据自己实际情况进行修改,例如我的音乐文件夹放在了/vol1/1000/Music 那么文件路径我们就要改成 – /vol1/1000/Music:/data/media # 音乐目录. 单击确定,等待程序跑完

 


创建完毕后访问http://nasip:5173/

跟随指引创建管理员账户-点击右上角头像选择多媒体库-第一次选择全量扫描

这样一个颜值爆表的私人音乐库就搭建完成了

手机端可以访问箭头音乐官网下载移动端APP
手机端效果图:

手机端APP下载链接

箭头APP

 

 

 



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码