关于 Navidrome
- Navidrome 是一个自托管的开源音频服务器和流媒体播放器。它让你可以通过任何浏览器或移动设备自由地收听你的音频
- 简单来说,其类似私人云盘,需要你自己部署,自己上传你的音频。如果你有服务器的话,你就可以在任何地方任何时刻愉快的收听音频了。
准备工作
- 有英语阅读能力的,可以先看看 官网部署指南
- 拥有下面的一种或多种
- 公网Linux服务器(最好,但是储存贵呀)
- 局域网Linux服务器
- NAS
- 虚拟机(用虚拟机安装飞牛来体验)
- 如果你是Linux服务器,自行安装docker(确保普通用户可以操作docker)和docker-compose(可选)
- 菜鸟教程-Docker安装
- 菜鸟教程-Docker Compose安装
快速部署
- 准备好一些音频,放某一个目录(确保当前用户可读可写)
- ssh登录Linux服务器/NAS,输入
id命令,获取你的用户id和组id
$ id
uid=1000(tlntin) gid=1000(tlntin) 组=1000(tlntin),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lxd),998(docker)
- 从上面的uid=1000和gid=1000来看,我的用户id是1000,组id也是1000
- 创建一个docker-compose.yaml文件,下面是一个示例
services:
navidrome:
image: deluan/navidrome:0.58.0
container_name: navidrome
ports:
- "4533:4533" # 映射端口,左边为最终服务器运行的端口,默认4533
restart: always # 开机自启动
environment:
PUID: 1000 # 容器运行用户ID,使用id命令可以获取到(暴力点可以设置为0,代表root用户)
PGID: 1000 # 容器运行用户组ID,使用id命令可以获取到(暴力点可以设置为0,代表root组)
ND_SCANSCHEDULE: 12h # 每隔12小时扫描一次
ND_LOGLEVEL: info # trace 为调试用,默认为info
ND_SESSIONTIMEOUT: 24h # 会话有效期
ND_BASEURL: "" #绑定域名,可以不填
ND_SCANNER_PURGEMISSING: "always" # 自动清除丢失的音频
ND_DEFAULTLANGUAGE: "zh-Hans" # 默认语言:中文简体
ND_TRANSCODINGCACHESIZE: "1000MB" # 转码缓存
ND_ENABLESHARING: true # 启用服务共享(用于分享功能)
ND_DEFAULTDOWNLOADABLESHARE: true # 共享可下载
ND_IMAGECACHESIZE: "5GB" # 图像缓存,默认100MB,建议设置大一些。
volumes:
- "./data:/data" # 左边配置保存目录,你可以改成绝对路径
- "/volume1/Music:/music:ro" # 左边为音频挂载目录,你可以改成你的音频目录
- 使用下面两条命令的任意一条命令,启动服务。
docker-compose up -d
# 或者
docker compose up -d
- 如果你是NAS,可以创建一个docker项目,然后把上面的docker-compose粘贴进去,应该也可以跑起来。
- 部署完成后,输入你的服务ip:4533来访问,例如
http://192.168.1.113:4533,然后打开后,首次会让你创建账号密码,记住它。这样部署就完成了,你可以找其它客户端来登录了。
高级部署
- 如果你想要更好的体验,更好懂你的推荐,更多封面,则可以继续看下去。
获取第三方
- last.fm官网,注册,登录,然后申请一个api-key,申请理由用英文,可以让AI帮你写一个,申请应用随便写一个,访问地址可以随便填(不过最好是填你的ipv6公网地址),这个可以帮你记录你的听音频习惯,方便更好的内容推荐,当然,它也可以帮你拿艺术家头像(不过需要外网能力)。可以百度看看别人的图文攻略。
- spotify官网,注册,登录,然后申请一个api-key,这个主要是帮你拿艺术家头像用的(需要外网能力)。注意:这个api非必选,理论上我们可以部署LrcApi这个项目来代替。
高级版docker-compose参考
- 弄好上面的api-key后,可以参考下面的docker-compose.yaml文件进行修改
- SSL证书可以不配,不配可以用多个域名做反向代理实现https
services:
navidrome:
image: deluan/navidrome:0.58.0
container_name: navidrome
ports:
- "4533:4533" # 映射端口,左边为最终服务器运行的端口,默认4533
restart: always # 开机自启动
environment:
PUID: 1000 # 容器运行用户ID,使用id命令可以获取到(暴力点可以设置为0,代表root用户)
PGID: 1000 # 容器运行用户组ID,使用id命令可以获取到(暴力点可以设置为0,代表root组)
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 12h # 每隔12小时扫描一次
ND_LOGLEVEL: info # trace 为调试用,默认为info
# ND_LOGFILE: "/data/log.txt" # log日志存放位置,可选
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: "" # 绑定域名,可以不填
ND_SPOTIFY_ID: "xxxx" # Spotify client ID 用于检索艺术家和专辑图片(可选)
ND_SPOTIFY_SECRET: "xxxx" # Spotify secret 用于检索艺术家和专辑图片
ND_SCANNER_PURGEMISSING: "always" # 自动清除丢失的音频
ND_DEFAULTLANGUAGE: "zh-Hans" # 默认语言:中文简体
ND_LASTFM_ENABLED: true # 启用last.fm(记录你的听音频习惯,对推荐有帮助)
ND_LASTFM_APIKEY: "xxxxxx" # last.fm API KEY
ND_LASTFM_SECRET: "xxxxx" # last.fm API SECRET
ND_LASTFM_LANGUAGE: "zh" # 启用last.fm 语言
ND_TRANSCODINGCACHESIZE: "1000MB" # 转码缓存
ND_ENABLESHARING: true # 启用服务共享(用于分享功能)
ND_DEFAULTDOWNLOADABLESHARE: true # 共享可下载
ND_IMAGECACHESIZE: "5GB" # 图像缓存,默认100MB,建议设置大一些。
# ND_TLSCERT: "/ssl/fullchain.cer" # TLS证书(可选)
# ND_TLSKEY: "/ssl/xxx.key" # TLS密钥(可选)
# ND_REVERSEPROXYWHITELIST: "::/0" # 允许任意ipv6地址反向代理
volumes:
- "./data:/data" # 配置保存目录,
- "/volume1/Music:/music:ro" # 左边为音频挂载目录
- /volume2/docker/ssl/:/ssl # ssl证书目录,可选
docker-compose up -d
# 或者
docker compose up -d