📖 项目简介
Zhiyin 知音 是一个专为 NAS 场景设计的音乐流媒体服务,旨在提供:
- 🎼 大规模音乐库支持:轻松管理数万首音乐
- 🚀 高性能:Rust + SQLite + 异步架构,内存优化至 ~30-50MB
- 📦 开箱即用:Docker 一键部署
- 🔍 智能推荐:基于播放历史的离线推荐系统
- 🎨 完整元数据:封面、艺术家、专辑信息自动解析
- 🌐 RESTful API:前后端分离,易于集成
- 📡 Subsonic API 兼容:支持音流、Symfonium、DSub 等主流客户端直连
- 🔐 用户认证:JWT + Basic Auth + bcrypt,角色权限控制
- 🖥️ 前端托管:可选的内置 Web 前端服务,支持 SPA
- 🎯 刮削(Scraping):从多个音乐平台自动抓取元数据与封面
- ☁️ STRM 网盘直链:支持 .strm 文件接入阿里云盘等网盘资源,服务端代理播放
🚀 快速开始
方式一:Docker Compose(推荐)
`yaml
version: '3.8'
services:
zhiyin-music:
image: qwex333/zhiyin-music:latest
container_name: zhiyin-music
ports:
- "8080:8080"
volumes:
# 音乐目录可选(只读)- 请修改为你的实际路径
# 默认配置会自动扫描 /music,无需再手动配置 config.toml
- ./music:/music
# 数据库目录可选(持久化)
- ./data:/data
# 封面缓存目录(可选, 如果想手动管理封面)
#- ./covers:/covers
# Web 前端已内置于镜像中(/app/web)
# 如需使用自定义前端,可取消注释覆盖:
# - ./web/dist:/app/web:ro
# 配置文件(可选,高级自定义时再启用)
# - ./config.toml:/app/config.toml:ro
environment:
# 日志级别
- RUST_LOG=info
# Subsonic 密码加密 Pepper(可选)
# 不设置时服务会自动生成并持久化到 /data/.zhiyin/key_pepper
# 设置后优先使用该值(适合多实例统一密钥)
# 生成方式: openssl rand -hex 32
# - MUSIC_KEY_PEPPER=your-random-hex-secret-here
# 如需自定义托管文件路径(可选):
# - MUSIC_KEY_PEPPER_FILE=/data/.zhiyin/key_pepper
# 初始管理员(仅首次启动时生效,创建后可删除)
# - MUSIC_ADMIN_USER=admin
# - MUSIC_ADMIN_PASSWORD=your_secure_password
# 如需覆盖默认配置,可通过 MUSIC_* 环境变量或挂载 config.toml
# 内存限制(含文件页缓存),防止在小内存主机上占用过多内存
# 256m 适合大多数场景;极低内存主机可设为 192m,追求缓存加速可设为 512m
# mem_limit: 256m
restart: unless-stopped
# 健康检查(镜像中未安装 curl/wget,使用内置二进制的 HTTP 自检)
# 如安装了 wget 可替换为: test: ["CMD-SHELL", "wget -qO- http://localhost:8080/api/health || exit 1"]
healthcheck:
test: ["CMD", "zhiyin-music", "--health-check"]
interval: 30s
timeout: 3s
retries: 3
start_period: 10s
networks:
- music-network
networks:
music-network:
driver: bridge
# 使用说明(零配置默认):
# 1. 修改 volumes 中的音乐目录路径(./music 改为你的实际路径)
# 2. 运行: docker-compose up -d
# 3. 查看日志: docker-compose logs -f
# 4. 停止服务: docker-compose down
# 5. 访问 API: http://localhost:8080/api/songs
# 6. 访问文档: http://localhost:8080/swagger-ui
# 7. 如需高级自定义:挂载 config.toml 或设置 MUSIC_* 环境变量
#
# 配置热重载(无需重启):
# docker-compose kill -s SIGHUP zhiyin-music
使用 Docker Command 快速启动:
默认推荐挂载数据目录,迁移或删除重建数据不丢失
docker run --name zhiyin-music -v /path/to/your/music:/music -v ./data:/data -p 8080:8080 zhiyin-music:latest
如果你只想使用 strm 快速管理音乐库,那么可以试试:
docker run --name zhiyin-music -v /path/to/your/music:/music -p 8080:8080 zhiyin-music:latest