NAS 可以实现的功能非常多,对我个人而言最为常用的功能应该是 Audio Station —— 通过手机客户端可以随时收听自己收藏、转制的音乐,不受平台限制。

Audio Station

不过与这个需求所对应的,不管是国内用得比较多的网易云还是国外更流行的 Spotify,都在传统音乐内容外做起了播客,即便它们严格意义上来说并不算是 Pocket Casts 那样的泛用型播客。

鉴于 Pocket Casts 桌面端需要额外购买高级会员且 iOS 客户端也已经在国区 App Store 下架,我便萌生了在 NAS 上搭建私有跨平台播客订阅服务的想法。

今天分享一下具体的解决方案:基于 Airsonic 的配置、管理与全平台播客收听方案。

配置 Airsonic

Airsonic 本质上和 Audio Station 这样的私人音乐库服务类似,但它的功能相比 Audio Station 更加丰富,除了可以处理保存在 NAS 的音乐文件,Airsonic 还额外支持播客管理和流播,完美符合我们的需要。

选择 Airsonic 的另一个原因则在于其开源属性。如果你以前折腾过 NAS 云音乐库,很可能还听说过 Subsonic,Airsonic 正是 Subsonic 完全闭源之后的开源分支,所以在一定程度上也能和 Subsonic 的接口实现兼容,这一点也将成为本文的关键。

在低版本 Tomcat 上安装

Airsonic 本身基于 Java 开发,所以如果你的 NAS 支持较高版本的 Tomcat(8.5 以上),那么将 Airsonic 最新发行版的 war 包部署到 Tomcat 就可以直接使用了,这里不再赘述。

考虑到我的群晖 NAS 上的 Tomcat 还是 7.x 版本,安装更加复杂一点,这里便着重介绍一下低版本 Tomcat 的配置方法:通过 Docker 镜像部署。

安装前,我们首先需要创建好相关目录。首先在根目录新建一个专门的播客文件夹 Podcast:打开「控制面板 > 共享文件夹」,然后点击「新建 > 新增」并创建新的「共享文件夹」。

创建共享文件夹

需要注意的是在创建过程中需要对权限进行调整,比如在自己使用的账户 admin 这里勾选上「可读写」权限,完成之后等待系统生成目录即可。

注意权限设置

接下来则是安装 Docker,这个不妨去「套件中心」搜索安装。安装完成后打开 Docker,在侧边栏点击「注册表」,然后在搜索框中搜索「Airsonic」,找到 airsonic/airsonic 并点击右键选择「下载此映像」。

搜索下载

映像下载完成之后,在「映像」里面找到下载的 「airsonic」映像并双击开始部署。在「常规设置」里面对这个 Docker 容器重新命名,然后打开高级设置进行调整。

Docker 配置

切换到「端口设置」选项卡,这里有个比较重要的端口就是「容器端口 4040」;本机端口映射我选择了 10040,依次类推其他的端口我都采用了 100xx,方便后面在本地部署跳转。

路径映射

再切换到选项卡「卷」中,这里就是设置容器路径如何映射到 NAS 的路径,所以「转载路径」对应的是容器的路径,而「文件/文件夹」对应的就是 NAS 的真实路径。我的音乐和播客都保存在根目录下面,所以「文件/文件夹」对应的就是根目录;至于数据相关文件,我在 Docker 文件夹下面新建了一个 「airsonic」文件夹,所以 data 数据都会保存到「docker/airsonic」中。

设置完成后点击「应用」,这里高级设置就完成了。

配置完成

最后检查一下容器的「摘要」,然后勾选「向导完成后运行此容器」,最后点击应用生成并启动容器。

这里稍微等几分钟(容器启动会比较慢),然后在浏览器中输入 http://<nas 的内网 IP 地址>:10040 然后打开 Airsonic,看到以下的登录页面就算是成功了。

这样就配置成功了

使用 frp 实现外网访问

可以通过本地局域网运行之后,我们当然希望在外网也能访问部署在内网的 airsonic。这里我采用的办法依旧是万能的 frp,关于 frp 的基础设置可以参阅 这篇文章

假设你已经在 NAS 上部署好 frp 的客户端,接下来需要做的就是对现有配置文件进行修改,添加一部分有关 airsonic 的字段来实现外网访问:

打开 NAS 上的 frpc 配置文件(我这里默认保存在 docker/frpc 这个文件夹中),在 NAS 上的文件管理器上选择 frpc.ini 并使用「文本编辑器」打开,在最后加上这么一段配置:

[Airsonic]
type = tcp
local_ip = 127.0.0.1
local_port = 10040
remote_port = 6044

保存并重启 frpc 容器,然后应该就可以使用 https://你的外网 IP:6044 从外网访问你的 airsonic 服务了(如你的 VPS 有防火墙记得放行相关端口)。

配置 frpc 文件

在 Airsonic 上管理

在浏览器打开 Airsonic ,首先使用默认用户名 admin 以及密码 admin 登录,然后我们可以根据提示一步步完成初始化操作(实际上主要还是修改默认的管理密码),如果平时主要只是你自己使用,这里设置一个账号即可。

