Navidrome部署记录

Navidrome是一款用Go语言写的流媒体窜流平台,前端基于React,使用的接口标准基于SubSonic,所以凡是支持这个标准的Android,IOS应用均能使用。一路的部署流程也十分顺利。

我采用的方案是阿里云盘本地只读映射到磁盘,Navidrome使用Docker快速部署

阿里云盘映射

使用aliyundrive-fuse,感觉作者拿它的用途应该和我是一致的,用screen命令挂在后台

https://github.com/messense/aliyundrive-fuse/releases/tag/v0.1.14

version: "3"
services:
  navidrome:
    container_name: navidrome
    image: deluan/navidrome:latest
    user: 0:0 #0:0代表用root用户运行
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      ND_ENABLETRANSCODINGCONFIG: "true"
      ND_TRANSCODINGCACHESIZE: "4000M"
      ND_IMAGECACHESIZE: "1000M"
    volumes:
      - "/data/music/data:/data"
      - "/mnt/aliyundrive/webdav/Music:/music:ro"

网页端

这个网页端超赞,桌面适配和手机适配都相当完美,提供多国语言支持,转码支持,还支持PWA,要是没有缓存需求可以考虑下。整个页面组件比较大,首次打开网速不够的话加载会有些缓慢

安卓端

使用的是Ultrasonic,从F-Droid下载

Ultrasonic-Subsonic 服务器的音乐流客户端

桌面

使用的是Sonixd,但由于其居然还依赖electeon13,这次选择了appimage的版本

yay -S sonixd-appimage

Windows的话直接下载安装包即可

外部集成

配置 Navidrome 可以从 Last.fm 和 Spotify 获取专辑信息和图像

转码设置

要转码,是因为无损的文件比较大,一般都有几百M,所以需要进行转码便于客户端进行播放,一来减小服务器带宽压力,二来也没有什么高端耳机,听个响就可以了

Navidrome 出于安全原因,禁用了从 Web 界面更改参数,所以需要先修改 Docker 的环境变量

(本文前面部分的docker-compose.yaml已经默认配置转码)

ND_ENABLETRANSCODINGCONFIG 设置为 true 才能支持转码功能 ND_TRANSCODINGCACHESIZE 转码缓存的大小。设置 0 为禁用缓存,默认为 100MB

默认设置中有两个转码方案,一个是转 MP3,另一个是转 OPUS

可以根据需要修改比特率,然后选择需要转码的客户端

具体图文链接,将这一部分的内容搜素CSDN就可以找到

结语

比较麻烦的是从QQ和网易导出音乐的流程,花了很长时间在上面。但这个平台使用体验真心不错,如果有折腾能力的推荐尝试,有效打破平台壁垒。