daoliyu:
一套自部署的多媒体管理与播放方案,强调高音质、快速转码和便捷的前后端体验。支持多种音频/视频格式,适配个人与私有部署场景。

安装
Docker Compose
services:
postgres:
image: postgres:16-alpine
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:
- ./postgres:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
depends_on:
postgres:
condition: service_started
command: ["redis-server", "--appendonly", "yes"]
volumes:
- ./redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
backend:
image: msmkls/daoliyu-backend:0.1.7
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
environment:
NODE_ENV: production
APP_PORT: 4000
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"
VIDEO_TRANSCODE_CACHE: "/app/storage/transcoded/videos"
VIDEO_THUMBNAIL_CACHE: "/app/storage/thumbnails/videos"
REDIS_URL: "redis://redis:6379/0"
REGISTRATION_OPEN: "true"
LOG_LEVEL: "info"
volumes:
- ./storage:/app/storage
- ./media:/data/media
- ./audiobooks:/data/audiobooks
- ./music_videos:/data/music-videos
- ./playlists:/data/playlists
- ./plugins:/plugins
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
interval: 30s
timeout: 5s
retries: 5
frontend:
image: msmkls/daoliyu-frontend:0.1.7
restart: unless-stopped
container_name: daoliyu-music-frontend
depends_on:
backend:
condition: service_started
ports:
- "5173:8080"
参数说明(更多参数建议去看文档)
:::/var/lib/postgresql/data(路径):postgresql 配置数据
/data(路径):redis 配置数据
/app/storage(路径):后端配置数据
/data/media(路径):音乐目录
/data/audiobooks(路径):有声书
/data/music-videos(路径):音乐视频
/data/playlists(路径):歌单
/plugins(路径):插件
:::
使用
浏览器中输入 http://NAS的IP:5173 就能看到界面

建议修改一下邮箱和密码,避免忘记

进入面板,排版配色还挺不错的

TIP:在 /data/media 目录放入歌曲

正常情况会自动扫描目录的歌曲,显示在面板

如果没有刷新出来,也可以手动扫描目录

TIP:也可以添加多个音乐目录

回到面板,点击音乐就可以播放了

点击多首音乐,可以加入播放歌单列表

右下角可以打开歌词显示

除了常规的播放功能,还支持音频均衡器

根据艺人分类

根据专辑分类

TIP:在 /data/audiobooks 目录放入有声书

可以正确读取到文件夹里的元数据(已经刮削过的)

有针对有声书做了适配,比如一共多少集和播放总时长

不想下载 APP 的,移动网页端访问也是可以的

客户端支持 Android 和 iOS ,下载地址:cn.amcfy.com

总结
体验使用下来,最大的感受就是界面设计好看,其次是支持音乐、有声书管理播放,提供客户端应用。不过即使与成熟开源音乐应用相比,还是存在不小的差距,比如:切歌有时候会操作卡顿、窗口缩放适配不足、操作逻辑待优化等问题。
综合推荐:⭐⭐⭐(支持音乐、有声书管理,未来可期)
使用体验:⭐⭐⭐(界面挺好看的,提供客户端应用)
部署难易:⭐⭐⭐(一般,关联容器多)︎