个人音乐服务Navidrome搭建和使用

Navidrome:headphone::cloud: 与 Subsonic/Airsonic 兼容的现代音乐服务器和串流器。
Navidrome 是一款基于网络的开源音乐收藏服务器和流媒体。可以通过任何浏览器或移动设备自由收听收藏的音乐。

创建docker文件

采用Docker形式安装服务,准备工作是安装docker服务,参考 Install using the apt repository
Navidrome的主目录假定在/opt/navidrome , 创建docker compose文件

cd /opt/navidrome
vim docker-compose.yml

docker-compose.yml 内容

version: "3"
services:
  navidrome:
    image: deluan/navidrome:develop
    ports:
      - "14533:4533"
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 0
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: "/nav"
      ND_PLAYLISTSPATH: "."
      ND_LASTFM_LANGUAGE: "zh"
      ND_LASTFM_APIKEY: "lastfm_apikey"
      ND_LASTFM_SECRET: "lastfm_secret"
      ND_SPOTIFY_ID: "spotify_id"
      ND_SPOTIFY_SECRET: "spotify_secret"
      ND_ENABLEARTWORKPRECACHE: "false"
      ND_ENABLESHARING: "true"
    volumes:
      - "/opt/navidrome/data:/data"
      - "/opt/navidrome/music:/music:ro"

Navidrome有很多参数Advanced configuration ,使用熟悉了可以自己在环境变量里再增加配置。

参数名称 参数值 说明
ND_SCANSCHEDULE 0 设置为0不自动扫描,有变动了到网页里点击快速刷新就可以
ND_LOGLEVEL info 输出日志格式
ND_SESSIONTIMEOUT 24h 登录自动过期时间
ND_BASEURL /nav 相对路径,通过nginx代理很有用,不暴露navidrome的端口,有一定的保护作用
ND_PLAYLISTSPATH . 播放列表的相对路径,也就是在/opt/navidrome/music
ND_LASTFM_LANGUAGE zh LastFM配置为中文,配置三个参数,Navidrome 会自动去查询歌手的信息
ND_LASTFM_APIKEY lastfm_apikey Last.fm配置
ND_LASTFM_SECRET lastfm_secret Last.fm配置
ND_SPOTIFY_ID spotify_id 查询Spotify上的歌手信息
ND_SPOTIFY_SECRET spotify_secret Spotify配置
ND_ENABLEARTWORKPRECACHE false 不启用封面图片缓存,因为服务器资源紧张,就关闭了,推进设置为true
ND_ENABLESHARING true 启用分享功能,可以用audio标签分享到论坛 :grinning:

volumes映射说明:

  • /opt/navidrome/data:navidrome运行时生成的数据库文件
  • /opt/navidrome/music:上传音乐文件的目录,可以有多级目录,都会加载,不用担心

准备音乐文件

将音乐文件上传到/opt/navidrome/music 目录内容示意,按照个人喜好组织文件

music
├── 0
├── 1
├── 163-跑步音乐超燃歌曲180步频踩点节奏控必备单.m3u
├── 163-热歌榜.m3u
├── A
├── Apple-Top Songs.m3u
├── Q
├── QQ-热歌榜.m3u
├── R
├── S
├── Spotify-Running 180 BPM.m3u
├── Spotify-Weekly Top Songs Global.m3u
├── Spotify-Weekly Top Songs Hong Kong.m3u
├── T
├── U
├── V
├── W
├── X
├── Y
└── Z

歌曲播放列表文件内容示意(歌曲的位置是相对/opt/navidrome/music的位置):

#EXTM3U

