跳至主要内容

Raspberry Pi从零开始搭建低成本NAS(7)-Aria2远程下载

原文地址是:http://www.mkitby.com/2016/01/15/raspberry-pi-nas-remote-download-aria2/
对作者表示感谢,作者关于NAS的系列文章写的都很棒,可以一看

远程下载内容比较多,所以分为两篇文章,先介绍Aria2,再介绍迅雷。
Aria2是一个轻量级命令行下载工具,支持HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink下载,但是不支持ed2k,支持JSON-RPC和XML-RPC调用,可以远程控制。
1.先安装aria2
sudo apt-get install aria2 –y
2.创建 aria2 配置文件 “/home/pi/.aria2/aria2.conf” 和 “/home/pi/.aria2/aria2.session” 这个文件 (我是以 pi 账户启动 aria2 的),
mkdir /home/pi/.aria2
touch /home/pi/.aria2/aria2.session
vim /home/pi/.aria2/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
# 基本配置
# 下载目录
dir=/home/pi/nas-data/Inbox
# 下载从这个文件中找到的urls, 需自己建立这个文件
# touch /home/pi/.aria2/aria2.session
input-file=/home/pi/.aria2/aria2.session
# 最大同时下载任务数,默认 5
#max-concurrent-downloads=5
# 断点续传,只适用于 HTTP(S)/FTP
continue=true
# HTTP/FTP 配置
# 关闭连接如果下载速度等于或低于这个值,默认 0
#lowest-speed-limit=0
# 对于每个下载在同一个服务器上的连接数,默认 1
max-connection-per-server=5
# 每个文件最小分片大小,例如文件 20M,设置 size 为 10M, 则用2个连接下载,默认 20M
#min-split-size=10M
# 下载一个文件的连接数,默认 5
#split=5
# BT 特殊配置
# 启用本地节点查找,默认 false
bt-enable-lpd=true
# 指定最大文件数对于每个 bt 下载,默认 100
#bt-max-open-files=100
# 单种子最大连接数,默认 55
#bt-max-peers=55
# 设置最低的加密级别,可选全连接加密 arc4,默认是头加密 plain
#bt-min-crypto-level=plain
# 总是使用 obfuscation handshake,防迅雷必备,默认 false
bt-require-crypto=true
# 如果下载的是种子文件则自动解析并下载,默认 true
#follow-torrent=true
# 为 BT 下载设置 TCP 端口号,确保开放这些端口,默认 6881-6999
listen-port=65298
#Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker
dht-listen-port=65298
# 整体上传速度限制,0 表示不限制,默认 0
#max-overall-upload-limit=0
# 每个下载上传速度限制,默认 0
#max-upload-limit=0
# 种子分享率大于1, 则停止做种,默认 1.0
#seed-ratio=1
# 做种时间大于2小时,则停止做种
seed-time=120
# RPC 配置
# 开启 JSON-RPC/XML-RPC 服务,默认 false
enable-rpc=true
# 允许所有来源,web 界面跨域权限需要,默认 false
rpc-allow-origin-all=true
# 允许外部访问,默认 false
rpc-listen-all=true
# rpc 端口,默认 6800
rpc-listen-port=6800
# 设置最大的 JSON-RPC/XML-RPC 请求大小,默认 2M
#rpc-max-request-size=2M
# rpc 密码,可不设置
#rpc-passwd=raspberry
# rpc 用户名,可不设置
#rpc-user=aria2pi
# 高级配置
# This is useful if you have to use broken DNS and
# want to avoid terribly slow AAAA record lookup.
# 默认 false
disable-ipv6=true
# 指定文件分配方法,预分配能有效降低文件碎片,提高磁盘性能,缺点是预分配时间稍长
# 如果使用新的文件系统,例如 ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), falloc 是最好的选择
# 如果设置为 none,那么不预先分配文件空间,默认 prealloc
file-allocation=falloc
# 整体下载速度限制,默认 0
#max-overall-download-limit=0
# 每个下载下载速度限制,默认 0
#max-download-limit=0
# 保存错误或者未完成的下载到这个文件
# 和基本配置中的 input-file 一起使用,那么重启后仍可继续下载
save-session=/home/pi/.aria2/aria2.session
# 每5分钟自动保存错误或未完成的下载,如果为 0, 只有 aria2 正常退出才回保存,默认 0
save-session-interval=300
# 若要用于 PT 下载,需另外的配置,这里没写
RPC调用加入验证(外网调用最好加上验证),可以采用下面两种方式:
1) 使用token验证(建议使用,需要1.18.4以上版本,帐号密码方式将在后续版本中停用!)
# token验证
rpc-secret=secret
在YAAW中使用 http://token:secret@hostname:port/jsonrpc 的地址格式设置secret.
2 )如果需要使用密码验证(需要1.15.2以上,1.18.6以下版本)
#用户名
rpc-user=username
#密码
rpc-passwd=passwd
在YAAW中使用 http://username:passwd@hostname:port/jsonrpc 的地址格式设置密码.
3.运行 aria2, 测试配置是否有错误,如果没有提示任何错误信息,那就按Ctrl+C停止。
aria2c --conf-path=/home/pi/.aria2/aria2.conf
4.为 aria2 添加自启动服务
1) 新建 sudo vim /etc/init.d/aria2c 文件,输入以下内容
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
#! /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 ux | awk '/aria2c --daemon=true --enable-rpc/ && !/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=/home/pi/.aria2/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=/home/pi/.aria2/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
2) 添加可执行权限
sudo chmod +x /etc/init.d/aria2c
3) 然后更新rc,添加自启动服务
sudo update-rc.d aria2c defaults
4) 最后重启aria2c服务
sudo service aria2c restart
5.安装web 前端yaaw或者webui-aria2来实现web管理
yaaw 和 webui-aria2 都是不错的,yaaw 界面简洁,wubui-aria2 功能强大,可以根据自己的喜好来选择。
1) 首先需要安装需要安装 nginx
sudo apt-get install nginx –y
2) 接下来我们来配置nginx,首先打开配置文件,/etc/nginx/nginx.conf ,按照下面的配置进行修改。
1
2
3
4
5
6
7
8
9
10
11
user www-data; #默认以www-data运行工作进程
worker_processes 1; #单工作进程足够了,就我自己访问
worker_connections 256; #一般支持100在线连接就达到raspberry pi的极限了
gzip on; #gzip开启取消前面的#让默认设置生效即可,可以加快网页访问速度
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
3) 配置站点属性
sudo vim /etc/nginx/sites-availiable/default
输入,
server {
listen 81; # 访问端口号
#listen [::]:80 default_server; # 一定要注释掉,ipv6
server_name pi.com;
root /var/www/html; #站点存储位置
4) 测试配置文件看有没有问题
sudo nginx -t
如果没有问题会显示
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5) 创建目录,然后设置权限
sudo mkdir /var/www && sudo mkdir /var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 0755 /var/www/html
6) 下载webui-aria2
sudo git clone https://github.com/ziahamza/webui-aria2.git /var/www/html/
7) 重新启动nginx服务
sudo service nginx restart
到这一步了,现在我们通过http://192.168.1.118:81/webui-aria2/ 来访问,如果提示链接到aria2 RPC server失败,重启aria2c服务,然后刷新网页即可。
6.Aria2定时下载功能
1) 首先创建定时下载脚本,sudo vim /home/pi/.aria2/aria2_auto.py,输入如下内容,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
import urllib2, json, time
WEEKDAY = int(time.strftime('%w'))
HOUR = int(time.strftime('%H'))
jsonreq_pauseAll = json.dumps({'jsonrpc':'2.0', 'id':'qwer','method':'aria2.pauseAll'})
jsonreq_unpauseAll = json.dumps({'jsonrpc':'2.0', 'id':'qwer','method':'aria2.unpauseAll'})
if WEEKDAY in [1,2,3,4,5]:
if HOUR == 1:
urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq_unpauseAll)
if HOUR == 17:
urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq_pauseAll)
if WEEKDAY in [6,0]:
if HOUR == 2:
urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq_unpauseAll)
if HOUR == 9:
urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq_pauseAll)
上面代码的意思就是周一到周五1:00~17:00,周末两天2:00~9:00,开启全部下载任务,其他时间暂停全部下载任务。然后加入cron实现定时运行
sudo crontab -e
在文件末尾加入
0 * * * * /usr/bin/python2 /home/pi/.aria2/aria2_auto.py
表示每个小时运行一次脚本。
7.BT端口映射
上面BT监听TCP, UDP端口都为65298,需要在路由器里面设置端口映射,服务端口号填65298,IP地址填树莓派内网IP地址192.168.1.118。
8.外网访问webui-aria2
下面会考虑三种典型的网络环境,前提都是路由器WAN是公网IP。
第一种网络环境:
Raspberry Pi的本地网络供应商80, 8080端口没有被封,从外网能正常访问,这个最简单了,修改树莓派nginx站点属性配置,把端口改为80, 然后在路由器上设置端口映射,80端口映射到树莓派上,然后路由器绑定动态域名,这样通过动态域名就可以在外网直接访问Aria2。
第二种网络环境:
Raspberry Pi的本地网络供应商80, 8080端口被封,你所在其他网络能正常访问外网,修改树莓派nginx站点属性配置,把端口改为81(或者其他能访问的端口),同样在路由上设置端口映射,绑定动态域名。
第三种网络环境:
Raspberry Pi的本地网络供应商80, 8080端口被封,公司只开放80, 8080端口。那么如何在公司畅快的远程下载呢?下面介绍我是如何实现的:
1) 首先需要有一台VPS,通过搭建nginx反向代理服务来实现远程下载。
配置nginx
sudo vim /etc/nginx/nginx.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
user nginx;
worker_processes 1;
#error_log logs/error.log;
#pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
sendfile on;
keepalive_timeout 65;
gzip on;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
}
2) 创建反向代理配置文件
sudo vim /etc/nginx/conf.d/reverser-proxy.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
server
{
listen 8080;
server_name xxx.xxx.xxx.xxx; #VPS IP Address
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://xxxx.oicp.net:6800; # RPC web address, http://xxxx.oicp.net 为动态域名
}
}
server
{
listen 80;
server_name xxx.xxx.xxx.xxx; #VPS IP Address
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://xxxx.oicp.net:81; #aria2 web gui
}
}
3) 路由器添加端口映射,81(webgui), 6800(rpc)端口。
4) 通过http://xxx.xxx.xxx.xxx 访问aria2 web gui, aria2采用token验证,通过http://token:secret@ xxx.xxx.xxx.xxx:8080/jsonrpc访问RPC, xxx.xxx.xxx.xxx为VPS IP地址。

