跳至主要內容

Alist(xiaoya)配置

三思原创大约 13 分钟Nasxiaoyadocker安装配置网络问题防火墙

本文介绍了如何在不同设备上安装和配置xiaoya的docker,包括openwrt、NAS和云服务器/VPS等环境。同时提供了设置强制登入和自定义密码的方法,以及解决浏览器访问问题的建议和阿里风控的注意事项。

image
image

Alist(xiaoya)配置

如何设置xiaoya的docker (notion.so)open in new window

你需要什么才能安装 xiaoya 的docker

  1. 软路由盒子类似 n1 等,具有 openwrt环境 (可以终端上一键配置)
  2. NAS 等具有docker插件 (无法或很难登入终端,需要图形化自行配置)
  3. 云服务器也就是俗称的 vps (可以终端上一键配置)

如何安装

openwrt下安装,调出终端命令行

openwrt控制面板左侧(“系统”或“服务”下找到“TTY终端”)

ssh 登入 openwrt

然后一键安装

curl -s http://docker.xiaoya.pro/update_xiaoya.shopen in new window | bash

NAS 下图形配置安装

请参照下面的 群晖配置截图,其它NAS产品的配置大同小异

详见 http://alist.xiaoya.pro/安装,配置,修复 xiaoya docker 指南/群晖NAS Docker安装xiaoya.pdfopen in new window

image

image

有的群晖因为固件原因,装载路径是 /data 保存应用会失败,那么尝试这样

image

这是unraid的配置参考

image

记住 端口映射是 5678 → 80 不是 5244 不然搜索会失效,出现下面的错误

image

image

云服务器/VPS 的配置

ssh 登入服务器,一键安装

curl -s http://docker.xiaoya.pro/update_xiaoya.shopen in new window | bash

另外有些平台需要额外在服务器上开放端口,选择放行 5678

设置强制登入,和自定义密码

