美文网首页玩转树莓派树莓派
树莓派/linux安装aria2及WebUI界面实现远程控制下载

树莓派/linux安装aria2及WebUI界面实现远程控制下载

作者: 终可见丶 | 来源:发表于2018-11-23 19:59 被阅读6次

    最近突然对远程控制下载产生了兴趣,于是想要搭建一个远程下载的服务器,任务当然也落在了我这个可怜的树莓派上了。。。

    远程下载之aria2

    这个是一个很强大的下载软件,支持BT下载,并且还可以通过web控制台进行控制。
    于是通过简书,找到了不少好用的教程。比如说:使用aria2rpc下载文件说的非常详细。

    安装 aria

    sudo apt-get install aria2

    /etc/aria/文件夹创建文件

    1. 创建文件夹 sudo mkdir /etc/aria
    2. 授权 sudo chmod 775 /etc/aria
    3. 进入文件夹cd /etc/aria/
    4. 创建session文件:touch aria2.session
    5. 创建并写入设置文件sudo vi aria2.conf
    6. 写入以下内容,需要自己更改的内容就是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。大功告成!

    接下来直接访问树莓派的地址就好了。
    当然也可以配置个内网穿透。这样就可以在任意地方遥控树莓派下载文件了。美滋滋。

    相关文章

      网友评论

        本文标题:树莓派/linux安装aria2及WebUI界面实现远程控制下载

        本文链接:https://www.haomeiwen.com/subject/rylsqqtx.html