使用aria2搭建离线下载服务器(校园网IPv6免流量)

  • 本文施工中...

简介

实现效果:在VPS主机上安装aria2下载软件用作离线下载,能够远程管理下载,下载完成后能够通过HTTP(或其他任何你愿意的方式)从VPS取回,若VPS拥有IPv6地址,校园网用户可以免IPv4流量取回。

此VPS可以兼作aria2下载机和ss番强代理机...

不足:aria2本身不支持删除下载任务中的文件,所以,不论是下载完成后已经不需要的文件,还是删除任务放弃下载的文件,都要手动登陆主机去删除。

需要条件

运行Linux操作系统的VPS一个,本文以Debian 9为例。

校园网IPv6用户,可以考虑使用Vultr的Storage Instance套餐主机,5美刀/月,包括一个125GB的HDD,虽然HDD较慢,但相比20GB的SSD明显更适合用作下载。

  • 优先速度,使用Los Angeles主机,北美西部访问延迟较低,速度较快。
  • 优先容量,使用New York(NJ)主机,目前可以免费领取一个50G空间的Block Storage,这个空间好像是SSD的,但在系统里是另一块硬盘,管理稍有不便。
  • IPv4用户可以使用Tokyo主机,多数情况下访问速度比北美快,由于IPv6要绕路北美,反而比美国西部的主机更慢。

(更新,125G的HDD机现在常年售罄状态...)

VPS上安装、配置Aria2

- 安装

在Ubuntu、Debian上安装Aria2非常方便,SSH远程登录VPS后执行如下命令即可:

# apt update
# apt install aria2

其他操作系统可以访问aria2官网获取下载、安装信息。

- 配置&启动

aria2最简单的运行方式是$ aria2c <download-url-path>,即会从给出的url下载文件。但我们希望它能记住一些设置,常驻后台运行。aria2启动时会首先尝试从$HOME/.aria2/aria2.conf读取配置文件,对于一般VPS上我们都用root账户登录,那么目录即为/root/.aria2/aria2.conf。此外,可以在启动时加入--conf-path参数手动指定配置文件位置,也可以通过--no-conf强制不读取配置文件。

  • 首先创建配置文件:
# cd ~                 # 进入HOME目录
# mkdir .aria2         # 创建文件夹
# cd aria2             # 进入文件夹
# touch aria2.conf     # 创建配置文件
# touch aria2.session  # 会话文件,若开启session会用到
  • 使用vim或其他编辑器编辑配置文件,可参考如下,#之后为注释内容,不起配置作用
##### RPC Options #####

# 开启JSON-RPC/XML-RPC服务,从而能够通过其接口控制aria2,默认为true
enable-rpc=true
# 指定访问端口号,默认6800
rpc-listen-port=6800
# 允许所有访问来源,web控制界面跨域需要,默认false
rpc-allow-origin-all=true
# 允许除local loopback以外的网卡访问,默认false,远程控制需要
rpc-listen-all=true
# 外部访问安全令牌,强烈建议设置token并记住
rpc-secret=123456
# 若不设置token,也可通过用户名密码访问,现版本不建议使用
# rpc-user=<username>
# rpc-passwd=<passwd>

##### Advance Options #####

# 以守护进程方式后台运行,默认为false,也可在启动aria2c时加上-D选项达到相同效果
daemon=true
# 磁盘缓存,可设为0禁用,默认16M。
disk-cache=16M
# 磁盘空间分配模式,可选none,prealloc,trunc,falloc,默认prealloc
# 若完整分配,官方建议ext4、NTFS使用falloc快速分配,可以瞬间完成分配
# FAT32、ext3建议使用prealloc,如果此时使用falloc分配时间和prealloc相当,分配时会造成aria2卡顿
file-allocation=falloc

# 使用会话文件保存信息,并能够从意外错误(断电等)错误中恢复
save-session=/root/.aria2/aria2.session
# 指定开启时读取会话文件的位置
input-file=/root/.aria2/aria2.session
# 定期保存会话,默认0为只在退出时保存
save-session-interval=60

##### Basic Options #####

# 下载路径
dir=/root/Downloads
# 最大同时下载任务数量,默认为5
max-concurrent-downloads=20
# 若下载速度低于此值(Byte/s),会被自动暂停,速度可以有K或M等后缀,对BT下载无效
#lowest-speed-limit=0
# 每个下载任务对单个服务器最大的链接数量,默认为1
max-connection-per-server=10
# 任务分块大小,当下载文件大小大于两倍于此设置时,会被分块下载,默认20M
min-split-size=20M
# 任务分块数量,默认为5
split=10
  • 可以通过伪装方式进行PT下载,参考下列设置,但请谨慎尝试
# DHT(若torrent禁用,即使设置为true也不会启用)
# enable-dht=false
# enable-dht6=false
# 本地查找(若torrent禁用,即使设置为true也不会启用)
# bt-enable-lpd=false
# 本地peer交换(若torrent禁用,即使设置为true也不会启用)
# enable-peer-exchange=false
# 客户端伪装
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77