初次使用向导

虽说 Airsonic 主要是用来管理 NAS 音乐库的软件平台,但我们使用 Airsonic 的目的还是使用其中的播客模块。所以在设置中我们首先需要对 Podcast 部分进行设置,选择「设置 > 播客」选项卡,然后对播客下载和管理这部分进行设置,例如检查新节目是自动还是手动、保留节目的集数、下载保存路径等等,设置完成之后记得点击「保存」。

配置播客选项

接下来我们点击顶部选项卡中的「播客」,然后滚动到页面最下面的「订阅播客」,然后开始将自己此前订阅的播客的 RSS 地址一个个贴上去并点击「确定」,需要说明的点击订阅之后 Airsonic 不会立刻显示对应的播客名称等信息,你可以手动刷新页面来看是否成功。

添加播客订阅

对于一些已经托管到网易云以及喜马拉雅(采用非标准的 xml 导致无法使用泛用性客户端订阅)的播客节目,我采取的方法是在 NAS 上使用 Docker 再部署 RSSHUB,将生成的订阅地址粘贴到 Airsonic 来完成订阅。

注意,这里生成的地址可以使用 NAS 的自己的 localhost 加端口号,例如 http://127.0.0.1:1200/xxxx 这样的格式。

如果设置都正确的话,你会在「播客」看到已经完成订阅的播客节目 logo,并且会根据此前的设置开始下载,所以当你点击进入到某一个播客中会看到节目列表,你可以点击节目前的播放按钮将其添加到播放列表中。

在各平台上收听

在网页端设置完成之后,我们就可以使用客户端来访问 Airsonic 搭建的播客订阅平台并进行收听了。由于 Airsonic 并没有所谓的官方客户端,因此在部分平台访问还需借助第三方应用。

Android:DSub for Subsonic

因为我们主要用 Airsonic 管理播客订阅,相比只是通过 Airsonic 访问音乐库的需求而言,第三方客户端的选择要少很多,很多第三方客户端并不支持播客管理功能。

最后我在 Android 平台上找到了 DSub for Subsonic。

第一次打开 DSub for Subsonic 会首先打开一个 demo 服务器,这里我们将自己的服务器添加进来:打开侧边栏,然后在「setting > server」中点击「add server」新建一个服务器。需要注意的是在「server address」 中需要将端口号也要加上去(对应的当然使用的 frp 映射出来的公网地址),另外用户名和密码也可以在这里添加好,其他保持默认。

最后点击「test connection」测试,如果显示 OK 就没问题了。

然后回到侧边栏点击账号下面的三角切换到新添加的 Airsonic 服务器,稍等一会儿侧边栏中就会出现 Podcast 项目,点击进去应该就可以看到前面我们订阅的所有的播客节目了。点击一个节目播放可以看到类似泛用型播客客户端的播放控制界面,实际使用上也基本无差。

DSub for Subsonic 在 Play Store 上是一款收费应用,当然你也可以直接在其项目的 GitHub 上免费下载安装包来自行安装。

 

iOS:AVSub

我试过多款 iOS 上的 Airsonic 客户端,但支持播客的却只有这款名为 AVSub 的付费应用,虽说收费,但设计上符合 iOS 14 主流的设计规范,交互上非常的简单易懂(但没有中文)。

打开应用首先找到下方的「Setting」,然后在「Server Setting」中输入我们刚刚新建的Airsonic 服务器对应的公网 IP 以及端口号、用户名、密码等信息,最后点击「Connect」。成功之后稍等片刻,首页中的多个项目就会变成高亮,尤其是我们关注的 Podcast 部分。

在 AVSub 中,Podcast 部分采用了更加适合手机的单列表排列的方式来显示所有的播客源,并且会根据你在服务器上的设置来显示或者下载播客集数,播放页面则和很多播放应用的 UI 类似,甚至还支持隔空播放功能。

AVSub 国区 App Store 售价为 25 元,没有其他内购。

  

桌面端:Web 应用

桌面端我并没有使用所谓的第三方应用(实际上所有的第三方桌面客户端体验都不如网页端直接),Airsonic 的网页端除了管理之外自然也有一部分播放功能,虽然比起那些专业的播客播放器要逊色不少,但基本播放功能还是能够满足我的需求。

考虑到跨平台使用,我将其添加为 Chrome 应用来实现同步,具体设置方法为「更多设置 > 创建快捷方式」,然后就可以在 Chrome 应用中找到 Airsonic 了。如果想要在其他电脑上安装就在右键菜单中通过「在此设备上安装」完成。

结语

经过以上的操作,我基本上实现了个人订阅播客的全平台同步,无论是 Android、iPad、iPhone 还是桌面端,都可以基于 NAS 收听已订阅播客。

当然最重要的一点在于,同步平台基于自己的 NAS 所构建,稳定性在一定程度上甚至要比基于公有云的同步平台稳定得多,同时也无需支付各类播客应用的订阅费用。

> 下载少数派 客户端、关注 少数派公众号,发现更多实用 NAS 玩法 🔧

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺 🛒