大家新年快乐!距离上一次更新文章已是半年。Aria2这个小伙伴自从上年的春节就呆在我的树莓派里了,使用了一年给我的体验还是蛮好的;总结网上的一些文章,以我自己使用了一年的过程遇到的一些问题都归纳在这一篇文章里分享出来。

获取Aria2并安装

由于Aria2本身非常小巧不依赖什么环境,一般在 官方库发布页 里直接下载设好权限就可以了,具操作如下:

  1. 下载名为 aria2-x.xx.x-android-arm-build1.zip 的发布包 (x.xx.x以具体发布版本号为准)
  2. 解压包得到 aria2c 文件
  3. 将文件上传到 /usr/bin 并给予执行权限 chmod 755 /usr/bin/aria2c

验证执行 aria2c -v 若能正常返回版本信息既正常

准备工作

开始使用之前需创建一个账号以及一些存放下载文件以及配置文件的目录。

  1. 创建一个登陆权限的账号 useradd -s /sbin/nologin aria2
  2. 创建一个存放下载文件的目录 mkdir /home/aria2/download
  3. 创建配置文件夹 mkdir /home/aria2/configure
  4. 设置文件夹所有者 chown -R aria2 /home/aria2

另外建议在 /home/aria2/configure 目录手动建立 dht.dat 和 aria2.session 等空文件,具体看配置文件

配置Aria2

