简介
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项目地址
然后点击顶部的标签
点击最新的版本号
滑倒下面,找到对应自己服务器的版本,点击右键,复制链接地址
使用SSH工具链接服务器,然后使用下面命令创建文件夹
mkdir /opt/navidrome
进入刚刚创建的文件夹
cd /opt/navidrome
使用wgeet命令下载刚刚复制的链接的文件
wget https://github.com/navidrome/navidrome/releases/download/v0.58.0/navidrome_0.58.0_linux_amd64.tar.gz
下载完成后,使用ls命令查看刚刚下载的文件
ls
解压
使用tar命令解压刚刚下载的文件
tar -zxvf navidrome_0.58.0_linux_amd64.tar.gz
使用ls命令查看解压出来的文件
我们只需要保留navidrome这个文件就行,其他的直接使用rm命令删除
rm -f LICENSE navidrome_0.58.0_linux_amd64.tar.gz README.md
配置navidrome
使用vi命令创建一个配置文件
vi navidrome.toml
然后把下面配置内容根据自己需求修改一下,复制粘贴进去
# ==========================================
# 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" # 背景缓存大小
编辑完成后,按键盘上的esc键退出编辑模式,然后输入:wq会出保存并退出
使用ls命令查看现有文件
刚刚我们的配置文件中写了数据库路径和音乐文件存放路径,我们需要创建对应的文件夹
使用mkdir命令创建data文件夹和music文件夹,然后使用ls名称查看是否创建对位置
mkdir ./data ./music
安装ffmpeg
ffmpeg是开源多媒体处理工具,它主要用于音视频的 编码、解码、转码、录制和流式传输,我们在配置文件中写了启用编码,所以要安装这东西
有点linux源仓库里面有ffmpeg,有点没有,我们直接手动编译安装
说是手动,但是其实就是手动运行脚本
使用vi命令创建一个名称为install_ffmpeg.sh的文件
vi install_ffmpeg.sh
把下面内容复制粘贴进去,或者是直接到本站资源库里面搜索
#!/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 "==> 如果重新运行脚本,将会更新到最新版本。"
按键盘上的ESC键退出编辑模式,输入:wq回车保存退出
使用chmod命令修改权限,让脚本可以运行
chmod +x install_ffmpeg.sh
运行脚本
./install_ffmpeg.sh
测试启动
先测试一下是否可以正常启动,启动信息如果没有报错就是成功启动了
./navidrome
设置开机自启动
进入/etc/systemd/system/文件夹下
cd /etc/systemd/system/
使用vi命令创建一个名字为navidrome.service的文件
vi navidrome.service
把下面内容根据你的情况修改一下,主要是修改文件路径
[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
按键盘上的ESC退出编辑模式,输入:wq回车保存并退出
使用chmod命令给文件授权
chmod +x navidrome.service
让系统重新读取所有服务配置文件
systemctl daemon-reload
设置开机自启
systemctl enable navidrome
启动、停止、重启命令
启动命令
systemctl start navidrome
停止命令
systemctl stop navidrome
重启命令
systemctl restart navidrome
登录navidrome
使用浏览器,在地址栏输入IP:端口登录navidrome
第一次登录先要创建一个管理员账户
设置中文
点击右上角的用户图标
选择Personal
点击Language的下拉框,找到简体中文并选中
手机端
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为例,其他软件也大同小异
打开软件,点击左上角的三条杠
点击设置
点击服务器
点击添加服务器
点击刚刚添加的服务器,进入编辑
输入服务器名称(随便填)然后服务器地址,用户名,密码,把测试连接上的允许不安全连接
填写完成后点击测试连接,连接成功即可