最近突然对远程控制下载产生了兴趣,于是想要搭建一个远程下载的服务器,任务当然也落在了我这个可怜的树莓派上了。。。
远程下载之aria2
这个是一个很强大的下载软件,支持BT下载,并且还可以通过web控制台进行控制。
于是通过简书,找到了不少好用的教程。比如说:使用aria2rpc下载文件说的非常详细。
安装 aria
sudo apt-get install aria2
在/etc/aria/
文件夹创建文件
- 创建文件夹
sudo mkdir /etc/aria
- 授权
sudo chmod 775 /etc/aria
- 进入文件夹
cd /etc/aria/
- 创建session文件:
touch aria2.session
- 创建并写入设置文件
sudo vi aria2.conf
- 写入以下内容,需要自己更改的内容就是dir以及rpc-secret了
## 文件保存相关 ##
# 文件保存目录
dir=/mnt/downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 断点续传
continue=true
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=falloc
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
#max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=15
# 整体下载速度限制, 运行时可修改, 默认: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
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10
## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存错误的、未完成的下载任务到会话文件
save-session=/etc/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
# RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=123456
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
设置aria开机启动
在/etc/rc.local
文件里面,exit 0
前一行,新增一行命令:
sudo nohup aria2c --conf-path=/etc/aria2/aria2.conf -D >/dev/null &
然后保存并退出,此时就设置好了开机启动了,sudo reboot
,重启后就可以自动启动了。
验证是否启动成功
重启后,输入命令:
curl 127.0.0.1:6800/jsonrpc
如果有响应,如下:
{"id":null,"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid Request."}}
就证明是启动成功了。
给aria配置web界面
简介
这个web界面,基本上都是使用的 https://github.com/ziahamza/webui-aria2 这个gayhub项目的。
当然也有个可以直接打开的链接:https://ziahamza.github.io/webui-aria2/,只需要打开,然后在设置里面配置好自己的aria的地址、端口、账号密码或secret就可以了。
先说遇到的坑
第二种方法,明显更简单更方便。但是我却使用不了。原因在于:
console报错因为我的aria的RPC站点不是https的,所以没办法在https站点使用。
所以我采用了下载源码,然后在树莓派上运行这个网站的办法。
但是运行网站遇到了一个开机启动的问题,困扰了我一下午——只能在
node-server.js
目录下启动网站,否则网站会404 。
git下载源码
先创建个文件夹,比如我是在/mnt/aria_web/
目录下,然后执行下载源码的操作:
git clone https://github.com/ziahamza/webui-aria2.git
下载完成之后下载安装 node.js 。
sudo apt-get install nodejs
或者看我之前的一篇文章:树莓派安装配置nodejs
尝试运行
进入webui-aria2
文件夹cd webui-aria2
。
然后 node node-server.js
,应该会提示
WebUI Aria2 Server is running on http://localhost:8888
如果8888端口被占用了(比如我的就是),只需要在node-server.js
里面,把第五行的8888改成你想要的端口就可以了,比如我的8989端口。
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs");
port = process.argv[2] || 8888;
现在你进入树莓派的页面应该就可以了http://192.168.1.184:8989/
。这个ip是我的树莓派的本地IP,端口也是我自己更改的8989端口,每个人不一样,注意区别。
能打开网页,就证明是OK的了。
设置开机启动
关于这个开机启动,我遇到了很大的阻碍,最后分析了一下源代码,找到了问题并解决了,这个server返回数据是根据启动server的路径决定的,所以如果我开机就通过绝对路径启动会显示404.
解决方案很简单:
把第10行的process.cwd()
改成node-server.js
所在的目录的字符串形式就可以了。比如我的改成了filename = path.join("/mnt/aria_web/webui-aria2/", "docs", uri);
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs");
port = process.argv[2] || 8888;
http
.createServer(function(request, response) {
var uri = url.parse(request.url).pathname,
filename = path.join(process.cwd(), "docs", uri);
然后继续在rc.local
添加启动命令:
sudo nohup node /mnt/aria_web/webui-aria2/node-server.js >/dev/null &
重启树莓派sudo reboot
。大功告成!
接下来直接访问树莓派的地址就好了。
当然也可以配置个内网穿透。这样就可以在任意地方遥控树莓派下载文件了。美滋滋。
网友评论