简介

Navidrome 是一个轻量级的、自托管的音乐服务器,类似 Subsonic,但更加现代和开源。它可以让你在任何设备上访问和播放自己的音乐库,并支持转码、Web 界面、API 等多种功能。

支持linux部署和windows部署



地址

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

官网地址:https://www.navidrome.org/

官网手册地址:https://www.navidrome.org/docs/

也可以从本站的资源库里面搜索下载,本站资源库提供的版本是linux-amd64版本



部署环境

操作系统:Almalinux



第一步:下载/解压Navidrome

下载

首先打开github项目地址

1.png

然后点击顶部的标签

2.png

点击最新的版本号

3.png

滑倒下面,找到对应自己服务器的版本,点击右键,复制链接地址

4.png

使用SSH工具链接服务器,然后使用下面命令创建文件夹

mkdir /opt/navidrome

5.png

进入刚刚创建的文件夹

cd /opt/navidrome

6.png

使用wgeet命令下载刚刚复制的链接的文件

wget https://github.com/navidrome/navidrome/releases/download/v0.58.0/navidrome_0.58.0_linux_amd64.tar.gz

7.png

下载完成后,使用ls命令查看刚刚下载的文件

ls

8.png


解压

使用tar命令解压刚刚下载的文件

tar -zxvf navidrome_0.58.0_linux_amd64.tar.gz

9.png

使用ls命令查看解压出来的文件

10.png

我们只需要保留navidrome这个文件就行,其他的直接使用rm命令删除

rm -f LICENSE navidrome_0.58.0_linux_amd64.tar.gz README.md

11.png



配置navidrome

使用vi命令创建一个配置文件

vi navidrome.toml

12.png

然后把下面配置内容根据自己需求修改一下,复制粘贴进去

# ==========================================
# Navidrome 配置文件示例 (最全)
# ==========================================

# -------------------
# 服务器设置
# -------------------
Port = 4533                  # Web界面端口
Address = "0.0.0.0"          # 监听地址,0.0.0.0 表示所有网卡
BaseURL = ""                 # 如果部署在子目录,例如 /music
LogLevel = "info"            # 日志等级: debug / info / warn / error

# -------------------
# 数据库设置
# -------------------
DataFolder = "/srv/navidrome/data"  # 数据库和缓存文件存放目录
DBType = "sqlite3"                   # 数据库类型: sqlite3 / postgres
DBPath = "navidrome.db"              # sqlite 数据库文件路径(如果使用 sqlite3)
# PostgreSQL 连接设置(如果 DBType=postgres)
PostgresHost = "localhost"
PostgresPort = 5432
PostgresUser = "navidrome"
PostgresPassword = "password"
PostgresDB = "navidrome"

# -------------------
# 音乐库设置
# -------------------
MusicFolder = "/srv/navidrome/music"   # 音乐文件目录,必须存在且可读写
ScanInterval = "5m"                     # 自动扫描音乐库的间隔,可设为 "10m"、"1h"
AllowedExtensions = ["mp3", "flac", "ogg", "m4a"]  # 支持的音频文件格式
FullScanOnStartup = true                # 启动时是否执行全量扫描
PlaylistImport = true                   # 启动时是否导入已有播放列表

# -------------------
# 用户与安全
# -------------------
NoAuth = false               # true 表示无需登录
SignupEnabled = true         # 是否允许用户注册
AllowSignUpAdmin = false     # 注册用户是否默认管理员,建议 false
DefaultUserQuota = 0         # 用户配额,0表示无限
UserSessionQuota = 5         # 每个用户同时允许的会话数
SessionTimeout = "24h"       # 会话过期时间

# -------------------
# 播放与转码
# -------------------
FFmpegPath = "/usr/local/bin/ffmpeg"  # FFmpeg 可执行文件路径
Transcoding = true                     # 是否开启实时转码
MaxBitrate = 320                       # 转码最大码率 kbps
TranscodingCacheMaxSize = "100MB"     # 转码缓存大小
AllowDownload = true                    # 是否允许客户端下载音乐
EnableCoverArt = true                   # 是否生成封面图

# -------------------
# API 设置
# -------------------
EnableSubsonic = true                   # 是否开启 Subsonic API
SubsonicSalt = "随机字符串"             # Subsonic API 密钥盐
EnableWebhooks = false                  # 是否开启 Webhooks 事件通知
EnableSpotify = false                   # 是否启用 Spotify 集成
SpotifyClientID = ""                     # Spotify Client ID
SpotifyClientSecret = ""                 # Spotify Client Secret
EnableLastFM = false                     # 是否集成 LastFM
LastFMAPIKey = ""                        # LastFM API Key
EnableListenBrainz = false               # 是否集成 ListenBrainz
ListenBrainzUsername = ""                # ListenBrainz 用户名
ListenBrainzPassword = ""                # ListenBrainz 密码

