客户端的选择
这里直接选用了国人开发的 音流 作为客户端,优势是各平台都支持,包括 MAC、IOS、安卓、安卓 TV,支持通过接口调用获取歌词和封面。同时可以发动钞能力,支持文件夹浏览播放、多线路配置。
服务端的选择
本篇只讨论免费的服务端,jellyfin 和 navidrome。都有尝试搭建过,不过我的 jellyfin 主要用来观影,还是专门搭建了 navidrome 用作音乐服务端。优势是 GO 开发,简单轻量。这里贴一个各个服务端的对比图。
服务端搭建示例
这里给出一个 docker compose 文件示例,我的家庭网络是存储和计算在两台机器上,所以挂载目录上使用的 sshfs 插件来进行一个远程目录的挂载。在使用sshfs之前你可能需要搜索一下docker如何安装sshfs插件。使用方式可以参考下面示例的结尾注释部分,在volumes声明sshfs远程目录后,可以在 service.navidrome.volumes 直接使用sshfs挂载时声明的名称,也可以参考下面示例中 service.navidrome.volumes 注释部分
音乐目录和navidrome应用目录分开在两个磁盘上,以下配置文件仅做参考,实际使用可能需要网络和存储情况修改一下mount的配置。
version: "3.9"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
# user: 1000:1000
ports:
- 4533:4533
volumes:
- /app/navidrome/data:/data
- /data/music:/music
# - data:/data
# - music:/music
environment:
#程序默认语言
- ND_DEFAULTLANGUAGE=zh-Hans
#启用GRAVATAR头像
- ND_ENABLEGRAVATAR=true
#关闭转码,如需要转码请设置为true
- ND_ENABLETRANSCODINGCONFIG=false
#SPOTIFY相关
# - ND_SPOTIFY_ID=
# - ND_SPOTIFY_SECRET=
#LAST.FM相关
# - ND_LASTFM_LANGUAGE=zh
# - ND_LASTFM_APIKEY=
# - ND_LASTFM_SECRET=
#PROXY相关
# - HTTP_PROXY=http://proxy:port
# - HTTPS_PROXY=http://192.168.1.2:7890
restart: always
#volumes:
# data:
# driver: vieux/sshfs
# driver_opts:
# sshcmd: [email protected]:/share/CACHEDEV3_DATA/media/software/navidrome/data
# password: xxxx
# music:
# driver: vieux/sshfs
# driver_opts:
# sshcmd: [email protected]:/share/CACHEDEV4_DATA/private/media/music
# password: xxx
# allow_other: ""
其他可能存在的问题
如果挂载的仅仅是本地目录不会有太多的问题,使用 sshfs 挂载 NAS类的远程目录比较容易遇见权限问题,这种情况下可以参考示例文件的 volumes.*.driver_opts.allow_other 配置。
评论