私有音乐服务解决方案

使用 Melody 和 Navidrome 搭建私有音乐服务

一、整体规划和实现效果

1.1 整体规划

Melody 负责全网搜索音乐并且将音乐下载到服务器上,Navidrome 负责将服务器硬盘里的音乐文件以流媒体的方式展示出来,在浏览器端播放,并且兼容所有的Subsonic/Airsonic 客户端。

1.2 实现效果

1.2.1 PC端

1.2.2 移动端

二、Melody 安装使用

2.1 安装

仓库地址:https://github.com/foamzou/melody

readme 中提供了多种安装方式,这里使用的是 docker 方式进行安装的。

1
docker run -d -p 15566:5566  -v ~/melody-profile:/app/backend/.profile foamzou/melody:latest

这里设置外部端口为 15566

2.2 使用

访问 [服务器ip]:15566 进入 Melody 服务,默认 key 是 melody,输入这个进入就行。

绑定云音乐账号,点击「我的云音乐账号」,然后点击「扫码登录」,扫描二维码登录即可

创建服务器音乐存储目录

1
mkdir ~/melody-profile/music

然后点击「设置」,配置音乐存储目录,然后点击「更新配置」按钮,完成配置!

2.3 验证

此时点击「搜索」按钮,随便搜一首歌,然后点击播放和下载等按钮,验证是否可以正常工作;

注:如果下载按钮是灰色,还需要进入容器中创建一下music目录,具体是如下命令

1
2
3
4
# 进入容器
docker exec -it [container id] sh
# 创建 music 目录
mkdir /app/backend/.profile/music

下载完成后,可进入服务器 ~/melody-profile/music 目录下验证是否有对应歌曲文件,如果有的话,证明 Melody 部署完毕!

三、Navidrome 安装使用

3.1 安装

仓库地址:https://github.com/navidrome/navidrome/

官方文档:https://www.navidrome.org/docs/installation/

官方也给出了多种安装方式,这里使用最简单的 docker 方式进行安装

  1. 在服务器中建一个目录存放 navidrome 安装数据

    1
    mkdir /opt/navidrome
  2. 进入该目录,创建 docker-compose.yml 文件,写入以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    version: "3"
    services:
    navidrome:
    image: deluan/navidrome:latest
    ports:
    - "40108:4533"
    restart: unless-stopped
    environment:
    ND_SCANSCHEDULE: 1h
    ND_LOGLEVEL: info
    ND_SESSIONTIMEOUT: 24h
    ND_BASEURL: ""
    volumes:
    - "./data:/data"
    - "/root/melody-profile/music:/music:ro"
  3. 执行以下命令,即可完成安装

    1
    docker-compose up -d

3.2 使用

访问 [服务器ip]:40108;首次进入会让你设置管理员用户名和密码,自行设置,一定要记住,后面客户端都需要用到这个。

进入后页面中会展示你下载到服务器上的歌曲

3.3 客户端

  1. PC:https://github.com/jeffvli/feishin
  2. 移动端(IOS):Amperfy
  3. 配置:
    • URL:http://[服务器ip]:40108/
    • 用户名 & 密码:就是首次进入 Navidrome 设置的用户名和密码