2024年最新群晖搭建xiaoya小雅家庭影院的全面指南,以及解决常见问题的最佳实践
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容器所需的必要参数。请确保获取的信息及文件名称的准确无误。
安装步骤
- 打开群晖的Container Manager,在注册表中搜索
xiaoya
,并下载第一个镜像。
- 在下载过程中,创建一个用于存放xiaoya容器配置数据的文件夹,并将之前准备的三个txt文件上传到此文件夹中。
- 返回Container Manager,运行下载的xiaoya镜像,修改名称为xiaoya,方便后续配置定时任务。
- 增加端口映射(5678与容器80进行映射),5678可以任意设置,只要没有被占用即可。
- 进行文件夹映射。群晖路径为之前创建的文件夹,容器路径为
/data
。
- 其他设置保持默认,然后启动容器。
- 如果一切正常,将输出大量日志信息,如下图所示。
- 几分钟后,在浏览器中打开【群晖IP:5678】即可看到如下界面。
- 点击元数据下的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网页中找到,默认为guest
和guest_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
,路径为之前复制的脚本路径。
最后选择脚本并点击运行进行测试。如果在计划任务中设置了日志保持文件夹,可以在该文件夹中查看所有计划任务执行的记录。