#EXTINF:181, Benson Boone - Beautiful Things
B/Benson Boone/Benson Boone - Beautiful Things.mp3
#EXTINF:229, Ariana Grande - we can't be friends (wait for your love)
A/Ariana Grande/Ariana Grande - we can't be friends (wait for your love).mp3
#EXTINF:159, Djo,Joe Keery - End of Beginning
D/Djo/Djo,Joe Keery - End of Beginning.mp3
#EXTINF:268, Metro Boomin,Future - Like That
M/Metro Boomin/Metro Boomin,Future - Like That.mp3
#EXTINF:265, ¥$,Kanye West,Ty Dolla $ign - CARNIVAL
0/¥$/¥$,Kanye West,Ty Dolla $ign - CARNIVAL.mp3
#EXTINF:211, Teddy Swims - Lose Control
T/Teddy Swims/Teddy Swims - Lose Control.mp3
#EXTINF:132, Tate McRae - greedy
T/Tate McRae/Tate McRae - greedy.mp3
#EXTINF:252, Hozier - Too Sweet
H/Hozier/Hozier - Too Sweet.mp3

M3U格式参考https://en.wikipedia.org/wiki/M3U

启动Navidrome

cd /opt/navidrome
# 第一次启动
docker compose up -d

# 重启
docker compose stop
docker compose start

# 升级
docker compose down
docker compose pull
docker compose up -d

# 查看日志
docker compose logs -f docs-navidrome-1

Nginx配置

Nginx的服务配置请网络搜索

        location ^~ /nav/{
            proxy_pass  http://xxx.xxx.xxx.xxx:14533;
            proxy_buffering off;
            client_max_body_size    300m;
        }

Navidrome使用

第一次需要浏览器访问,创建管理员账号和密码,后续进入系统就可以愉快的使用了。
可以用管理员账号创建其他账号,分享给其他人使用

也可以手机端使用,Navidrome提供Subsonic API,兼容的APP可以到官网查看APPS

我是使用 Ultrasonic

更多

在网页里可以在个人信息设置同步听歌状态到Last.fm和ListenBrainz,这个网站在年度可以出听歌报告

浏览器里设置好之后,在Ultrasonic也可以设置同步信息

80 个赞

这个门槛有点高吧,需要一台大硬盘的服务器才行

2 个赞

在自己的nas上跑着,会不定期更新一些歌曲

2 个赞

后面看看大家感兴趣不,可以分享爬音乐的小程序,没有封装,纯个人使用

3 个赞

映射的目录支持 挂载onedriver吗

1 个赞

论坛有大佬试过,我没有加载过

2 个赞

可以免密码登录吗?我只想把音乐分享给其他人,一起听音乐,不想设置密码。设置密码太麻烦了。

1 个赞

现在好像是没有免密登录,可以两种方案实现:
1、创建一个公用账号
2、需要分享的歌曲已歌单或专辑或歌手的形式进行分享

1 个赞

感谢大佬指点。根据您的提示,我已将所有的歌曲都放进一个歌单里面,然后准备进行分享。可是没有找到分享的链接啊。如何分享歌单呢?可否再指点一下?感谢!要是能有截图提示那就最好了。

1 个赞

大佬,还这样的自建音乐服务器的项目推荐吗 :joy: :joy:
自己搭建音乐服务器平台,然后分享给其他人听歌,也方便自己听。
这个非要输入密码在某些时候确实不够方便 :joy: :pray: :pray:

1 个赞

Navidrome的刮削好像不如Jellyfin,我之前使用时候,一直不显示歌手照片,Jellyfin正常

2 个赞

刚在服务器上用emby又搭建成功了 :joy:
但还是不知道怎么用emby分享音乐,还是只能自己一个人听音乐 :joy:
感觉emby还蛮好用的

navidrome好像不支持alac

需要在docker环境变量启用这个参数

提供的docker-compose里有这个参数了,分享是歌单后面有3个点可以操作,然后里面有分享


手机上截的图,回头补一张电脑上的操作

2 个赞

服务后端是支持的,但是大部分浏览器不支持,有两个可以尝试的:1可以将ALAC格式转换为FLAC,2可以启用转码选项,在线播放时转换

原来如此

发自我的 iPhone

1 个赞


歌单是这样分享

感谢大佬~ :handshake: :handshake: :+1: