• Auddly Music Server的编译和安装


    本文始于 202111 月,已经忘记了是什么原因一直没发,这次基本上全部重写了一遍,除了官方的图,所有图片都是重新截取的;

    什么是 auddly ?

    auddly 是一款自托管音乐流应用程序。

    什么是 auddly-server ?

    auddly-server 是一款开源、简单的自托管音乐流媒体服务器,之前叫 waveline-server,主要提供 API 接口服务。

    在这里插入图片描述

    关于 API 可以看官方的文档:https://github.com/Wellenline/auddly-server#api

    构建镜像

    如果你不想自己构建,可以跳过,直接阅读下一章节

    Auddly 分为前、后端,dockhub 上虽然能搜到前端的镜像 wellenline/auddly,但是架构是 arm64 的,而且时间也有点久远了

    服务端只能找到两年前的 wellenline/waveline-server

    但这没什么关系,官方提供了 Dockerfile,只需要我们重新构建一下就可以了

    服务端

    构建服务端镜像的基本命令如下👇

    # 下载代码
    git clone https://github.com/Wellenline/auddly-server.git
      
    # 或者加个代理  
    git clone https://ghproxy.com/github.com/Wellenline/auddly-server.git
      
    # 进入目录  
    cd auddly-server
      
    # 构建镜像
    docker build -t wbsu2003/auddly-server:v1 .
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Web 端

    构建网页端镜像运行的基本命令如下👇

    # 下载代码
    git clone https://github.com/Wellenline/auddly.git
      
    # 或者加个代理  
    git clone https://ghproxy.com/github.com/Wellenline/auddly.git
      
    # 进入目录  
    cd auddly
    
    # 修改 Dockerfile,解决报错
      
    # 构建镜像
    docker build -t wbsu2003/auddly:v1 .
    
    # 运行容器
    docker run -d \
       --name auddly-web
       -p 5121:80 \
       wbsu2003/auddly:v1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    需要注意的是,Web 端官方的 Dockerfile 直接编译镜像会报错,需要做两处修改:

    1. 修改 node 的版本; 从 node:15-alpine3.10 更换为 node:lts-alpine
    2. Dockerfile 中需要屏蔽 COPY package-lock.json /app

    安装

    服务端

    服务端涉及到两个镜像,我们采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

    version: "3"
    
    services:
      app:
        image: wbsu2003/auddly-server:latest
        container_name: auddly-server
        restart: always
        environment:
          - MONGO_URL=mongodb://auddly:YkdQ7iEBWTL7N2yk@mongodb/auddly?authSource=admin
          - MUSIC_PATH=/music
          - CACHE_PATH=/cache
          - JWT_SECRET=674666487456875
          - PORT=5000
          - HOST=http://192.168.0.197:5122
          - ADMIN_EMAIL=wbsu2003@gmail.com
          - ADMIN_PASSWORD=123456
        volumes:
          - ./music:/music
          - ./cache:/cache
        ports:
          - 5122:5000
        links:
          - mongodb
        depends_on:
          - mongodb
    
      mongodb:
        image: mongo:latest
        container_name: auddly-mongo
        environment:
          - MONGO_DATA_DIR=/data
          - MONGO_LOG_DIR=/dev/null
          - MONGO_INITDB_ROOT_USERNAME=auddly
          - MONGO_INITDB_ROOT_PASSWORD=YkdQ7iEBWTL7N2yk
        volumes:
          - ./data:/data
        command: mongod --auth --logpath=/dev/null
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    其中 mongodb 部分的变量说明👇:

    可变
    MONGO_DATA_DIR默认设为 /data
    MONGO_LOG_DIR默认设为 /dev/null
    MONGO_INITDB_ROOT_USERNAME用户,默认设为 auddly
    MONGO_INITDB_ROOT_PASSWORD密码,用密码生成器生成

    auddly-server 部分的变量说明👇:

    可变
    MONGO_URL数据库库地址
    MUSIC_PATH音乐路径,默认为 /music
    CACHE_PATH缓存路径,默认为 /cache
    JWT_SECRET默认为 12345,似乎只能使用数字
    SPOTIFY_IDSpotify 客户端 ID
    SPOTIFY_SECRETSpotify 客户端 Secret
    LAST_FM_API_KEYLast.fm 获取的 API Key
    LAST_FM_API_SECRETLast.fm 获取的 Shared Secret
    LAST_FM_USERNAMELast.fm 用户
    LAST_FM_PASSWORDLast.fm 密码
    PORT容器端口,默认为 5000
    HOST主机地址:用的群晖主机+本机端口
    ADMIN_EMAIL管理员账号
    ADMIN_PASSWORD管理员密码
    1. 关于 SpotifyLast.fm,可以参考老苏写的『 音乐流媒体服务器Navidrome 』相关部分,但老苏觉得在国内作用不大,所以没设
    2. MONGO_URL 按前面的设置,拼接为 mongodb://auddly:YkdQ7iEBWTL7N2yk@adb/auddly?authSource=admin
    3. JWT_SECRET 用密码生成随机生成了一个纯数字的 674666487456875

    然后执行下面的命令

    # 新建文件夹 auddly 和 子目录
    mkdir -p /volume2/docker/auddly/{cache,data,music}
    
    # 进入目录
    cd /volume2/docker/auddly
    
    # 将 docker-compose.yml 放入当前目录
    
    # 一键启动
    docker-compose up -d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果没什么意外应该会正常启动

    Web 端

    Web 端就一个镜像 ,用 docker cli 安装更快捷

    # 运行容器
    docker run -d \
       --name auddly-web \
       -p 5121:80 \
       wbsu2003/auddly:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行

    在浏览器中输入 http://群晖IP:5122 就能看到服务端的界面,只有 JSON 格式的数据

    格式化之后

    {  
        "load":{  
            "idle":2951412165,  
            "total":3066084135  
        },  
        "version":"5.0.1",  
        "arch":"x64",  
        "node_version":"v15.14.0",  
        "num_cpus":4,  
        "uptime":229.572266431,  
        "free_mem":366473216  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在浏览器中输入 http://群晖IP:5121 就能看到 Web 端的界面

    这里需要输入服务端的地址,就是我们前面 docker-compose.yml 文件中设定的 HOST=http://192.168.0.197:5122

    如果要从互联网访问,服务端和 Web 端都需要反代

    接下来需要用前面设定的 ADMIN_EMAILADMIN_PASSWORD 登录

    登录成功后的主界面还是空空的

    测试用的音频还是那几个

    主要是剪来剪去可以节省空间 😂

    应该是没设定 SpotifyLastfm 的缘故,没有专辑封面

    其实专辑内有 cover.jpg 文件

    音轨模式也是一样

    直接可以播放

    在这里插入图片描述

    进入右上角的 Queue 有播放列表和界面

    再回到首页的 Dashboard,就会有统计信息了

    小结

    没有找到 Auddly支持的音频格式的说明,反正老苏能确定的是,mp3 没问题,整轨的 wav 肯定是不支持的

    参考文档

    GitHub - Wellenline/waveline-server: Simple self-hosted music streaming server
    地址:https://github.com/Wellenline/waveline-server

    Auddly - self hosted music streaming
    地址:https://auddly.app/

  • 相关阅读:
    Guava Cache 异步刷新技巧,你值得拥有!
    使用Xshell远程连接Linux
    FLASK中的鉴权的插件Flask-HTTPAuth
    SOLIDWORKS功能布局实用技巧之保存实体技术
    为什么要使用设计模式,以及使用设计模式的好处
    基于jsp+mysql+ssm大学本科考研服务系统-计算机毕业设计
    JS--拷贝数组的方法(浅拷贝)
    操作系统之——调度算法
    基于Vue和Spring Boot的在线点餐系统设计与实现
    KT148A语音芯片ic工作原理以及芯片的内部架构描述
  • 原文地址:https://blog.csdn.net/wbsu2004/article/details/128031846