0. 写在前面
之前因为有一台退役下来一直在吃灰的笔记本。虽然跑win7会很慢,但是装上Ubuntu后还是可以当服务器跑的。和vps比起来速度会慢很多,不过便宜一点的vps一般也就10-20G的SSD硬盘,或者50-100G的hdd硬盘,和家里几个TB的容量比起来真是太小太小。所以,家里退役的笔记本加上退役的移动硬盘装上aria2c后被改装成可以24小时工作的远程下载机。再装上samba搭建NAS服务就相当于多了一块私有网盘,虽然和专业的NAS设备比起来访问速度并不那么理想。
1. Ubuntu 14.04 安装aria2c
Aria2或Aria2c本身是命令行下的下载器,不过由于接下来会安装web ui并且以后也基本都是从web ui操作,所以这里简单记录一下aria2c的安装。以root身份操作:
$ apt-get install aria2
$ mkdir /path/to/aria2c -p //新建一个文件夹放置aria2的配置文件,如果路径中有不存在的文件夹,就加-p建立相应的路径。
$ touch /path/to/aria2c/aria2.session //在该文件夹下建立一个session文件用于中断程序后的重新连接,出错时有用。
$ vim /path/to/aria2c/aria2.conf
//输入以下配置文件
#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=3
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=3
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/path/to/downloads
input-file=/path/to/aria2c/aria2.session
save-session=/path/to/aria2c/aria2.session
save-session-interval=60
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
$ aria2c --conf-path=/path/to/aria2c/aria2.conf -D //-D daemon模式,用于后台执行
上面的配置文件只需要修改这3个路径:
dir=/path/to/downloads
input-file=/path/to/aria2c/aria2.session
save-session=/path/to/aria2c/aria2.session
2. 安装web ui
执行完上面的指令,aria2就在后台运行了。不过为了方便操作,还是需要web ui连接aria2:
$ wget https://github.com/ziahamza/webui-aria2/archive/master.zip //从github上下载web ui的脚本
$ unzip master.zip
$ cp /path/to/webui/* /path/to/www/html/ //直接复制脚本到LAMP的站点文件夹下(事先安装过LAMP)
//或者直接用Python做web服务器,更简单
$ python -m SimpleHTTPServer 9999 //可以通过9999访问web ui
3. 反代aria2 web ui
接下来可以参考这篇反向ssh隧道访问局域网后面的主机,将需要反向代理的端口80(或9999)通过反向ssh隧道连接到vps上的某个端口,比如8888。:
ssh -fN -R hostA_ip:8888:localhost:80 [email protected]_ip //将80端口映射到vps的8888
ssh -fN -R hostA_ip:7777:localhost:6800 [email protected]_ip //将aria2配置文件的端口6800映射到vps的7777
ps:除了要映射web ui的80端口之外,还要执行上面的第二条来映射6800端口,这样才能读取aria2的配置(aria2与web ui是相对独立的,所以才需要特地去读取aria2的配置文件)
然后再用Nginx反向代理vps的8888端口,实现从某个域名访问web ui:反向ssh隧道访问局域网后面的主机。
可以通过域名访问后,第一次使用的时候需要从浏览器里设置aria2配置文件的地址,否则无法读取和控制aria2的状态。在Settings > Connection Settings 里将localhost
更改成vps的7777端口(也就是映射了局域网下载机6800端口的那个端口)
保存修改后,当看到一下提示时说明web ui能正常连接到aria2了,就可以远程控制局域网内的下载机工作了。
4. Aria2的使用
Aria2的web ui上可以通过url下载,磁力链接下载,通过bt种子下载(或者下载种子文件后自动打开种子开始下载),通过文件里的url批量下载。不过,鉴于大多数资源都在迅雷和网盘上,这里记录一下使用方法:
使用Aria2下载百度网盘和115的资源 - IceHoney!
如何使用迅雷离线、旋风离线(QQ离线)
yunfile命令行下载器(未实测)