这是最重要的一步,建议大家好好阅读 官方的文档 很多人安装了Aria2后没速度下载不了等原因大多数都是因为配置有误,下面一些我认为比较重要的配置并且都有注释仅供参考。首先创建一个文件/home/aria2/configure/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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#aria2 version 1.34.0
##############
## 基本设置 ##
##############
# 文件保存路径, 默认为当前启动位置
dir=/home/aria2/download
# 日志文件
log=/var/log/aria2c/aria2.log
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10
# 检查完整性
check-integrity=false
# 断点续传
continue=true
########################
## HTTP/FTP/SFTP 设置 ##
########################
# 连接超时时间
connect-timeout=120
# 断开速度过慢的连接
lowest-speed-limit=1K
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=8
# 文件未找到重试次数
max-file-not-found=3
# 当服务器返回503错误时, aria2会尝试重连
# 尝试重连次数, 0代表无限, 默认:5
max-tries=10
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=5M
piece-length=5M
# .netrc 文件路径
netrc-path=/home/aria2/configure/.netrc
# 禁用 netrc,默认false
no-netrc=false
# 获取服务器文件时间,默认false
remote-time=false
# URI 复用 Default: true
reuse-uri=true
# 重连等待时间秒, 默认:0
retry-wait=30
# 服务器状态超时 (server-stat-timeout)
server-stat-timeout=86400
# 单个任务最大线程数, 添加时可指定, 默认:5
split=32
# 分片选择算法 default inorder geom
stream-piece-selector=inorder
# 超时时间
timeout=60
# URI 选择算法 inorder feedback adaptive Default: feedback
uri-selector=feedback
# 检查 HTTP 证书
check-certificate=true
# 支持 HTTP GZip
http-accept-gzip=true
# 禁用 HTTP 缓存头
#http-no-cache=false
# 启用 HTTP 持久连接
enable-http-keep-alive=true
# 启用 HTTP 管线化
enable-http-pipelining=true
# Cookies 保存路径
save-cookies=/home/aria2/configure/cookies
# 启用 HEAD 方法
#use-head=false
# 自定义 User Agent
#user-agent=qBittorrent v4.1.3
#user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3602.2 Safari/537.36
# FTP/SFTP连接复用
ftp-reuse-connection=true
#####################
## BitTorrent 设置 ##
#####################
# 分离仅做种任务
#bt-detach-seed-only=true
# 启用哈希检查完成事件
#bt-enable-hook-after-hash-check=true
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 强制加密, 防迅雷必备
#bt-require-crypto=true
# 做种前检查文件哈希, 默认:true
bt-hash-check-seed=true
# 加载已保存的元数据文件
bt-load-saved-metadata=false
# 最多打开文件数
bt-max-open-files=128
# 单个种子最大连接数, 默认:55, 0表示不限制
bt-max-peers=0
# 仅下载种子文件
bt-metadata-only=false
# 优先下载文件头部或尾部 head[=<SIZE>],tail[=<SIZE>]
#bt-prioritize-piece=head[=64M],tail[=32M]
# 期望下载速度
bt-request-peer-speed-limit=5M
# 保存种子文件
bt-save-metadata=true
# 不检查已经下载的文件
bt-seed-unverified=true
# 任务间隔多久速度为0时停止任务(秒)
#bt-stop-timeout=0
# BT 服务器连接超时时间(秒)‬
bt-tracker-connect-timeout=30
# BT 服务器连接间隔时间 0=auto
bt-tracker-interval=0
#BT 服务器超时时间(单位:秒)
bt-tracker-timeout=60
# DHT数据文件
dht-file-path=/home/aria2/configure/dht.dat
dht-file-path6=/home/aria2/configure/dht6.dat
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# DHT 消息超时时间
dht-message-timeout=10
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用, 默认:true
enable-dht6=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=6881-6999
# 整体上传速度限制, 运行时可修改, 默认:0
max-overall-upload-limit=1M
# 单个任务上传速度限制, 默认:0
max-upload-limit=512K
# 客户端伪装
peer-agent=qBittorrent v4.1.3
peer-id-prefix=-qB4130-
#peer-agent=uTorrentMac/1870(43796)
#peer-id-prefix=-UM1870-
#peer-agent=Deluge 1.3.15
#peer-id-prefix=-DE13F0-
#peer-agent=Transmission/2.92
#peer-id-prefix=-TR2920-
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0.5
# 最小做种时间
seed-time=‪43200‬
#################
## RPC相关设置 ##
#################
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=kqueue
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
##############
## 高级设置 ##
##############
# 允许覆盖
allow-overwrite=true
# 允许分片大小变化
allow-piece-length-change=false
# 始终断点续传
always-resume=true
# 自动保存任务进度间隔时间
auto-save-interval=60
# 控制台日志级别 debug, info, notice, warn or error
console-log-level=notice
# 后台日志级别 debug, info, notice, warn or error
log-level=warn
# 禁用IPv6, 默认:false
disable-ipv6=false
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
enable-mmap=true
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: 快none < trunc < falloc < prealloc慢
# falloc仅仅比trunc慢0.06s
# 磁盘碎片: 无falloc = prealloc < trunc = none有
# 推荐优先级: 高falloc --> prealloc --> trunc -->none低
# EXT4, btrfs, xfs, NTFS等新型文件系统建议使用falloc, falloc(fallocate)在这些文件系统上可以瞬间创建完整的空文件
# trunc(ftruncate) 同样是是瞬间创建文件, 但是与falloc的区别是创建出的空文件不占用实际磁盘空间
# prealloc 传统的创建完整的空文件, aria2会一直等待直到分配结束, 也就是说如果是在HHD上下载10G文件,那么你的aria2将会一直等待你的硬盘持续满载工作直到10G文件创建完成后才会开始下载
# none将不会预分配, 磁盘碎片程度受下面的disk-cache影响, trunc too
# 请勿在传统文件系统如:EXT3, FAT32上使用falloc, 它的实际效果将与prealloc相同
# MacOS建议使用prealloc, 因为它不支持falloc, 也不支持trunc, but可以尝试用brew安装truncate以支持trunc(ftruncate)
# 事实上我有些不能理解trunc在aria2中的角色, 它与none几乎没有区别, 也就是说:太鸡肋了
file-allocation=falloc
#优先并发下载
optimize-concurrent-downloads=false
# 整体下载速度限制, 运行时可修改, 默认:0
max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
max-download-limit=0
# 开启该参数后aria2将只接受session中的任务, 这意味着aria2一旦使用conf后将不再接受来自终端的任务, 所以该条只需要在启动rpc时加上就可以了
input-file=/home/aria2/configure/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/home/aria2/configure/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
force-save=true
# BT 排除服务器地址
#bt-exclude-tracker=
# BT 服务器地址
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.opentrackr.org:1337/announce,udp://9.rarbg.to:2710/announce,udp://exodus.desync.com:6969/announce,http://tracker3.itzmx.com:6961/announce,udp://explodie.org:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://thetracker.org:80/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://denis.stalker.upeer.me:6969/announce,udp://tracker1.itzmx.com:8080/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.cyberia.is:6969/announce,udp://open.stealth.si:80/announce,udp://open.demonii.si:1337/announce,udp://bt.xxx-tracker.com:2710/announce,http://tracker4.itzmx.com:2710/announce,udp://tracker1.wasabii.com.tw:6969/announce,udp://tracker.port443.xyz:6969/announce

