前言
树莓派是一个微型开发板,支持windows 10和多种linux系统,例如ubuntu,archlinux,centos等等。树莓派体形小,便于携带,功耗低,特别适合长时间运行的使用场景。本篇文章将介绍用树莓派当作下载机,部署在宿舍的应用场景。
aria2
aria2是一个下载工具,支持http,bt和metalink等。windows,linux下都可以使用。
安装
- 安装
1
sudo apt-get install aria2
- 创建session和配置文件
1
2
3mkdir -r /mnt/hd/aria2/config
touch /mnt/hd/aria2/config/aria2.session
touch /mnt/hd/aria2/config/aria2.conf - 编辑aria2.conf
1 | # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 |
启动脚本
1
touch /mnt/hd/aria2/start_aria2c.sh
编辑start_aria2c.sh,脚本内容如下:
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################################
! /bin/sh
/etc/init.d/aria2c
## BEGIN INIT INFO
Provides: aria2c
Required-Start: $network $local_fs $remote_fs
Required-Stop: $network $local_fs $remote_fs
Default-Start: 2 3 4 5
Default-Stop: 0 1 6
Short-Description: aria2c RPC init script.
Description: Starts and stops aria2 RPC services.
## END INIT INFO
VAR
RUN="/usr/bin/aria2c"
ARIA_PID=$(ps -ef | grep 'aria2c --daemon' | grep -v grep | awk ' {print $2}')
Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script aria2c "
if [ -z "$ARIA_PID" ]; then
$RUN --daemon=true --enable-rpc=true -D --conf-path=/mnt/hd/aria2/config/aria2.conf
echo "Started"
else
echo "aria2c already started"
fi
;;
stop)
echo "Stopping script aria2c"
if [ ! -z "$ARIA_PID" ]; then
kill $ARIA_PID
fi
echo "OK"
;;
restart)
echo "Restarting script aria2c"
if [ ! -z "$ARIA_PID" ]; then
kill $ARIA_PID
fi
sleep 3 # TODO:Maybe need to be adjust
$RUN --daemon=true --enable-rpc=true -D --conf-path=/mnt/hd/aria2/config/aria2.conf
echo "OK"
;;
status)
if [ ! -z "$ARIA_PID" ]; then
echo "The aria2c is running with PID = "$ARIA_PID
else
echo "No process found for aria2c RPC"
fi
;;
*)
echo "Usage: /etc/init.d/aria2c {start|stop|restart|status}"
exit 1
;;
esac
exit 0
########################################监控脚本
这里写一个监控脚本,定时执行监控aria2是否是运行状态,如果不是,就启动aria2。
1 | /home/pi/monitor/aria2c_monitor.sh |
脚本的内容如下:
1 | !/bin/bash |
- 定时执行
1 | vi /etc/crontab |
使用webui
aria2有多种第三方的管理界面,方便添加下载任务和删除下载任务,并实时查看下载任务情况。如AriaNg,webui。AriaNg界面比webui要漂亮,功能也相对丰富点。但这里选用webui,原因是webui界面比较简单直观,二来因为webui在添加下载任务时,可以通过在下载地址最后面添加–out=xxx 来指定下载后的文件名,特别是下载百度云的文件时经常被命名为一些很奇怪的名字,关于这个AriaNg没找到相关指定文件名的方法。
- 下载webui
webui是静态页面,下载下来直接用nginx或者apache解释即可:
1 | mkdir /mnt/hd/aria2/web-ui |
- 配置nginx
这里假定系统已经安装完成了nginx,nginx的安装过程不作介绍。如果不懂,可以从网上找安装nginx的相关资料。
编辑nginx的配置文件(nginx.conf),添加如下内容:
1 | server { |
配置完之后重启nginx
1 | nginx -t |
重新加载nginx配置文件成功后,打开浏览器,访问http://127.0.0.1:81,就可以看到webui:
- 设置aria2 rpc
在webui的”设置”–>”连接设置”,设置主机和端口,还有密码令牌。
端口由aria2的配置文件(aria2.config)的rpc-listen-port参数指定,默认是6800。密码令牌是由rpc-secret指定。
将aria2映射到外网
通常我们会将树莓派部署在家里,在家庭网没有外网ip的情况下,就无法在外网随时随地访问我们的aria2下载我们想要下载的资源。这里我们介绍将家里的aria2服务映射到外网。
用于外网映射的工具有ngrok,frp等,首先我们需要有一台外网服务器,网上也有很多免费提供映射的服务,如 FRP外网穿透。这里使用FRP来穿透内网的aria2到外网,由于这里是介绍aria2,所以不详细介绍FRP的使用。更多内容,请看FRP外网穿透 或者 FRP官方。
- 配置外网FRP服务端(frps.ini)
1 | [common] |
这里使用了aria2.gogl.top域名,如果没有域名,可以不配置aria2.gogl.top
2. 配置内网树莓派FRP客户端服务(frpc.ini)
1 | [common] |
如果没有自己没有域名,打开浏览器,访问 http://外网服务商ip:5001 就可以,然后根据上一节的”3. 设置aria2 rpc”来设置主机为外网服务器ip地址,端口为5001。注意,这里端口是5001,不是8009,也不是8010。
- 使用域名
如果自己有域名,可以在域名设置将域名指向外网服务商的ip,如这里将aria2.gogl.top指向外网服务器ip,端口为80。在外网服务器安装nginx,添加以下nginx配置:
1 | server { |
proxy_pass 代码到5001端口。打开浏览器,访问http://aria2.gogl.top,再设置rpc的主机为aria2.gogl.top,端口为80,如: