说明:上篇文章喵斯基部落发布一篇《群晖DSM6搭建NextCloud15私有网盘》文章,顺着文章继续讲下去,让NextCloud增加离线下载功能,这里我们用的是Aria2。
Aria2介绍
Aria2是一款基于命令行的超轻量级全平台多协议下载工具,支持诸如HTTP/FTP/BT/磁力等下载协议,唯独不支持电驴(在此缅怀一下当年的VeryCD )。Aria2本身是不带操作界面的,所以叫做命令行工具,但为了方便使用,很多大神自制了UI界面,常见的有Aria2WebUI、AriaNg等。这两种界面都是基于网页的,所以只要能连接到Aria2的服务器,无论在什么地方都可以轻松的进行下载管理,实现远程下载。
废话不多说,下面主要说说如何使用群晖DSM的Docker套件安装Aria2。
安装Aria2
首先在套件中心中安装Docker,安装好之后打开。
点击左侧的 注册表,使用关键字查找Aria2
,可以看到有很多不同版本。这里我选的是第一个xujinkai/aria2-with-webui
,从下面的注释可以看出来。这个镜像包含了Aria2和webui,这样使用的时候有图形界面会比较方便。选好之后右键 下载此映像。
点击左侧的映像,看到此镜像正在下载。Docker的镜像下载服务器对国内网络的支持不是很好,有时候下载很慢,请耐心等待。好在这个镜像大小只有24M。
映像xujinkai/aria2-with-webui
下载完成后,双击映像,开始创建容器。第一页的容器名称可以任意填写,高级权限没有必要选,资源限制可以根据自己的实际情况来,我这边没有做限制。下面点击高级设置。
接着点击卷标签,需要在此标签页添加两个文件夹。
- 添加一个文件夹作为默认下载文件夹(可以选择NextCloud的
files
文件夹),在对应的装载路径中填入/data
。 - 选择一个文件夹作为Aria2的配置文件储存位置,然后在装载路径中填入
/conf
。
注意:装载路径所填信息必须一致,否则程序无法识别会导致程序无法正常开启。
网络标签页保持默认不用修改,端口设置页建议将本地端口从自动改成固定的端口号,这个是任意填写的(也可以按照我设置进行),需要记住稍后有用。
环境标签页中点击+
号添加一个,可变填入rpc-secret
,值中任意填写一个验证码,这个在连接Aria2时需要用到。到这里高级设置就完成了,点击应用后回到上一级页面之后点击下一步。
这一页会把你的设置全部展示出来,检查没有问题就可以点应用了,默认向导完成后运行此容器。
现在Aria2下载器已经在运行了。
使用Aria2
在浏览器中输入群晖的IP和刚才设置的端口号,进入Aria2的WebUI界面,我的地址是192.168.2.110:6880
。点击设置,选择连接设置。在密码令牌处填写刚才设置的认证口令,这时RPC认证通过,会提示连接成功,左侧的设置窗口也会把相关配置显示出来。
局域网地址+端口,例如
192.168.2.110:6880
不支持外网访问,无法做到远程下载。请在群晖控制面板做好端口映射后,根据喵斯基部落之前发布的两篇文章《LanProxy 使用教程 : 一款拥有WebUI的内网穿透工具》和《Nginx反向代理》
点击添加,可以通过连接、种子和磁力链三种方式创建下载。
NextCloud全盘扫描
如果使用Aira2下载的文件无法在nextcloud中显示,请以root账号登陆ssh,并在nextcloud目录中执行下面命令:
#定位到nextcloud根目录cd /volume1/web/nextcloud#如果php7.x已加入到环境变量,请运行下面的文件扫描命令sudo -u http php occ files:scan --all --quiet
若在WebStation给nextcloud配置的虚拟主机使用php7.0且又同时安装了php7.2套件的请执行下面命令:
#定位到nextcloud根目录cd /volume1/web/nextcloud#如果php7.x未曾加入到环境变量,请运行下面的文件扫描命令sudo -u http php72 -c /usr/local/etc/php72/php.ini /volume1/web/nextcloud/occ files:scan --all --quiet
觉得每次下载都要执行一次很麻烦,写个脚本配合群晖的任务计划每隔15分钟执行一次就行。如下:
# 在nextcloud根目录创建一个sh脚本vim /volume1/web/nextcloud/scan_all_files.sh
脚本内容如下:
#!/bin/bash#如果遇到Aria2下载的文件没有权限修改,可以在此脚本中增加下面两行用于目录赋权。chown -R http:http <此处填写Aria2用于保存文件的目录路径>chmod -R 755 <此处填写Aria2用于保存文件的目录路径>#定位到nextcloud根目录cd /volume1/web/nextcloud#指定http用户通过occ命令对全局进行文件扫描sudo -u http php72 -c /usr/local/etc/php72/php.ini /volume1/web/nextcloud/occ files:scan --all --quiet
修改后,按ESC
键输入:wq
保存并退出。
依次打开群晖的控制面板->任务计划->新增->计划的任务->用户定义的脚本。具体的设置请参考下方动图:
自动扫描(推荐): 只需要修改 /volume1/web/nextcloud/config/config.php
文件,在文件最后一行);
前添加配置: 'filesystem_check_changes' => 1,
选项实现文件夹的自动扫描,实测效果很理想。
添加Tracker服务器
Aira2离线下载完成了,试了试BT种子没有任何速度怎么办?
除了为Aria2增加Tracker服务器外,建议先下载一个热门的BT种子文件,而不是磁力链接。这样可以帮助缓存DHT文件,渐渐地,速度就会起来了。比如试试下载树莓派操作系统的BT种子?前往下载
为 Aria2 添加 Tracker 服务器。
BitTorrent客户端下载一开始就要连接到tracker,从tracker获得其他客户端IP地址后,才能连接到其他客户端下载。在传输过程中,也会一直与tracker通信,上传自己的信息,获取其它客户端的信息。
trackerslist 是一个开源项目,每天更新 Trackers list。Aria2 是支持 RPC 的,类似与 AriaNG 等 WEB UI 都是靠 RPC 和 Aria2 通信的,那么我们也是可以写个脚本用 RPC 来设置 Aria2 ,并且实时生效,无需重启 Aria2。
脚本内容如下:
#!/bin/sh#more trackers list, see https://github.com/ngosang/trackerslisttracker_url='https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt'path='http://10.10.10.5:6800/jsonrpc'passwd='xxxxxx'tracker=$(echo -n $(curl -s -L $tracker_url | sed 'N;s/\n//g') | tr ' ' ',')[ -n "$tracker" ] && curl $path -d '{ "jsonrpc":"2.0","method":"aria2.changeGlobalOption","id":"cron","params":["token:'$passwd'",{ "bt-tracker":"'$tracker'"}]}'
注意:添加前,先修改 tracker_url
、path
和 passwd
三个变量的值。
保存上面的脚本,使用cron定时任务,即可定时自动更新到Aria2.conf
文件中。(关于任务计划如何开启可以参考文章:如何在群晖NAS上面使用Crontab任务计划?)
扩展:aria2.conf配置详解
以下是aria2.conf
配置文件的一些说明,请根据个人情况进行修改。
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 #### 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ## ## 文件保存相关 ## # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置dir=~/downloads# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M#disk-cache=32M# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc# 预分配所需时间: none < falloc ? trunc < prealloc# falloc和trunc则需要文件系统和内核支持# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项file-allocation=none# 断点续传continue=true ## 下载连接相关 ## # 最大同时下载任务数, 运行时可修改, 默认:5max-concurrent-downloads=1# 同一服务器连接数, 添加时可指定, 默认:1max-connection-per-server=5# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载min-split-size=10M# 单个任务最大线程数, 添加时可指定, 默认:5split=5# 整体下载速度限制, 运行时可修改, 默认:0#max-overall-download-limit=0# 单个任务下载速度限制, 默认:0#max-download-limit=0# 整体上传速度限制, 运行时可修改, 默认:0#max-overall-upload-limit=0# 单个任务上传速度限制, 默认:0#max-upload-limit=0# 禁用IPv6, 默认:falsedisable-ipv6=true ## 进度保存相关 ## # 从会话文件中读取下载任务input-file=/etc/aria2/aria2.session# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件save-session=/etc/aria2/aria2.session# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0#save-session-interval=60 ## RPC相关设置 ## # 启用RPC, 默认:falseenable-rpc=true# 允许所有来源, 默认:falserpc-allow-origin-all=true# 允许非外部访问, 默认:falserpc-listen-all=true# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同#event-poll=select# RPC监听端口, 端口被占用时可以修改, 默认:6800rpc-listen-port=6800# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项#rpc-secret=<TOKEN># 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项rpc-user=ruyo# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项rpc-passwd=RUYO.net ## BT/PT下载相关 ## # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true#follow-torrent=true# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999listen-port=51413# 单个种子最大连接数, 默认:55#bt-max-peers=55# 打开DHT功能, PT需要禁用, 默认:trueenable-dht=true# 打开IPv6 DHT功能, PT需要禁用#enable-dht6=false# DHT网络监听端口, 默认:6881-6999#dht-listen-port=6881-6999# 本地节点查找, PT需要禁用, 默认:false#bt-enable-lpd=true# 种子交换, PT需要禁用, 默认:trueenable-peer-exchange=true# 每个种子限速, 对少种的PT很有用, 默认:50K#bt-request-peer-speed-limit=50K# 客户端伪装, PT需要peer-id-prefix=-TR2770-user-agent=Transmission/2.77# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0seed-ratio=0# 强制保存会话, 即使任务已经完成, 默认:false# 较新的版本开启后会在任务完成后依然保留.aria2文件#force-save=false# BT校验相关, 默认:true#bt-hash-check-seed=true# 继续之前的BT任务时, 无需再次校验, 默认:falsebt-seed-unverified=true# 保存磁力链接元数据为种子文件(.torrent文件), 默认:falsebt-save-metadata=true