# -------------------
# 缓存设置
# -------------------
ImageCacheMaxSize = "100MB"         # 封面图缓存大小
BackgroundCacheMaxSize = "100MB"    # 背景缓存大小

# -------------------
# 高级与调试
# -------------------
Debug = false                        # 开启调试模式
EnableSSL = false                     # 如果你打算直接用 Navidrome 提供 HTTPS
SSLCertFile = "/path/to/cert.pem"    # SSL 证书路径
SSLKeyFile = "/path/to/key.pem"      # SSL 私钥路径

下面是我的配置文件

# -------------------
# 服务器设置
# -------------------
Port = 4533                  # Web界面端口
Address = "0.0.0.0"          # 监听地址,0.0.0.0 表示所有网卡
BaseURL = ""                 # 如果部署在子目录,例如 /music
LogLevel = "info"            # 日志等级: debug / info / warn / error

# -------------------
# 数据库设置
# -------------------
DataFolder = "/opt/navidrome/data"  # 数据库和缓存文件存放目录
DBType = "sqlite3"                   # 数据库类型: sqlite3 / postgres
DBPath = "/opt/navidrome/data/navidrome.db"              # sqlite 数据库文件路径(如果使用 sqlite3)

# -------------------
# 音乐库设置
# -------------------
MusicFolder = "/opt/navidrome/music"   # 音乐文件目录,必须存在且可读写
ScanInterval = "5m"                     # 自动扫描音乐库的间隔,可设为 "10m"、"1h"
AllowedExtensions = ["mp3", "flac", "ogg", "m4a"]  # 支持的音频文件格式
FullScanOnStartup = true                # 启动时是否执行全量扫描
PlaylistImport = true                   # 启动时是否导入已有播放列表

# -------------------
# 用户与安全
# -------------------
NoAuth = true               # true 表示无需登录
SignupEnabled = false         # 是否允许用户注册
AllowSignUpAdmin = false     # 注册用户是否默认管理员,建议 false
DefaultUserQuota = 0         # 用户配额,0表示无限
UserSessionQuota = 5         # 每个用户同时允许的会话数
SessionTimeout = "168h"       # 会话过期时间

# -------------------
# 播放与转码
# -------------------
FFmpegPath = "/usr/local/bin/ffmpeg"  # FFmpeg 可执行文件路径
Transcoding = true                     # 是否开启实时转码
MaxBitrate = 320                       # 转码最大码率 kbps
TranscodingCacheMaxSize = "1GB"     # 转码缓存大小
AllowDownload = true                    # 是否允许客户端下载音乐
EnableCoverArt = true                   # 是否生成封面图

# -------------------
# API 设置
# -------------------
EnableSubsonic = true                   # 是否开启 Subsonic API
SubsonicSalt = "随机字符串"             # Subsonic API 密钥盐
EnableWebhooks = false                  # 是否开启 Webhooks 事件通知
EnableSpotify = false                   # 是否启用 Spotify 集成
SpotifyClientID = ""                     # Spotify Client ID
SpotifyClientSecret = ""                 # Spotify Client Secret
EnableLastFM = false                     # 是否集成 LastFM
LastFMAPIKey = ""                        # LastFM API Key
EnableListenBrainz = false               # 是否集成 ListenBrainz
ListenBrainzUsername = ""                # ListenBrainz 用户名
ListenBrainzPassword = ""                # ListenBrainz 密码

# -------------------
# 缓存设置
# -------------------
ImageCacheMaxSize = "1GB"         # 封面图缓存大小
BackgroundCacheMaxSize = "1GB"    # 背景缓存大小

13.png

编辑完成后,按键盘上的esc键退出编辑模式,然后输入:wq会出保存并退出

14.png

使用ls命令查看现有文件

15.png

刚刚我们的配置文件中写了数据库路径和音乐文件存放路径,我们需要创建对应的文件夹

16.png

使用mkdir命令创建data文件夹和music文件夹,然后使用ls名称查看是否创建对位置

mkdir ./data ./music

17.png



安装ffmpeg

ffmpeg是开源多媒体处理工具,它主要用于音视频的 编码、解码、转码、录制和流式传输,我们在配置文件中写了启用编码,所以要安装这东西

有点linux源仓库里面有ffmpeg,有点没有,我们直接手动编译安装