把密码保存到 /etc/xiaoya/guestpass.txt (不过不要设置稀奇古怪的符号,例如;&#“~@()*$ 之类的)

如果你的xiaoya放在公网,为了防止别人蹭网,可以设置强制登入,新增 /etc/xiaoya/guestlogin.txt 这个文件,重启即可,文件有没有内容无所谓,如果取消强制登入就删除这个文件。强制登入的账号为 dav,密码使用 /etc/xiaoya/guestpass.txt 里设置的,同时webdav连接使用 dav 这个用户

上述2个功能设置好后需要重启docker才会生效。

配置好了docker,但是浏览器访问不了怎么办

image

image

请先检查alist所在设备的网络连接情况,

curl http://docker.xiaoya.pro/version.txtopen in new window 看看有没有获取到版本号

image

如果没有获取到版本号,那么就是网络问题,先解决网络联通的问题。

如果上面检测能获取版本号,说明网络没问题,那么就大概率是防火墙的问题,有可能是其它软件干扰了docker的防火墙规则,可以这样尝试修复docker防火墙规则

service dockerd restart

或者 (视乎你的系统)

systemctl restart docker

目的是重启 Docker Daemon管理进程来重建docker 防火墙规则,然后再

docker restart xiaoya

如果还是不行,那要使出终极大招了

iptables -F service dockerd restart docker restart xiaoya

依次执行

还不行的话,那么可以尝试用 host模式 来安装,可以避开了防火墙的麻烦,安装好后,最好重启设备清理一下防火墙规则

host模式(端口6789): curl -s http://docker.xiaoya.pro/update_xiaoya_hostmode.shopen in new window | bash 访问: http://xxxxx:6789/open in new window (xxxx 为你alist所在设备的 IP)

传统(bridge)模式和host模式可以同时安装,并不冲突,一个使用5678端口,一个使用6789端口

阿里的风控

阿里更新了接口,有好几个人都出现一会儿能放一会儿不能放的情况,共同点就是都是使用infuse,然后在刮削扫描,那么综合起来,可以判断出阿里对短时间同IP大量请求会出现限制,

表现在网页就是出现 ParamFlowException

表现在播放器就是500错误

大家留意一下,尽量停掉扫描,过一会而会自动好

image

image

所以现在不要刮削,阿里开始动态连接管理了,短时间大量请求直接抛出错误,长时间不确定会怎么处理,肯定对token和账号会做出限制,因为从被连接放来说,看起来就像流量攻击,我之前防止别人对我的网站建索引也是采用差不多的手段

现在下面这些行为就变成了高危操作

  1. 使用infuse等缺省设置进行扫描获取元数据
  2. 使用kodi,plex,jellyfin,emby进行刮削
  3. 使用alist进行建索引

一定要小心不要让短期限制变成对你账户的长期限制,停止上述3种行为

什么软件可以连接 xiaoya ?

文件管理类型

  • ES文件浏览器,Solid Explorer

视频播放器

  • IOS 平台: infuse, fileball,nplayer
  • 安卓平台: nplayer, Kodi, Reex, NovaPlayer(魔改版)
  • windows: potplayer

挂载到本地目录

  • rclone,raidrive,Mountain Duck

只有视频播放器可以通过webdav方式挂载 xiaoya的 网站 alist.xiaoya.proopen in new window,其它类型的无法挂载,但是你本地下载的docker没有此限制,这是为了避免文件管理和 rclone/raidrive 类的挂载被用来建索引和批量下载,因为这些网络访问是并发的,一次连接等于正常10个以上的用户访问,这样就挤压了其它用户的使用体验,毕竟公益性的服务背后没有强大的服务资源来支撑,所以就需要权衡来取舍了

如果要在自己的alist 里挂载xiaoya的网站,请用 Alist V3 方式,不要用webdav,用Alist V3 方式就填一个挂载路径和地址 http://alist.xiaoya.proopen in new window (切记,不要最后添加 / ,不然网页显示空白)。

如何在播放器上通过webdav 连接 xiaoya的 docker

参考 potplayer, nplayer, kodi 的配置截图

webdav 账号密码

用户: guest

密码: guest_Api789

potplayer

直连网站的设置

image

连接本地docker的设置

image

nplayer

直连网站

image

连接你本地docker

image

Kodi

image

image

Nova 魔改版(支持webdav,https://t.me/PlutoPlayer/127849open in new window

image

infuse

image

如何配置自己的token

阿里token

https://alist.nn.ci/zh/guide/drivers/aliyundrive.htmlopen in new window

https://aliyundriver-refresh-token.vercel.app/open in new window

获取你的移动端token

然后,在终端命令行 (xxxxxxxxxxxxxxxx 就是你获取的token)

echo xxxxxxxxxxxxxxxxxxxxxx > /etc/xiaoya/mytoken.txt

或者将你自己获取到的token粘贴至 etc/xiaoya/mytoken.txt文件里并保存。

NAS或者其它自行配置的请放入自己在配置中设定的文件夹中,文件名是 mytoken.txt

记住一定要是移动端获取的,并且是32位长度

是否正确放置了进去,可以通过下面指令来确认

docker exec -it xiaoya cat /data/mytoken.txt

Pikpak 账号

把你的pikpak账号 保存到 /etc/xiaoya/pikpak.txt

格式如下:

image

"xxx" "yyy" (将xxx替换为账号,yyy替换为为密码,"账号" "密码"中间有空格,切记引号要英文字符的,是 " 不是 “)

如果账号是手机号,要 +区号 ,比如你的手机号 12345678900 ,那么就填 “+8612345678900”

通过第三方认证注册的(比如谷歌),请留意看 “我的账号填对了,为什么还看不到pikpak目录下的内容” 的内容

注册开通PikPak请点击 注册open in new window

注册2个账号,一个用来存,一个用来看

注册后在 如图所示位置输入”兑换码73900974 既可获得5天的试用会员资格,然后你利用5天时间去把空间塞满,5天会员到期后内容不会被删除,只能看不能存,这个账号也会被限速,你就把它当作分享盘(分享给自己的另一个账号或别人)

注册另一个账号,不要存超过6G的东西,只要不超过基本会员的免费6G空间,就可以不限速,这个用来看别人的分享或者自己的另一个账号的分享

image

image

注册尽量利用邮箱注册,这个就可以注册很多个

如果出现下面几个这样的图示,则表示你需要科学上网,有的地区可以直连,有的地区不行

image

image

如何确认自己的pikpak账号设置了没有?

通过下面指令来确定

docker exec -it xiaoya cat /data/pikpak.txt

我的账号填对了,为什么还看不到pikpak目录下的内容?

如果不是账号密码填错,那么我猜你是这样的情况,注册的时候使用了google,FB等第三方快捷注册,虽然看起来账号是谷歌邮箱,但实际上是不能用邮箱登入,而必须使用第三方验证,alist现在还不支持这种跳转到第三方的验证,所以你要么在账号设置里绑定一个邮箱,或者重新注册一个新账号

你可以自己验证一下,选择邮箱登入,输入你的gmail邮箱看行不行

image

如何测试我的alist能够联通pikpak服务器?

在alist所在的设备命令行输入

curl https://inapp.mypikpak.com/pingopen in new window

如果出现一大堆内容,则表示能联通pikpak,反之则否

播放不了视频怎么办,视频有画面没声音怎么办?

如果是用浏览器有的能放,有的不能放,那么大概率是浏览器视频解码能力不足,请调用第三方播放器尝试,或者通过webdav连接alist来播放(一般浏览器不支持 H.265 和 AC3 编码视频)

image2

如果我布署在vps上会不会消耗我的流量?

302重定向和本地代理的差别是什么?

假设:

  • A 是播放器
  • B 是alist
  • C 是阿里

302: A访问B,B告诉A,你要的东西在C那里,我给你个地址,你直接找C,然后A直连C

   因为 A 最好播放的时候直接连 C了,所以不消耗 B的流量,也就是B所在的vps流量

本地代理: A访问B,B去访问C,把内容取回来,直接返回A,B做了中间人做转发

   B 在C的播放过程中消耗了 从C取内容(拉)+ 传给A (推),一进一出的流量

我以这个资源为例做具体说明

image

复制连接得到的是

http://alist.xiaoya.pro/d/音乐/流行/自听无损音乐545首 全部有封面歌词/王忻辰、苏星婕 - 清空.flacopen in new window

连接这个url得到第一个跳转

image

https://pdsapi.aliyundrive.com/v2/redirect?id=73e8b1fe5c204f1a85ea1ba3789e2da11673682931272933093open in new window

73e8b1fe5c204f1a85ea1ba3789e2da11673682931272933093open in new window 就是这个资源(flac 文件)在阿里云盘系统里面的编号

继续顺着跳转的url 连接会得到最终的阿里云的临时CDN资源的实际位置

image

这个一长串的才是真正的资源存放地址,播放器就是通过这个最终的url,打开资源播放,这个资源是有有效期的,就是这个标志,是个unix的时间戳,你转换一下就知道是6个小时

image

也就是六小时后你再用同样的url是打不开这个连接的,因为失效了,为什么要搞那么复杂,阿里直接给个资源存放地址不就完了,这是因为为了给用户最好的体验,更快的打开,使用了前置的缓存,也就是CDN,不同的用户获取到的CDN资源地址是有可能不一样的,阿里的CDN遍布全国,北京有,广东也有,北京的用户去广东取就会慢,才去就近最快速度的原则,北京附近的就指向北京的CDN资源,广东附近的就指向广东的CDN资源,但是CDN是中间层做缓存用的,就好像你硬盘的一级缓存,不是资源的最终存放地,量有限而且贵(使用内存加高速硬盘肯定贵),所以需要把不用的资源删除腾出地方给有用的,所以就有了有效期这个限制,过了有效期就删除腾地。

另外,要说明的是alist的代理角色,它是流量代理,不是缓存代理,所以并不能提高真实的视频播放流畅度,我以水管作为例子,

流量代理:

在网络通畅的情况下A → C 直管连接是最快的,B就好比水管的弯头/三通,A和C之间有一堵墙没法直连,那只能A → B, 然后 B → C , 这样通了多少是有损毁的,流速(用网络的名词就是多了延迟),实际体验就是不能看的变成能看了

缓存代理:

在A 和 C通和不通的情况下都可以实现,这是B的角色更像是增压阀,A → B 的管子应该比 B→ C 的管子粗,通过增压阀来保证B→ C 的(水压)流速,缓存代理是包含了上面流量代理的功能,实际体验就是不但能看而且看起来不卡了

如何定时和网站同步数据

如果你是基于Linux系统的(包括openwrt),可以用以下方法设置定时更新,终端执行

crontab -e

添加一条记录

0 6 * * * docker restart xiaoya

  1. 按 o 插入一行
  2. 然后把这堆文字输入进去
  3. 然后按键盘左上角 ESC键退出编辑模式
  4. 输入 :wq 保存退出

就是每天凌晨6点自动重启xiaoya docker去同步数据,你把6改成13,那就是下午1点,至于编辑器vi的使用方法请自行百度。