再一次,实现听歌自由

20年前,中国网民听歌是自由的,准确点说是听盗版歌的自由。

2002年11月,百度上线MP3搜索功能,几乎能搜索和下载到所有的歌曲。按相关的版权法规,百度未经授权使用他人资源牟利是违法的。当时互联网产业违法采集数据、传播盗版是家常便饭,版权管理形同虚设,百度顺势而为分了一块大蛋糕。盗版音乐砸了音乐人的饭碗,就如同盗版软件摧残软件从业者。最近十多年,政府对音像作品版权的管理日趋严格,这是一件利国利民的好事,一个行业兴盛的起点首先是从业者得到应有的报酬。

今天,付费听音乐已经成为网民的共识。我常常使用网易云听音乐,这是一个好软件,只是没有周杰伦的歌,网易云官方解释是没有拿到周杰伦歌曲的版权。QQ音乐倒是有周杰伦歌曲,但是偶尔也会因版权问题下架其他歌手作品。同样,酷狗音乐、咪咕音乐也不能提供所有的歌曲。问题来了,如何在一个音乐APP上听到所有的我喜欢的歌,实现听歌自由呢?自建音乐服务器是唯一的路。

Navidrome 是一款开源音乐服务器,用于自建云端音乐播放器,兼容手机、桌面等多种客户端。Navidrome 资源占用率非常低,支持中文界面,可以播放任何音频格式,实在是码农+音乐爱好者的折腾利器。Navidrome 提供了 Demo 地址 https://demo.navidrome.org/app/ , 账号密码都是 demo。

首先准备可以远程访问的服务器,最好有独立的公网IP,硬件配置至少1核1G,预装CentOS或者Debian系统。有一个独立的域名更好,比如 music.test.com ,否则就要用 IP+端口号访问音乐服务器。

1 安装docker-compose

推荐使用 docker 安装 Navidrome ,首先安装 docker-compose :

# 安装yum工具
yum install -y yum-utils
# 设置源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum install -y docker-ce 
# 启动doker服务
systemctl start docker
# 安装docker-compose
yum install docker-compose

2 安装Navidrome

编辑docker-compose.yml,内容如下:

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    user: 0:0
    ports:
      - "8080:8080" #自定义端口
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    volumes:
      - "/usr/local/music.test.com/data:/data"
      - "/usr/local/music.test.com/music:/music:ro"

volumes 参数指定数据 data 和音乐文件 music 的映射路径,/usr/local/music.test.com/ 即为真实的文件路径。

# -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个yml
docker-compose -f docker-compose.yml up -d

执行以上启动命令后 Navidrome 将会安装成功,内网访问路径是 http://localhost:8080

3 配置外网访问

配置 Nginx 将 music.test.com 域名映射给内网地址,再配置域名解析,将 music.test.com 解析为真实IP。

server {
    listen 80;
    server_name music.test.com;
	access_log /var/log/nginx/music.test.com combined;
	
	location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }
}

完成以上三步后,在路径 /usr/local/music.test.com/music 上传一些音乐文件,然后通过地址 http://music.test.com/app 就能访问到音乐服务器界面,按系统提示添加管理员账号和密码,最后呈现的效果如下图所示:

Navidrome 会自动扫描 music 目录下的音乐文件元信息,形成一个歌曲管理清单。如果在清单里面看不到最新上传的歌曲,可以点击右上角的心跳图标,再点击“完全扫描”按钮,扫描所有文件。

4 配置手机客户端

日常听歌时,可以通过 Navidrome 管理后台直接播放音乐,也可以安装手机客户端:

  • IOS: playSub、Substreamer、Amperfy、iSub
  • Android: DSub、Subtracks、Substreamer、Ultrasonic 、Audinaut

推荐使用 Substreamer,这个APP更加符合国人的使用习惯,主页地址: https://substreamerapp.com/ 。IOS客户端下载地址: https://apps.apple.com/us/app/substreamer/id1012991665 ;Android客户端下载地址: http://m.289.com/azrj/477219.html 。Substreamer 首次启动后根据界面提示填写服务器地址 http://music.test.com ,以及第三步配置的账号和密码。Substreamer 启动之后自动获取音乐数据,如下所示:

5 修改歌曲元信息

无论歌手发布过多少歌曲,一般只有几首歌会被放在歌单反复听,像周杰伦这种高产者几乎是凤毛麟角。好听的歌曲往往分布在不同的专辑中,Substreamer 默认按专辑分组展示音乐列表,界面上专辑列表很长,但是进入专辑里面仅有一两首歌,用户听起来非常不方便。可以用软件 Mp3tag 修改歌曲元信息,将歌曲改成同一个专辑名称,这样就将它们聚合在一起。Mp3tag的下载地址 https://www.mp3tag.de/en/dodownload64.html

根据我国法律规定,未经著作权人许可,将其享有著作权的内容复制传播,原则上触犯著作权法。请购买正版歌曲再上传至 Navidrome 实现你的听歌自由,切勿使用磁力搜索器获取盗版音乐。

参考
https://www.cnblogs.com/niumoo/p/16951437.html
https://www.mp3tag.de/en/dodownload64.html
https://www.jianshu.com/p/d31fb0540910