当前位置:首页 > 技术分析 > 正文内容

本地Docker部署开源跨平台音乐服务器Navidrome

ruisui882周前 (04-15)技术分析16

Navidrome在Github上已经标星超过11.7K。是一个全功能的跨平台开源音乐服务器应用,可以在macOS、Linux、Windows以及Docker等平台上运行,支持传输常见的MP3、FLAC、WAV等音频格式。它允许用户通过Web界面或API进行音乐库的管理和访问。提供音乐库智能管理、智能播放列表、用户权限控制以及多语言支持等多种功能。

项目官网:
https://www.navidrome.org/

Github项目网址:
https://github.com/navidrome/navidrome

请先确保已经安装了docker和docker-compose,本次例子将演示使用docker和docker-compose两种部署方式。

创建两个目录,用于挂载存放数据和音乐文件

本次例子,在根目录下创建一个/data/music目录和一个存放数据的/data/musicdata目录

demouser@demohosts:~$ sudo mkdir -p /data/music /data/musicdata
demouser@demohosts:~$ sudo chmod -R 777 /data/music /data/musicdata
demouser@demohosts:~$ ll /data
总计 16
drwxr-xr-x  4 root root 4096 10月 23 13:47 ./
drwxr-xr-x 24 root root 4096 10月 23 13:47 ../
drwxrwxrwx  2 root root 4096 10月 23 13:47 music/
drwxrwxrwx  2 root root 4096 10月 23 13:47 musicdata/

这创建的两个目录,将用于把容器中数据和音乐文件的目录挂载出来。

拉取Navidrome镜像

如果拉取时有报错,可以修改仓库的配置

demouser@demohosts:~$ docker pull deluan/navidrome:latest
latest: Pulling from deluan/navidrome
1cc3d825d8b2: Pull complete 
75c0824146ea: Pull complete 
4f4fb700ef54: Pull complete 
e1dbf20ea67c: Pull complete 
Digest: sha256:d864c5ddbae508920b157d73b08bd48e93ec8c422003a491edd01a889497582a
Status: Downloaded newer image for deluan/navidrome:latest
docker.io/deluan/navidrome:latest

命令行启动Navidrome容器(二选一)

成功拉取镜像后,就可以在命令行中运行下面的命令启动一个容器。

demouser@demohosts:~$ docker run -d --name navidrome --restart=always -v /data/music:/music -v /data/musicdata:/data -p 4533:4533 deluan/navidrome:latest
0f59022c25d4f77f0c78f975414a44600a98b6b33a76e3dad61db0600e9832e9
demouser@demohosts:~$ docker ps -a
CONTAINER ID   IMAGE                     COMMAND              CREATED         STATUS                            PORTS                                       NAMES
0f59022c25d4   deluan/navidrome:latest   "/app/navidrome"     6 seconds ago   Up 6 seconds (health: starting)   0.0.0.0:4533->4533/tcp, :::4533->4533/tcp   navidrome

docker-compose启动Navidrome容器(二选一)

创建并编辑docker-compose.yml,这里我把文件创建在/data中,文件的内容如下:

demouser@demohosts:/data$ sudo nano docker-navidrome.yaml
[sudo] demouser 的密码: 
demouser@demohosts:/data$ cat docker-navidrome.yaml 
version: "3" 

services: 
  navidrome: 
    image: deluan/navidrome:latest 
    user: 1000:1000 
    # should be owner of volumes 
    ports: 
      - "4533:4533" 
    restart: always 
    environment: 
    # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h 
      ND_LOGLEVEL: info 
      ND_SESSIONTIMEOUT: 24h 
      ND_BASEURL: "" 
    volumes: 
    - "/data/musicdata:/data" 
    - "/data/music:/music:ro" 

规约文件中,给挂载音乐文件的目录添加了只读的权限:ro

保存退出后,执行下方命令启动容器

demouser@demohosts:/data$ docker-compose -f /data/docker-navidrome.yaml up -d
WARN[0000] /data/docker-navidrome.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
[+] Running 1/1
  Container data-navidrome-1  Started 

测试远程登录

启动成功后,在可以访问到服务器的其他机器的浏览器中输入 服务器IP:4533,可以看到进入到了Navidrome的登录界面,需要设置一个用户名和密码。输入完成后,点击【CREATE ADMIN】创建用户并登录进系统。

登录后,点击界面右上角的头像图标进入个性化,可以设置语言为中文:

将音乐存放在上面创建的/data/music目录中,Navidrome会自动扫描目录中的音乐,并自动将歌曲分类为各个专辑的形式展现:

对于目录中的歌曲,也有信息和统计。

至此,一个远程运行的音乐播放服务器就部署完成了。



如果您对我的文章有兴趣,我把我发布的文章都归档到我私人网站中去,欢迎访问 Corner 三的小角落 -- 首页 查阅之前的文章。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3492.html

分享给朋友:

“本地Docker部署开源跨平台音乐服务器Navidrome” 的相关文章

7 招教你轻松搭建以图搜图系统

作者 | 小龙责编 | 胡巍巍当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。Milvus 作为一款针对海量特征向量的相似性检索引擎,旨在...

国产操作系统上Vim的详解03--安装和使用插件 | 统信 | 麒麟 | 中科方德

原文链接:国产操作系统上Vim的详解03--使用Vundle插件管理器来安装和使用插件 | 统信 | 麒麟 | 中科方德Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用Vundle插件管理器来安装和使用Vim插件的详解文章。Vundle是Vim的一款强大的插件管理器,可以帮助我们轻松地安...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

JS数组过滤元素的方法

引言JavaScript 作为前端开发的核心技术之一,在现代 Web 开发中扮演着举足轻重的角色。随着 Web 应用越来越复杂,高效处理数据集合的需求日益凸显。本文旨在介绍 JavaScript 中数组过滤的基础知识及其在实际项目中的应用技巧。技术概述定义数组过滤是 JavaScript 提供的一种...

最快清除数组空值?分享 1 段优质 JS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!大家好,我是大澈!本文约 600+ 字,整篇阅读约需 1 分钟。今天分享一段优质 JS 代码片段,用最简洁的代码清除了数组中的空值。老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!const arr...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...