这三种情况下都需要动态域名来绑定到路由器IP地址。关于动态域名,如果不清楚的,可以参考我后面的文章 Raspberry Pi从零开始搭建低成本NAS(9)-外网登录树莓派。里面会介绍动态域名,还会介绍不通过动态域名,如何在外网来访问树莓派。

Popular posts from 产品随想的博客

《Elon Musk》Chapter 1 - 10

To anyone I’ve offended, I just want to say, I reinvented electric cars and I’m sending people to Mars in a rocket ship. Did you think I was also going to be a chill, normal dude? ——Elon Musk, Saturday Night Live, May 8, 2021 PROLOGUE: Muse of Fire Near the end of the first week, the boys were divided into two groups and told to attack each other. “It was so insane, mind-blowing,” Musk recalls. Every few years, one of the kids would die. The counselors would recount such stories as warnings. “Don’t be stupid like that dumb fuck who died last year,” they would say. “Don’t be the weak dumb fuck.” 这种氛围有毒 “I realized by then that if someone bullied me, I could punch them very hard in the nose, and then they wouldn’t bully me again. They might beat the shit out of me, but if I had punched them hard in the nose, they wouldn’t come after me again.” 勇于挑战,哈哈哈 In the emergency room, when they were preparing to stitch him up, he resisted being treated until he was promised that the dog would not ...

