2024年最新群晖搭建xiaoya小雅家庭影院的全面指南,以及解决常见问题的最佳实践

大家都知道xiaoya,而网络上有许多安装教程。许多新手往往只会照搬这些方法进行安装,导致出现问题却无法找到原因,因为许多细节没有被详细讲解,问题自然也层出不穷。

在这篇文章中,我们将深入探讨AList这款开源的跨平台网盘聚合工具。可以简单理解为,通过AList这个平台,你可以链接到自己拥有的各种网盘资源,从而更高效地使用这些网盘。

AList不仅能将所有网盘链接到一起,还支持通过一个网页展示这些链接的网盘,供他人浏览和使用。

因此,网络上涌现出许多热心用户分享自己聚合的网盘资源,其中较为出名的是一位名为Liu Xiaoya的神秘人,他运用高超的计算机技术,将近400个阿里云共享盘和30万个视频资源聚合在一起,并通过AList分享给他人使用。

这便是xiaoya AList的由来,而这个资源集合也被大家称为xiaoya超集

在xiaoya分享资源之后,越来越多的人开始访问小雅的网站,结果造成网站时常无法打开。因此,xiaoya想出了一个解决方案:提供一个源码加密的Docker镜像,供用户自行部署。

通过Docker方式,我们可以轻松地将xiaoya部署到自己的群晖中。

准备工作

为了在AList上挂载阿里云盘,我们首先需要获取云盘的Token,以实现在播放资源时的访问。

若要自行部署xiaoya AList,同样需要获取这些信息。因为在播放资源时,xiaoya会将资源转存到自己的云盘,以便实现播放。准备以下几项资料至关重要:

  • token(用于访问阿里云盘)
  • open token(用于访问阿里云盘)
  • folder id(用于转存资源的文件夹)

接下来,让我们看看如何获取这三项信息。

获取token

在浏览器中打开 https://alist.nn.ci/zh/guide/drivers/aliyundrive.html,点击获取 token按钮后,会出现一个二维码。

图片 使用阿里云盘手机APP扫描二维码后,再次点击使用阿里云APP扫描然后点击按钮,二维码下方将展示一个Token字符串。

请将该字符串复制,并保存为一个txt文件,命名为 mytoken.txt

若前述网址无法获取token,则可使用 https://aliyundriver-refresh-token.vercel.app/ 进行扫码获取。

图片

获取open token

浏览器访问 https://alist.nn.ci/tool/aliyundrive/request.html,可以通过直接登录(需网页登录阿里云盘)或扫码获取Open Token。

图片 根据个人情况选择授权范围(演示选择资源库)并点击允许。

图片 这样将得到一个较长的字符串,请将其复制并保存为一个txt文件,命名为 myopentoken.txt

获取folder id

打开阿里云盘的网页版,在资源库中创建一个新的文件夹,命名为xiaoya转存的文件夹,名称随意。

图片 进入该文件夹后,复制浏览器地址栏中"/"后的最后一串字符。

图片 将此字符串同样保存为一个txt文件,命名为 temp_transfer_folder_id.txt

到此为止,我们已经准备好三个txt文件,分别是xiaoya Docker容器所需的必要参数。请确保获取的信息及文件名称的准确无误。

图片

安装步骤

  1. 打开群晖的Container Manager,在注册表中搜索xiaoya,并下载第一个镜像。

图片

  1. 在下载过程中,创建一个用于存放xiaoya容器配置数据的文件夹,并将之前准备的三个txt文件上传到此文件夹中。

图片

  1. 返回Container Manager,运行下载的xiaoya镜像,修改名称为xiaoya,方便后续配置定时任务。

图片

  1. 增加端口映射(5678与容器80进行映射),5678可以任意设置,只要没有被占用即可。

图片

  1. 进行文件夹映射。群晖路径为之前创建的文件夹,容器路径为/data

图片

  1. 其他设置保持默认,然后启动容器。
  2. 如果一切正常,将输出大量日志信息,如下图所示。