启动Aria2

新建文件 /etc/init.d/aria2 写入以下内容后给予执行权限 chmod 755 /etc/init.d/aria2 一切准备就绪后执行 /etc/init.d/aria2 start 即可运行程序

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
#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

case "$1" in
start)
echo -n "Starting aria2c\n"
/usr/bin/aria2c --conf-path=/home/aria2/configure/aria2.conf -D
;;
stop)
echo -n "Shutting down aria2c "
killall aria2c
;;
restart)
echo -n "Shutting down aria2c "
killall aria2c
sleep 3
echo -n "Starting aria2c"
/usr/bin/aria2c --conf-path=/home/aria2/configure/aria2.conf -D
;;
*)
echo 'Usage:' `basename $0` '[option]'
echo 'Available option:'
for option in start stop restart
do
echo ' -' $option
done
;;
esac

Aria2 可视化(WebUI)

以下是比较出名的其中三个 WebUI

  1. AriaNG
  2. Aria2 Web 控制台
  3. Aria2 WebUI

以 AriaNG 为例在 AriaNG 设置里修改 RPC 里的 Aria2 RPC 别名 修改为树莓派的地址,若配置文件有其他变动对应修改即可

自动更新 BT Tracker

Tracker服务器对BT下载起到客户端协调和调控的重要作用,Tracker在整个BT环境中非常关键,正所谓有个好的”老司机”是能事半功倍的;简单写个脚本每天定时从 BitTorrent trackers List 抓取最新的Tracker服务器列表并格式化更新到Aria2的配置文件中

新建文件 /home/aria2/tracker 写入以下内容后给予执行权限 chmod 755 /home/aria2/tracker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

#https://github.com/ngosang/trackerslist
#trackers_best (20 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt
#trackers_all (65 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
#trackers_all_udp (30 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_udp.txt
#trackers_all_http (28 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_http.txt
#trackers_all_https (3 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_https.txt
#trackers_all_ws (4 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_ws.txt

list=`wget -qO- https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`
if [ -z "`grep "bt-tracker" /data/ser/dat/aria2/aria2.conf`" ]; then
echo "Add Trackers..."
sed -i '$a bt-tracker='${list} /data/ser/dat/aria2/aria2.conf
else
echo "Update Trackers..."
sed -i "s@bt-tracker=.*@bt-tracker=$list@g" /data/ser/dat/aria2/aria2.conf
fi

echo "Restart Aria2c..."
/etc/init.d/aria2 restart

执行crontab -e -u root 在文件的下面添加一行内容,在每天6点自动更新 BT Tracker 服务器列表

1
0 6 * * * /home/aria2/tracker

END

一些使用技巧

  1. 初次使用建议手动上传一个热门的种子文件,下载好并上传一段时间有助于 Aria2 建立 dht 文件
  2. 使用谷歌浏览器可搭配 YAAW for Chrome 插件使用
  3. 树莓派如需长期使用需外接一块硬盘