跳转到内容

音乐服务:OwnTone 与 Shairport ​

两个官方插件解决两件不同的事:OwnTone 让 NAS 成为音乐库服务器,音乐放在 NAS 上,播放器和遥控应用来取;Shairport 让 NAS 成为 AirPlay 音箱,手机把声音推过来,NAS 接着音响放出来。

适合谁 ​

你想要用哪个
把音乐放在 NAS 上,在 iTunes、MPD 客户端或遥控应用里浏览和播放OwnTone
用手机或电脑的 AirPlay 把声音推给 NAS,NAS 接音响播放Shairport

不适合:要手机应用、转码、多用户的完整音乐服务,用 Compose 应用里的 Jellyfin,或 Compose 插件示例清单里的 navidrome。

都不需要放到公网

两个服务都是为局域网设计的。OwnTone 默认让来自 192.168、fd 开头地址和本机的访问不需要密码(见下文)。不要映射到公网。

OwnTone:音乐库服务器 ​

插件信息 ​

项内容
包名openmediavault-owntone
来源官方插件,不需要 omv-extras。它取代了旧的 forked-daapd 插件
OMV 8 状态截至 2026-10-18 的官方软件源为 8.0.1-1
菜单位置服务 → OwnTone(Services → OwnTone)
依赖podman。安装时创建系统用户 owntone,属于 users 组

OwnTone 提供 DAAP(iTunes 用的共享协议)、MPD 和 RSP(Roku)三种服务,还带一个网页界面。在 系统 → 插件(System → Plugins)里安装。

它是怎么运行的 ​

  • 容器:单个 Podman 容器 owntone,由 systemd 单元 container-owntone 管理。它用宿主机网络(--net=host),端口直接出现在 NAS 的地址上,没有证书选项,网页界面是 HTTP。
  • 镜像从哪拉:Docker Hub,默认 docker.io/owntone/owntone:latest。访问不了时,用环境变量 OMV_OWNTONE_APP_CONTAINER_IMAGE 换成别的地址,用法见 环境变量。
  • 数据放哪:所选共享文件夹整个挂进容器的 /srv/media/,OwnTone 只扫描这里;配置在 /var/cache/owntone/config/owntone.conf,由 Salt 生成,不要手改;数据库在 /var/cache/owntone/db/。

配置 ​

服务 → OwnTone:

字段默认值说明
已启动(Enabled)关
端口(Port)3689音乐库服务和网页界面共用
共享文件夹(Shared folder)无音乐所在的共享文件夹,启用时必填。owntone 用户或 users 组要能读
媒体库名称(Library name)%h - OwnTone客户端里显示的名字,%h 是主机名
密码(Password)空访问音乐库的密码,可选
Web 页面(Web interface)下的密码adminadmin 用户登录网页界面的密码,启用时必填。改掉默认值

保存,点黄色提示条上的应用,第一次会拉取镜像。点 打开 UI(Open UI)打开 http://<NAS 地址>:3689。

几个要知道的行为:

  • 信任网段:默认情况下,来自本机、192.168 开头的 IPv4 地址和 fd 开头的 IPv6 地址的访问,不需要密码就能使用网页界面、遥控应用和 DAAP。家里用 10.x 或 172.16.x 网段时,这些客户端会被要求输入密码。要调整,用环境变量 OMV_OWNTONE_GENERAL_TRUSTEDNETWORKS。
  • MPD 默认关闭:插件把 MPD 端口设成 0。需要 MPD 客户端时,把环境变量 OMV_OWNTONE_MPD_PORT 设成 OwnTone 的默认端口 6600,再重新部署。
  • 按目录名归类:音乐目录下名为 Podcasts、Audiobooks、Compilations 的子目录,会分别被当成播客、有声书和合辑。封面图用 artwork、cover、Folder、folder 这几个文件名。
  • 没有本机音频输出:插件把 OwnTone 的本机输出设为 dummy,不会从 NAS 的声卡出声。网络里的 AirPlay 等音箱的使用,以 OwnTone 上游文档为准。

检查结果 ​

sh
# 在 OMV 的 shell 里执行(root)
systemctl status container-owntone
podman logs owntone              # 应用日志,扫描进度也在这里
ss -tlnp | grep ':3689'

打开网页界面,确认曲目数量不为 0;在支持 DAAP 的播放器里能看到媒体库名称,能播放。

备份与维护 ​

  • 音乐文件按 备份策略 备份,OwnTone 只读它们。数据库可以重建。
  • 升级:容器用本地已有的镜像启动,不会自动更新。官方没有文档化升级流程,按插件生成的单元文件推断:先拉新镜像(服务 → Podman → 镜像(Services → Podman → Images)里的拉取,或 podman pull docker.io/owntone/owntone:latest),再 systemctl restart container-owntone。
  • 环境变量 OMV_OWNTONE_APP_CONTAINER_START_OPTIONS 可以给容器追加 podman run 参数。

Shairport:AirPlay 接收端 ​

插件信息 ​

项内容
包名openmediavault-shairport
来源官方插件,不需要 omv-extras
OMV 8 状态截至 2026-10-18 的官方软件源为 8.0.2-1
菜单位置服务 → Shairport(Services → Shairport)
依赖shairport-sync、alsa-utils。它不是容器,是系统服务 shairport-sync

它实现的是 AirPlay 的 RAOP 协议,插件描述明确写着不支持 AirPlay 2(视频和照片流)。

前提:NAS 要有能出声的声卡 ​

声音由 ALSA 输出,NAS 要有被 Linux 识别的声卡:主板自带的声卡、USB 声卡或 DAC、HDMI 音频。很多 NAS 没有,这时 Shairport 没有用。在 OMV 的 shell 里用 aplay -l(alsa-utils 提供)列出播放设备,没有设备就别装。

配置 ​

服务 → Shairport:

字段默认值说明
已启动(Enabled)关
名称(Name)空手机里 AirPlay 列表中显示的名字,留空用主机名
验证(Authentication)关勾选后推流需要密码
密码(Password)空勾选验证后必填

保存,点黄色提示条上的应用。AirPlay 默认用 TCP 5000,并通过 Avahi 在局域网里广播自己;OMV 里配了防火墙时,要放行这个端口和 shairport-sync 用的 UDP 端口,范围见 shairport-sync 的文档。

检查结果 ​

sh
# 在 OMV 的 shell 里执行(root)
systemctl status shairport-sync
aplay -l                         # 确认有播放设备

在 iPhone 或 Mac 的 AirPlay 列表里应该出现你设的名字,选中后播放,音响出声。

常见问题 ​

OwnTone 的网页界面提示要密码,但我在家里。 你的网段不在默认的信任网段里,见上面的环境变量,或直接用 admin 和你设的密码登录。

应用时拉取 OwnTone 镜像失败。 通常是访问不了 Docker Hub,换镜像地址。

手机里看不到 AirPlay 设备。 手机和 NAS 在同一个网段;防火墙放行了 AirPlay 的端口;Avahi 在运行,见 局域网发现。

能看到设备,但没有声音。 用 aplay -l 确认声卡存在,并检查音响的接线和 ALSA 的默认输出设备。

想用 Compose 版本。 音乐服务有很多 Compose 应用可选,见 插件还是容器。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。