图片

  1. 几分钟后,在浏览器中打开【群晖IP:5678】即可看到如下界面。

图片

  1. 点击元数据下的all.mp4,若能正常播放,则代表搭建成功。

图片 此外,在阿里云盘的转存文件夹中,刚才播放的资源也将会出现。

图片

显而易见,随着时间的推移,播放的资源将不断占用云盘的空间,数量增加后,云盘的空间终究会被填满。

难道要手动一个个去删除吗?

这个问题有简单的解决方案,稍后将为你介绍。

播放资源

我们可以直接在网页上播放xiaoya资源,但这可能并不方便,因为某些特殊的音视频格式需要转码,网页无法直接播放。

此时,我们需要使用第三方客户端(支持webdav协议的客户端均可),以下是各平台推荐的客户端:

  • Win:Potplayer
  • macOS:Vidhub、infuse、HamHub
  • iOS:Vidhub、infuse、HamHub
  • appleTV:infuse、DivHub
  • 安卓TV:kodi、tvbox

客户端的添加方法非常简单,在各客户端中选择webdav协议,填写群晖的IP地址,路径填入/dav,端口填入5678。

图片

用户名和密码可在前面搭建的xiaoya网页中找到,默认为guestguest_Api789

图片

若你担心将xiaoya映射到公网后,人人皆可访问,这时就需要修改默认密码。

配置文件

回到群晖,打开xiaoya的配置文件夹,将会看到多个txt文件。

图片

虽然有些文件的功能已知,但其他文件的作用可能不太明确,然而在xiaoya文档中提供了详细说明,若有需要可直接查阅。

这里特别提到修改密码的操作。若要修改默认密码,需要新建一个guestpass.txt文件,文件内容即为新密码(需要重启xiaoya容器才能生效)。

图片

定时任务

至此,xiaoya的搭建和配置已算成功,但仍然存在几个待解决的问题。

xiaoya容器

为确保数据库和索引文件保持最新状态,xiaoya采用定时重启容器的方式进行更新。因此,我们需要在群晖上配置一个计划任务,以确保定时重启xiaoya容器。

打开群晖控制面板,新增一个计划任务,选择自定义脚本,确保以root用户运行。

图片

设置计划为每天5点执行。

图片

脚本内容输入docker restart xiaoya,这里的xiaoya是之前新建容器的名称。

图片

这样,群晖将每天自动重启xiaoya,更新数据的同时完成签到。

清理转存

另一个未解决的问题是,随着时间推移,云盘的转存目录会不断增大。

一旦占满空间,将导致无法播放资源。

可以运行以下shell脚本来解决此问题:

bash -c "$(curl -sLk https://xiaoyahelper.ddsrem.com/aliyun_clear.sh | tail -n +2)" -s 3

不过,我查看了该脚本的代码,发现其拉取了一个alpine镜像,将脚本放入其中并启动该keeper容器,同时集成了签到和操作xiaoya容器等功能,清理转存的过程显得非常不智能。

我使用后感到非常不便(代码也显得冗杂),并且在最近一次xiaoya更新时直接导致我的xiaoya容器崩溃。

图片

因此,我决定自己编写一个脚本,去掉冗余和多余的功能。

  • 清理超过5小时转存的文件(从最早的文件开始清理)
  • 如果空间满了,则自动循环删除文件,直到空间足够(同样从最早的文件开始删除)

然后,将清理脚本clear.py上传到xiaoya的配置文件目录,并复制该文件的路径。

图片

接着新增一个计划任务,设置每隔3小时运行该脚本(注意:开始时间如果超过当前时间,则会在第二天才运行)。

图片

脚本配置为python3 /volume1/docker/xiaoya/clear.py,路径为之前复制的脚本路径。

图片

最后选择脚本并点击运行进行测试。如果在计划任务中设置了日志保持文件夹,可以在该文件夹中查看所有计划任务执行的记录。

图片