在写好配置文件后,若配置文件包括daemon=true,那么运行aria2c

# aria2c

aria2即会在后台运行。

通过Web管理Aria2

比较靠谱的Aria2 Web管理界面有webui-aria2, AriaNG, yaaw三种,介绍如下:

  • webui-aria2 (Github链接
    历史相对悠久,功能相对稳定,足够全面,可以在本地直接用浏览器打开index.html操作,也可以部署在Web服务器中,配置信息保存在浏览器Cookie中。
  • yaaw (Github链接
    运行方式和webui-aria2相似,界面相对简单很多。
  • AriaNG (Github链接
    分为Web和本地应用两个版本,Web需要部署到Web服务器上,本地应用是可以在Windows或macOS下直接运行的应用。比较年轻,功能齐全,作者比较积极。

其中webui-aria2和yaaw相对较为方便,从Github右侧的Clone or download按钮中,下载zip,或者git clone到本地,打开index.html就可以使用。设置信息保存在浏览器Cookie中。也可以将其放到Web容器中,可以参考AriaNG的安装配置方法。

对于AriaNG,个人认为管理能力更强一些,其官网如下:
http://ariang.mayswind.net/zh_Hans/
release发布地址:
https://github.com/mayswind/AriaNg/releases
最新每日构建:
https://github.com/mayswind/AriaNg-DailyBuild/archive/master.zip

安装、配置AriaNG

如果服务器上没有Web服务器软件,可以安装nginx:

# apt install nginx

在nginx配置文件/etc/nginx/sites-available/default中,可以看到root /var/www/html一行,代表nginx的默认Web服务器以文件夹var/www/html为根目录,下载得到的AriaNG程序直接放到这里就可以。

下载Aria2,例如当前版本为0.2.0,并解压、移动到相应目录:

# wget https://github.com/mayswind/AriaNg/releases/download/0.2.0/aria-ng-0.2.0.zip
# unzip aria-ng-0.2.0.zip -d ./airang
# sudo mv ./airang/* /var/www/html/

然后重启nginx服务

# service nginx restart

此时用浏览器访问这台主机的地址,应当能够看到AriaNG的页面。
在AriaNG页面的左边栏中的AriaNG设置中配置Aria2的连接设置。Aria 2 RPC地址设置为下载机的IP地址或域名,设置连接密钥,其他一般保持默认即可。

如果AriaNG部署在VPS中,那么安全起见,建议给Web设置访问密码。

首先安装apache2-utils,其包含用于生成密钥文件的工具htpasswd

# apt install apache2-utils

进入计划用于存放密钥文件的文件夹,例如/var/www/auth

# cd /var/www
# sudo mkdir auth
# cd auth

在这里使用htpasswd生成验证所需的文件

$ htpasswd -c -d ./nginx_auth  [你希望的登录用户名,例如admin]

然后根据提示设置密码,生成文件nginx_auth

使用编辑器打开/etc/nginx/sites-available/default
server后的大括号内补充:

        auth_basic "Authrization";
        auth_basic_user_file /var/www/auth/nginx_auth;

重启nginx

$ sudo service nginx restart 

此时再访问AriaNG页面会要求用户名、密码。

配置文件取回功能

我们希望aria2下载好文件后,我们能够通过浏览器访问下载目录,并能下载文件。可以搭建HTTP或FTP服务来实现这一功能。通常HTTP和FTP搭建的文件服务,可以使用下载工具,一些服务软件(如nginx)还可以支持多线程下载、断点续传。

使用nginx搭建HTTP文件服务

这里使用另一个端口号(8080)做文件服务器,若要访问下载目录,在浏览器输入http://[主机IP地址或域名]:8080访问。

我们在/etc/nginx/sites-available/下新建一个站点配置

# cd /etc/nginx/sites-available/
# touch file                       # 创建一个名为file的文件

打开file,做如下配置:

server {
        listen 8080 default_server;
        listen [::]:8080 default_server;
        root /root/Downloads;    # 这里使用下载文件夹的绝对路径
        server_name _;
        auth_basic "Authrization";
        auth_basic_user_file /var/www/auth/nginx_auth;  # 同样要求密码登陆
        location / {  # 使nginx自动生成文件列表
                autoindex on;
                autoindex_exact_size on;
                autoindex_localtime on;
        }

然后转移到/etc/nginx/sites-enabled/下,创建配置文件的软链接。

# cd /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/file ./file

最后打开/etc/nginx/nginx.conf,修改首行的内容如下:

# user www-data;
user root;  # 或者其他具有下载文件夹访问权限的用户名称

从而避免因默认的www-data用户无权访问下载文件夹导致的403错误。

至此,可以通过http://[主机IP地址或域名]:8080看到下载文件夹下的文件。注意的是这里不能有index.htmlindex.php等Web默认的首页名称,否则nginx会直接加载这些页面。

通过aria2下载百度云、115网盘内容

Todo

开启TCP-BBR提高取回速度

uname -r

查看内核,需要为4.9或更高,否则需要手动升级Linux内核。
如下操作开启TCP BBR

modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

查看系统设置,确认已经打开BBR

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容