Steve Jobs: `There's Sanity Returning', 1998

Nobody can doubt the charisma of Steven P. Jobs. The interim CEO of Apple Computer Inc., who returned to the company last July after his ignominious 1985 ouster, has brought back his legendary vision, impatience, and infectious passion for the Macintosh. Jobs spoke to Business Week Correspondent Andy Reinhardt in Apple's stark, fourth-floor boardroom, just after the company rolled out its new software strategy on May 11. Note: This is an extended, online-only version of the Q&A that appears in the May 25, 1998, issue of Business Week. Q: Now that you've introduced the new, bold-looking iMac, are you going to do some radically different products? A: There's a lot of talk about such things -- about handhelds, set-top boxes. A lot of computer companies have been searching for a consumer product. My view is that the personal computer has been the most successful consumer product of the last 10 years. What we have to do, what the industry stopp...

罗伯特·艾格 创始人肖像计划 <​Ep.2>

Link 罗伯特·艾格 创始人肖像计划 <​Ep.2>   https://zhuanlan.zhihu.com/p/127042313 Note 这个男人,过去十五年时间,几乎不接受采访,只是静悄悄的,花掉了1000亿美金。 ——这个男人,太厉害了...... 艾格跳槽去了ABC,从最底层的小导播做起,一辈子46年职业生涯,再也没有跳过槽。这46年里的最后15年,他升任CEO,做出了惊天动地的大事情。 今年,艾格退休写了自传,起名字叫《The Ride of a Lifetime》,我想了半天,这书名有点拽,只能翻译成《一辈子就要干一票大的》,笔者一介俗人,但愿艾总不要介意,哈哈。 ——《一辈子的旅途》,感觉会更契合些?哈哈哈 在艾总的这本《干一票》里,我读来读去,总是找不到他是怎么升到副总裁的——升到副总裁之后的一步步到CEO倒是写的很细致,看来大佬写自传也为自己讳,不愿意提太多当年勇。 ——Interesting 地表最强二人组(Tom Murphy和Dan Burke)最牛逼的成就就是不出让股权(Equity)的资本并购。一路用自由现金流加发行债券来进行收购,85年的时候举债30亿,配合巴菲特的5亿美金,小鱼吞大鱼,一把吃掉了当时比自己体量大得多的ABC电视台。他们俩的管理特点是极端节俭,冷血砍成本(不禁让人想到贝索斯),收购完成后,直接开掉1500员工、干掉高管电梯、高管餐厅、全员改坐经济舱,甚至于把曼哈顿总部的办公室卖了,换来1.75亿美金。三年多就把当时举的债还完。 作为巴菲特一辈子最推崇的企业家组合,Tom和Dan还有一个特点:放权。他们俩极为谨慎用人,但是一旦选中,就破格提拔,尚方宝剑交出,让牛人干大事。没干多久,俩人就接二连三的退休了,艾格你年轻,你来当总裁! 艾格原话是这么写的:“我心里也有预期,感觉最后总裁的位置是我的,但是确实没想到来的那么快”。按照网友的话就是“一脸懵逼”。 艾格有个特点,他性格是标准的外柔内刚,外圆内方。他不强势,不豪夺,永远不是人群中最聒噪的那位。他能等,在大都会(CapCities)花六年时间做三把手,等到二把手退休,再等好几年到一把手退休,最终上位 ——耐得住寂寞,受得住繁华 21世纪出头即提出战略: 第一句:我们只做高质量品牌视频 第二句:全力拥抱技术而不是对抗 第三句:全球化 大佬的出手案例...

CAD 天正与 AI 工作流

基本步骤   1. 天正导出 T3 .dwg 文件,尽量在2007版本   2. AI 打开,打开时候可以选择比例,因为 AI 画布是基于真实尺度   3. AI 打开 .dwg 后,更改画布到所需要的大小   4. 之后用 PS 打开 AI 文件,可以维持想要的大小和比例   5. 而且 AI 可以读取天正的图层 课外了解   1. ETH 风格平面图   2. 日本创新性的停车方式   3. AI中的实时上色功能去了解

初识PAM

Pluggable Authentication Modules for Linux 可插拨认证模块 用户访问服务器,服务程序将请求发送至PAM模块

BG投资十问(Baillie Gifford)

  1,公司是否能正面推动经济、社会或者文化发 展? 如果做不到,BG可能就不会再往下看了。比如军火、赌博类公司再便宜,BG不会去看。 2,公司销售额在5年之内能否翻倍? 为什么要讨论销售额?因为BG关注公司成长,销售额是比较简单直观的指标,而利润可有一些方法调节。所以,BG主要先关注销售额,再看现金流。 3,公司5年之后会怎么样? 这是未来5到10年或者5到15年的中间维度,一是看公司的成长空间究竟还有多大,二是考虑5年之后,公司的短期估值会不会下降,会不会变得成熟。 4,公司的竞争优势到底是什么?随着时间会变 强还是变弱? BG认为,如果公司的竞争优势是不断变弱的,将来在更远期挣回现金流的可能性就更低了。 5,公司是否有非常独特的文化?文化是否能够进化? 毕竟要投资这么长时间,对创始人和公司管理文化是非常关注的。特别喜欢创始人领导的公司,而不是说创始人什么都不干,创始人在做房地产,找了一些人在做新公司,要尽量避免这样的公司。 谈到进化在BG看来,大部分公司都会有大公司病,需要看它怎么能维持比较灵活的管理,变大之后还能够保持非常快速的成长,比如亚马逊的day one文化(注:就是始终处在 创业启动状态,充满迷茫和压力,但是充满创造力和颠覆思想 )。 6,公司过去的回报率怎么样? 一方面是考虑到公司的ROE(净资产收益率),二是考虑公司的Margins(利润),看它的过去是不是值得投资,如果每年ROE都不到10个点,可能长期来看也没什么意思。 7,ROE能不能随着时间增长? 有些公司一开始没有盈利,一直在烧钱,5年之后说不定ROE会到20%或者更高,它是一个动态过程。这样的公司BG也会投资,包括一些早期项目,很多公司都是没有盈利的。 8,公司怎么分配资本? 资本现金流无非就是5种方法:再投资、收购、还债、分红、回购股份,要看公司在某个阶段的资本分配是不是最优的。 如果公司明明可以发展更多,结果乱分红了;或者是明明到了特别成熟的时候,还不愿意分红,都是错误的分配资本。 9,公司怎样才能长成5倍? BG关注的是怎样,而不是能不能。这会强迫BG每个人去设想一些未来的可能性,包括公司现在的底层架构能不能够延伸到更多的业务。 比如,早期的亚马逊或者是阿里,连一个概念都没有,BG会考虑这个公司有没有这种机遇,以后去扩展到可触及的市场。 10,市场对公司有哪些误解,哪些事...

进入双拼的世界

──小鹤双拼官方记忆口诀诗一首 Kuai ing Liang uang Ruan Cao Zou , T ue Qiu Yun Wei Jan Mian 快 迎 两 王 软 草 走 ,特 约 秋 云 为 见 面 Xia ua Song iong ShU ChI ZhVi , Geng Dai Bin Niao Fen Pie Hang 夏 娃 怂 恿 书 痴 追,更 待 斌 鸟 分 撇 航 注释: 如上,一和三两句的前四个字为一个大写字母代表了两个字的拼音   T ue各取拼音谐音为特约,Jan取英文谐音为见,其余均是一个大写字母代表一个字的拼音   斌鸟是一种鸟,分撇一词是分离之意,故斌鸟分撇航意为鸳鸯各自飞。   译文: 一个地方官笑着说:“快欢迎两位王爷到软草原走一走,我为两位特意约了秋云姑娘来见面”,   夏娃听见了,怂恿暗恋秋云的书痴快去追,此时不追,更待何时?难道要等鸳鸯各自飞? 记住后,每按一个键,都得停顿几秒,不过熟悉了字母和声韵母之间的对应关系。 双拼练习网站推荐: https://linci.co/sp/