说是手动,但是其实就是手动运行脚本

使用vi命令创建一个名称为install_ffmpeg.sh的文件

vi install_ffmpeg.sh

18.png

把下面内容复制粘贴进去,或者是直接到本站资源库里面搜索

#!/bin/bash
# =============================================
# FFmpeg 静态编译安装/更新脚本 (AlmaLinux)
# =============================================
set -e

INSTALL_DIR="/usr/local/bin"
TMP_DIR="/tmp/ffmpeg_install"
FFMPEG_URL="https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"

echo "==> 准备临时目录..."
rm -rf "$TMP_DIR"
mkdir -p "$TMP_DIR"
cd "$TMP_DIR"

echo "==> 下载最新 FFmpeg..."
wget -q --show-progress "$FFMPEG_URL" -O ffmpeg-static.tar.xz

echo "==> 解压..."
tar xJf ffmpeg-static.tar.xz
cd ffmpeg-*-amd64-static

echo "==> 安装/更新到 $INSTALL_DIR ..."
sudo cp -f ffmpeg ffprobe "$INSTALL_DIR/"
sudo chmod +x "$INSTALL_DIR/ffmpeg" "$INSTALL_DIR/ffprobe"

echo "==> 清理临时文件..."
rm -rf "$TMP_DIR"

echo "==> 安装完成!版本信息:"
ffmpeg -version
echo "==> 如果重新运行脚本,将会更新到最新版本。"

19.png

按键盘上的ESC键退出编辑模式,输入:wq回车保存退出

20.png

使用chmod命令修改权限,让脚本可以运行

chmod +x install_ffmpeg.sh

21.png

运行脚本

./install_ffmpeg.sh

22.png



测试启动

先测试一下是否可以正常启动,启动信息如果没有报错就是成功启动了

./navidrome

23.png



设置开机自启动

进入/etc/systemd/system/文件夹下

cd /etc/systemd/system/

24.png

使用vi命令创建一个名字为navidrome.service的文件

vi navidrome.service

25.png

把下面内容根据你的情况修改一下,主要是修改文件路径

[Unit]
Description=navidrome daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
#启动文件路径
ExecStart=/opt/navidrome/navidrome
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall navidrome

[Install]
WantedBy=multi-user.target

26.png

按键盘上的ESC退出编辑模式,输入:wq回车保存并退出

27.png

使用chmod命令给文件授权

chmod +x navidrome.service

28.png

让系统重新读取所有服务配置文件

systemctl daemon-reload

29.png

设置开机自启

systemctl enable navidrome

30.png



启动、停止、重启命令

启动命令

systemctl start navidrome

停止命令

systemctl stop navidrome

重启命令

systemctl restart navidrome


登录navidrome

使用浏览器,在地址栏输入IP:端口登录navidrome

31.png

第一次登录先要创建一个管理员账户



设置中文

点击右上角的用户图标

32.png

选择Personal

33.png

点击Language的下拉框,找到简体中文并选中

34.png



手机端

Navidrome 本身并没有官方手机客户端,但因为它兼容 Subsonic API,所以可以使用任何支持 Subsonic 的第三方音乐客户端。


软件推荐

Android 端推荐

1、Dsub(免费/开源)

支持离线缓存、流式播放、播放列表

支持 Subsonic API,兼容 Navidrome

下载方式:

前往项目地址下载或者本站资源库搜索下载

项目地址:https://github.com/paroj/DSub2000

2、Ultrasonic

界面简洁,支持流式播放和下载

支持多种音频格式

支持 Subsonic API

下载方式:

前往项目地址下载或者本站资源库搜索下载

项目地址:https://github.com/ultrasonic/ultrasonic

3、Subsonic 官方客户端

经典客户端,功能齐全

兼容 Navidrome

下载方式:闭源软件,本站不提供下载,自行百度


iOS 端推荐

1、Marvis Pro

高级音乐管理,支持 Subsonic

2、Subsonic iOS

官方 Subsonic 客户端,可用于 Navidrome

3、Dsub for iOS(部分第三方开发)

类似 Android 端 Dsub

下载方式:IOS端本站不提供下载


软件连接

这里使用安卓端的Dsub为例,其他软件也大同小异

打开软件,点击左上角的三条杠

36.jpg

点击设置

37.jpg

点击服务器

38.jpg

点击添加服务器

39.jpg

点击刚刚添加的服务器,进入编辑

输入服务器名称(随便填)然后服务器地址,用户名,密码,把测试连接上的允许不安全连接

40.png

填写完成后点击测试连接,连接成功即可

41.png



二维码

发表评论