前言

之前部署了百度网盘以及qBittorrent后,发现针对http(s)或者ftp等协议的下载无法进行,于是就准备再加一个Aria2,完全打通各个协议。

简介

aria2 is a utility for downloading files. The supported protocols are HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a file from multiple sources/protocols and tries to utilize your maximum download bandwidth. It supports downloading a file from HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent swarm. Using Metalink’s chunk checksums, aria2 automatically validates chunks of data while downloading a file like BitTorrent.

Aria2 是一个用于下载文件的实用程序。支持的协议包括 HTTP(S)、FTP、SFTP、BitTorrent 和 Metalink。Aria2 可以从多个来源/协议下载文件,并尝试利用您的最大下载带宽。它支持同时从 HTTP(S)/FTP/SFTP 和 BitTorrent 下载文件,同时从 HTTP(S)/FTP/SFTP 下载的数据上传到 BitTorrent 群。使用 Metalink 的块校验和,aria2 在下载 BitTorrent 等文件时自动验证数据块。

步骤

Aria2安装

输入以下命令安装:

1
apt install aria2

安装完成后暂时只能通过命令行 aria2c <url> 进行下载。

配置

我们计划将 conf配置文件放置在: /root/.aria2/aria2.conf 以及 session文件也放在 /root/.aria2/aria2.session

aria2.session 的内容为空。

aria2.conf 的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##

## 文件保存相关 ##

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/NAS/Downloads/Aria2
# 启用磁盘缓存, 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

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
#max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
#split=5
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
#disable-ipv6=true
# 连接超时时间, 默认:60
#timeout=60
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
#max-tries=5
# 设置重试等待的秒数, 默认:0
#retry-wait=0

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/root/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/root/.aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=<TOKEN>
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
peer-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true

其中 rpc-secret=<TOKEN><TOKEN> 的值务必设置。其他的根据自己需求逐行配置。

可以参考:

基础配置:https://aria2c.com/usage.html

详细配置:https://aria2.github.io/manual/en/html/aria2c.html

系统服务

默认Aria2没有系统进程,我们可以创建一个:

1
vim /lib/systemd/system/aria2c.service

内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Aria2c

[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf #aria2.conf的路径
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=30s

[Install]
WantedBy=multi-user.target

然后输入以下命令自启动:

1
2
3
systemctl enable aria2c
systemctl restart aria2c
systemctl status aria2c

如果输出的结果中含有 Active: active (running) 字样,则Aria2c自启动服务注册成功。

下载AriaNG

AriaNG的Github地址为:https://github.com/mayswind/AriaNg

在Releases界面将程序下载下来上传到NAS,我的目录为 /var/www/AriaNg ,并使用 unzip 进行解压。

1
2
3
4
apt install unzip   #没有unzip的先行安装
unzip AriaNg-*.zip
chown -R www-data:www-data /var/www/AriaNg #权限
chmod -R 755 /var/www/AriaNg

Nginx部署AriaNG WebUI

这边需要申请一个AriaNG WebUI的访问域名,比如 aria2.yydnas.com

部署Nginx的网站配置 aria2.conf ,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
server {
listen 80;
listen [::]:80;

root /var/www/AriaNg;

server_name aria2.yydnas.com;
index index.php index.html index.htm;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;

root /var/www/AriaNg;

server_name aria2.yydnas.com;
index index.php index.html index.htm;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;

ssl_certificate /etc/nginx/certs/aria2.yydnas.com_nginx/aria2.yydnas.com_bundle.pem;
ssl_certificate_key /etc/nginx/certs/aria2.yydnas.com_nginx/aria2.yydnas.com.key;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;


location / {
try_files $uri $uri/ =404;
}
}

将其放置在 /etc/nginx/sites-enabled/ 目录下面以应用。

重启Nginx以载入:

1
systemctl restart nginx

注意:如果新加域名,需要在 ddns-go 界面增加相应的域名解析。

访问AriaNG WebUI

第一步需要来到 【AriaNG设置】 - 【RPC】界面,输入 【Aria2 RPC密钥】,即之前配置的 Token 值,重新载入后查看状态显示已连接及完成配置。

使用

最后我们回到主界面添加链接,我这边添加了3个链接,分别是蜘蛛侠的4k remux版本,海贼王1092集,ubuntu-desktop版本(https),可以看到除了蜘蛛侠,另外两个速度基本上是满速(300M宽带),蜘蛛侠可能是资源比较老,但是说实话也不应该是这个速度啊。。后续我再测试一下吧。

总体来说,已经能满足我的需求了,比某网盘不知道好多少了,某盘已经挂着下了好几天了,遥遥无期,真的想开会员了,哭哭惹~

最后

赶着春节期间,稍微玩一会儿,折腾一下,等春节假期结束就要进入上班模式了,估计就很少玩NAS了~到时候也不知道有啥想玩的了。平时估计也就下载些电影看看,都是一些不是紧急的,挂在NAS上面下载,啥时候下载完啥时候看。