大家都知道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到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
,路径为前面复制的脚本路径。
然后选择脚本点击运行进行测试。提一句,如果在计划任务中设置了日志保持文件夹,就可以在文件夹里面看到所有计划任务执行的日志了。
后记
本来想把脚本封装成docker镜像的,再把xiaoya容器的一起弄成一个docker-compose文件会更加方便,没有时间搞了,先就这样。
想要脚本的,可以到我的论坛去下载https://www.synocircle.top