「Music」我的地盘我作主
目录
自托管音乐服务的运维记录。
元数据刮削 / Metadata
MusicBrainz Picard
部署
docker compose 配置参考如下
services:
picard:
image: jlesage/musicbrainz-picard:v26.08.2
container_name: picard
# profiles: ["music"]
restart: unless-stopped
networks:
- traefik_proxy
environment:
- USER_ID=1000
- GROUP_ID=1000
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8
- LANG=zh_CN.UTF-8
- KEEP_APP_RUNNING=1
- ENABLE_VNC_AUDIO=0
- DISPLAY_WIDTH=1600
- DISPLAY_HEIGHT=900
# ports:
# - 5800:5800 # Web UI # only for debug, must access by traefik
volumes:
- /path/to/your/picard:/config
- /path/to/your/shared_fonts:/usr/share/fonts/custom:ro
- "/path/to/your/music:/storage"
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.picard.rule=Host(`picard.aio.yirami.xyz`)"
- "traefik.http.routers.picard.entrypoints=websecure"
- "traefik.http.routers.picard.tls=true"
- "traefik.http.routers.picard.tls.certresolver=le"
- "traefik.http.routers.picard.middlewares=authelia-auth"
- "traefik.http.services.picard.loadbalancer.server.port=5800"
deploy:
resources:
limits:
cpus: '2.0'
memory: 1G
reservations:
memory: 256M
healthcheck:
test: ["CMD-SHELL", "nc -z localhost 5800 || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s设定
配置代理
- 选项->选项->高级->网络
- 勾选网络代理,并设置合适的代理
文件整理
用于在写入元数据时,自动按照“歌手/专辑/序号 - 歌名”重命名文件并归档到新目录
- 选项->选项->重命名文件
- (勾选)保存时移动文件,并将目标目录设置为
/storage/library目录 - (取消勾选)删除空文件夹(防止
/storage/inbox被删) - (勾选)保存时重命名文件
- 修改命名模板(注意使用界面左侧的剪贴板同步功能)
$if2(%albumartist%,%artist%)/ $if(%album%,$if(%date%,$left(%date%,4) - ,)%album%,其他单曲)/ $if($gt(%totaldiscs%,1),Disc $num(%discnumber%,2)/,) $if(%tracknumber%,$num(%tracknumber%,2) - ,)%title%
用法
左上角点击
添加文件或添加文件夹选择挂载的
inbox目录(该目录默认用于存放待刮削曲目)选中左侧出现的曲目后有两种刮削方式,建议优先使用
查询查询(lookup):依据现有的标签信息在数据库中搜索扫描(scan):基于声学指纹(AcoustID)在数据库中匹配
匹配成功后,不同的颜色表示匹配度
绿色:匹配度极高( $>80%$ )黄色/橙色:匹配度中等(版本或曲目有细微差异)红色:匹配度较低(建议人工核对)
此外,底部区域会显示刮削前后的字段差异,方便对比
对于下载的专辑文件夹,更建议在右上角直接搜索相应专辑,并锁定该专辑
MusicTag
部署
docker compose 配置参考如下
services:
musictag:
image: xhongc/music_tag_web:2.7.6
container_name: musictag
profiles: ["music"]
restart: unless-stopped
networks:
- traefik_proxy
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- /path/to/your/musictag:/app/data
- "/path/to/your/music/library:/app/media"
- "/path/to/your/music/inbox:/app/download"
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.musictag.rule=Host(`musictag.aio.yirami.xyz`)"
- "traefik.http.routers.musictag.entrypoints=websecure"
- "traefik.http.routers.musictag.tls=true"
- "traefik.http.routers.musictag.tls.certresolver=le"
- "traefik.http.services.musictag.loadbalancer.server.port=8002"
deploy:
resources:
limits:
cpus: '2.0'
memory: 1G
healthcheck:
test: ["CMD", "/usr/local/bin/python3", "-c", "import socket; s = socket.socket(); s.connect(('127.0.0.1', 8002)); s.close()"]
interval: 15s
timeout: 5s
retries: 3
start_period: 30s设定
推流 / Streaming
Navidrome
部署
docker compose 配置参考如下
services:
navidrome:
image: deluan/navidrome:0.63.2
container_name: navidrome
restart: unless-stopped
networks:
- traefik_proxy
environment:
- ND_SCANSCHEDULE=0 # 禁用定时扫描,节省硬盘 I/O
- ND_SCANNER_EXTRACTOR=taglib # 从文件名提取无标签文件的默认标题
- ND_LOGLEVEL=info
- ND_SESSIONTIMEOUT=24h
- ND_ENABLETRANSCODINGCONFIG=true # 允许客户端自行调整转码率
- ND_DEFAULTLANGUAGE=zh-CN
- TZ=Asia/Shanghai
volumes:
- /path/to/your/navidrome:/data
- "/path/to/your/music/library:/music:ro"
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.navidrome.rule=Host(`music.aio.yirami.xyz`)"
- "traefik.http.routers.navidrome.entrypoints=websecure"
- "traefik.http.routers.navidrome.tls=true"
- "traefik.http.routers.navidrome.tls.certresolver=le"
- "traefik.http.routers.navidrome.middlewares=authelia-auth"
- "traefik.http.services.navidrome.loadbalancer.server.port=4533"
deploy:
resources:
limits:
cpus: '1.0'
memory: 256M
reservations:
memory: 64M
healthcheck:
test: ["CMD-SHELL", "wget --spider -q http://localhost:4533/ping || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s设定
维护
清理丢失的曲目
有时歌曲被外部清理后系统不会自动移除,需要手动移除,方法:
- 依次点击右上角用户 -> 丢失文件
- 勾选需要清理的曲目进行删除