云上利用Aria搭建离线下载工具
Keep Team Lv4

  有了一朵小云之后就忍不住去折腾。现在云上已部署静态Blog系统(Hexo),搭建有在线爬虫运行环境(在线Selenium)并且由此衍生出了一个简单的数据分析工具(二手房热力图),通过设置CRON(趟坑之旅)任务,尽可能利用夜间空闲时段进行数据爬取与分析。看上去好像小云需要执行的任务蛮多了,可实际上还远远没到小云的极限呢。

尽管作

  在很早很早以前,那个时候网络很精彩,想要的很多,但网速却很慢,通宵挂机下载也是常有的事儿。

网络卡

  当时就想如果能有一个远程下载工具,随时随地想下就下该多好呀。后来各大下载工具也都搞出过VIP才可享受的离线下载功能,那个时候看着各位大V用着梦幻般的离线下载功能,着实令人羡慕啊。不过现在我也有自己的小云了,好像拥有离线下载也不是梦了,不过毕竟已经1202年了,实在无法满足只有一个简单的离线下载功了呢,特别是对离线下载的电影,我更希望能自动完成转码切片,并支持浏览器播放,这样晚上启动下片模式,白天就可以用手机偷偷的看了。

nice

离线下载神器

  论下载速度,确实某雷说第二,没人敢当第一,可是某雷的应用并不适合部署在云端,更别说企图部署在一个资深“白嫖党”业主的云上了。其实在开源世界里还有很多优秀的下载工具供选择,aria2就是其中一个。

Aria2是一款开源下载工具,可帮助简化不同设备和服务器之间的下载过程。它支持磁力链接、BT种子、http等类型的文件下载,与迅雷及QQ旋风相比,Aria2有着优秀的性能及较低的资源占用,架构本身非常轻巧,通常只需要4兆字节(HTTP下载)到9兆字节(用于BitTorrent交互)之间。最重要的一点是Aria2完全免费!from Aria2中文网

  不过Aria2仅仅只是一个命令行的下载程序,类似wget命令,若想图形化管理还需要安装对应的web管理工具,官方提供的是WebUI,可以访问其提供的Demo

WebUI-aria2

  WebUI与aria2之间的关系类似C/S之间的关系,通过一个WebUI可以访问多个任意aria2,因此每个aria2都可以设置一个密钥,用来验证是否允许访问。

  除了官方的WebUI之外,还有Aria-NG也是挺受欢迎的三方管理工具。二者相比较起来并无太大的差异,毕竟最核心的下载功能是由Aria2提供,而非Web客户端。但是后来因为选择了三方封装的Aria2-pro,而选择了Aria-NG。

Aria2-Pro

  Aria2-Pro严格来讲并不是比Aria2更强大的软件,而是由P3TREX大佬针对实际网络环境做了配置优化,换句话来说是一个带有优化配置的Aria2。可别小看这个优化配置,Aria2虽然功能强大,可是配置不正确的话,也会罢工的。来看看大佬带给我们什么惊喜吧。

  • BT 下载率高、速度快
  • 重启后不丢失任务进度、不重复下载
  • 删除正在下载的任务自动删除未完成的文件
  • 下载错误自动删除未完成的文件
  • 下载完成自动删除控制文件(.aria2后缀名文件)
  • 下载完成自动删除种子文件(.torrent后缀名文件)
  • 下载完成自动删除空目录
  • 下载完成自动移动文件到指定目录
  • 下载完成自动上传到 Google Drive 和 OneDrive 等网盘(RCLONE 联动功能)
  • BT 下载完成自动清除垃圾文件(文件类型过滤功能)
  • BT 下载完成自动清除小文件(文件大小过滤功能)
  • 一键自动更新 BT tracker,进一步加速 BT 下载
  • 有一定的防版权投诉、防迅雷吸血效果
  • 更好的 PT 下载支持

  就问那一条特性不香了?除此之外还支持在下载完成后触发自定义脚本,这可就厉害了。让Aria2不再只是一个下载工具而可以变成智能网络中的一个节点。比如下载完成后自动根据文件属性进行分类,甚至做二次处理。

Docker容器化

  小云运行的是CoreOS系统,自然一切都是以容器运行为第一要务。幸运的是P3TREX还提供了一个容器化的Aria2-Pro Docker

A perfect Aria2 Docker image. Out of the box, just add download tasks and don’t need to think about anything else.

  这个slogan简直太棒了,just…don’t…else.直白而霸气呢。哈哈哈哈,行了,不吹了,部署上试试吧。

  由于Aria2-Pro提供了官方的Docker镜像以及参数配置说明,整个部署过程没有难度可言,这里就不赘叙,参考相关文档说明即可。部署好之后配合WebUI或AriaNG客户端使用即可。以下是我目前正在使用的docker-compose,和官方的说明差别不大。

aria:
    image: p3terx/aria2-pro
    environment:
      - PUID=500
      - PGID=500
      - UMASK_SET=022
      - RPC_SECRET=<密钥>
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - DISK_CACHE=64M
      - IPV6_MODE=false
      - UPDATE_TRACKERS=true
      - CUSTOM_TRACKER_URL=
    volumes:
      - /home/core/data/aria2/conf:/config
      - /home/core/downloads:/downloads
    restart: always
    networks:
      - netaria
    logging:
      driver: json-file
      options:
        max-size: 1m
  ariang:
    image: p3terx/ariang
    command: --port 6880
    networks:
      - netaria
    logging:
      driver: json-file
      options:
        max-size: 1m

  因为我有一个NGINX(同样是docker)专做端口转发,因此这里没有映射本地端口到aria容器(本地容器间端口可直接访问)。另外将下载目录映射到了本地,为其他容器共享下载数据。

最后

  • 鉴权

  首次使用Aria2的时候,不管用WebUI还是AriaNG都需要输入RPC密钥,这是唯一鉴别你是否具有访问权限的地方,因此请一定记牢且不要泄露RPC密钥。

  • BT下载速度

  对于BT下载资源获取很重要,提供资源的用户越多下载速度越快。目前有Peer、DHT、Tracker三种方式

  • Peer:在你获得一个有效用户后才会起作用,Peer 会获取该用户客户端里的用户信息。
  • DHT:相当于 Peer 的进阶,每个人都储存一部分 DHT 网络信息,需要的时候会通过该网络获得用户,然后再从该用户处获得更多的网络和用户,在连不上 Tracker 的时候很有效,但缺点是一开始是没有 DHT 网络的,必须要养一段时间(下载一些热门资源)才行。
  • Tracker:它会追踪下载同一个资源的用户,帮助你与其他用户建立连接,让其他用户把文件上传给你(给你提供下载速度),而你又把下载好的文件上传给其他需要的人(给别人提供下载速度)。

  Aria2Pro 会自动更新Tracker列表,所以为了能获得更好的下载体验,我们可以先选择一个用户数相对稳定的文件下载,以此来积累我们的DHT信息。

未完

  有了离线下载工具,后面我们再来看看怎么配合aria2实现视频的自动转码切片并支持HLS在线播放吧。