树莓派安装Aria2实现远程离线下载

本文最后由 森林生灵 于 2018/01/16 19:02:00 编辑

文章目录 (?) [+]

        树莓派安装Aria2实现远程离线下载,类似迅雷离线下载。

    Aria2 WebUI

    磁盘挂载

    #查看U盘插入前后多出的 sd* 分区
    cat /proc/partitions

    查看U盘的分区

    #挂载
    sudo mkdir /mnt/usbdisk
    sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/usbdisk
    
    #卸载
    sudo umount /mnt/usbdisk

        默认挂载NTFS格式的硬盘只有读权限,需要安装 ntfs-3g 以实现写操作。

    sudo apt install ntfs-3g

        设置开机自动挂载NTFS格式的硬盘

    sudo nano /etc/fstab
    
    #添加如下内容,保存后重启生效。注意写错或移除磁盘会导使小Pi不开机!
    /dev/sda1 /mnt/usbdisk ntfs defaults 0 0

    Aria2

        Aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。Aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口进行操作。

        Index:https://aria2.github.io

        Code:https://github.com/aria2/aria2

        Manual:https://aria2.github.io/manual/en/html/index.html

        安装Aria2

    sudo apt update
    sudo apt install aria2
    
    #创建配置文件
    sudo mkdir /etc/aria2
    sudo touch /etc/aria2/aria2.conf /etc/aria2/aria2.session
    sudo nano /etc/aria2/aria2.conf

        配置Aria2

    #文件的保存路径(可使用绝对路径或相对路径),默认:当前启动位置
    dir=/mnt/usbdisk
    #启用磁盘缓存,0为禁用缓存,需1.16以上版本,默认:16M
    disk-cache=32M
    #文件预分配方式,能有效降低磁盘碎片,默认:prealloc,NTFS建议使用falloc,EXT3/4建议trunc,MAC下需要注释此项
    #预分配所需时间:none < falloc ? trunc < prealloc,falloc和trunc则需要文件系统和内核支持
    file-allocation=none
    #断点续传
    continue=true
    #最大同时下载任务数,运行时可修改,默认:5
    max-concurrent-downloads=4
    #同一服务器连接数,添加时可指定,默认:1
    max-connection-per-server=4
    #最小文件分片大小,添加时可指定,取值范围1M -1024M,默认:20M
    min-split-size=10M
    #单个任务最大线程数,添加时可指定,默认:5
    split=4
    #整体下载速度限制,运行时可修改,默认: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
    #从会话文件中读取下载任务
    input-file=/etc/aria2/aria2.session
    #在Aria2退出时保存错误/未完成的下载任务到会话文件
    save-session=/etc/aria2/aria2.session
    #定时保存会话,0为退出时才保存,需1.16.1以上版本, 默认:0
    #save-session-interval=60
    #启用RPC,默认:false
    enable-rpc=true
    #允许所有来源,默认:false
    rpc-allow-origin-all=true
    #允许非外部访问,默认:false
    rpc-listen-all=true
    #RPC监听端口,端口被占用时可以修改,默认:6800
    rpc-listen-port=6800
    #设置的RPC授权令牌,v1.18.4新增功能,取代 --rpc-user 和 --rpc-passwd 选项
    rpc-secret=lanseyujietestkey01
    #rpc-secret=<TOKEN># 设置的RPC访问用户名,此选项新版已废弃,建议改用 --rpc-secret 选项
    #rpc-user=<USER># 设置的RPC访问密码,此选项新版已废弃,建议改用 --rpc-secret 选项
    #rpc-passwd=<PASSWD>
    #事件轮询方式,取值:[epoll, kqueue, port, poll, select],不同系统默认值不同
    #event-poll=select
    #当下载的是一个种子(以.torrent结尾)时,自动开始BT任务,默认:true
    #follow-torrent=true
    #BT监听端口,当端口被屏蔽时使用,默认:6881-6999
    listen-port=51413
    #单个种子最大连接数:默认:55
    #bt-max-peers=55
    #打开DHT功能,PT需要禁用,默认:true
    enable-dht=false
    #打开IPv6 DHT功能,PT需要禁用
    enable-dht6=false
    #DHT网络监听端口,默认:6881-6999
    #dht-listen-port=6881-6999
    #本地节点查找,PT需要禁用,默认:false
    #bt-enable-lpd=false
    #种子交换,PT需要禁用,默认:true
    enable-peer-exchange=false
    #每个种子限速,对少种的PT很有用,默认:50K
    #bt-request-peer-speed-limit=50K
    #客户端伪装,PT需要
    peer-id-prefix=-ND2017-
    user-agent=Transmission/4.1
    #当种子的分享率达到这个数时,自动停止做种,0为一直做种, 默认:1.0
    seed-ratio=0
    #强制保存会话,即使任务已经完成,默认:false,较新的版本开启后会在任务完成后依然保留.aria2文件
    force-save=true
    #BT校验相关,默认:true
    #bt-hash-check-seed=true
    #继续之前的BT任务时,无需再次校验,默认:false
    bt-seed-unverified=true
    #保存磁力链接元数据为种子文件(.torrent文件),默认:false
    bt-save-metadata=true

    Tips:

        DHT(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。

        PT(Private Tracker),原理类似BT下载的一种,但有两个明显的改进:一是私密的小范围下载,二是进行流量统计,根据下载量决定你的权限。

        测试与运行Aria2

    #测试启动Aria2,如果没有提示任何错误信息可以Ctrl + C停止
    sudo aria2c --conf-path=/etc/aria2/aria2.conf
    
    #以Daemon的形式后台运行Aria2
    sudo aria2c --conf-path=/etc/aria2/aria2.conf -D

        开机自启Aria2

    sudo nano /etc/init.d/aria2c
    
    #!/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  "Starting aria2c..."
            sudo -u pi aria2c --conf-path=/etc/aria2/aria2.conf -D
            ;;
        stop)
            echo  "Stopping aria2c..."
            killall aria2c
            ;;
        restart)
            $0 stop && sleep 3 && $0 start
            ;;
    esac
    exit
    
    
    sudo chmod +x /etc/init.d/aria2c
    
    #添加开机启动
    sudo update-rc.d aria2c defaults

    Nginx

        安装Nginx

    mkdir ~/Nginx && cd Nginx/
    
    #Openssl补丁
    git clone https://github.com/cloudflare/sslconfig.git
    wget -O openssl.tar.gz -c https://github.com/openssl/openssl/archive/OpenSSL_1_0_2k.tar.gz
    tar zxvf openssl.tar.gz
    mv openssl-OpenSSL_1_0_2k/ openssl/
    cd openssl/
    patch -p1 < ../sslconfig/patches/openssl__chacha20_poly1305_draft_and_rfc_ossl102j.patch
    cd ../
    
    #下载最新Nginx
    wget -c http://nginx.org/download/nginx-1.12.0.tar.gz
    tar zxvf nginx-1.12.0.tar.gz
    cd nginx-1.12.0/
    
    #安装 PCRE 正则依赖库
    sudo apt install libpcre3 libpcre3-dev
    ./configure --with-openssl=../openssl --user=pi --group=pi --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module
    #configure无错误后进行编译
    make
    #编译完成大概需要22分钟
    sudo make install
    sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

        配置Nginx

    sudo nano /usr/local/nginx/conf/nginx.conf
    
    #安装Aria2 WebUI
    sudo apt install git
    git clone https://github.com/ziahamza/webui-aria2.git /usr/local/nginx/html

        测试与运行Nginx

    #测试配置是否正确
    sudo nginx -t
    #启动Nginx
    sudo nginx
    #重载Nginx
    sudo nginx -s reload
    #停止Nginx
    sudo nginx -s stop

        开机自启Nginx

    sudo nano /etc/init.d/nginx
    
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides:          nginx
    # Required-Start:    $remote_fs $network
    # Required-Stop:     $remote_fs $network
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Nginx Server
    ### END INIT INFO
      
    case "$1" in
        start)
            echo  "Starting Nginx..."
            sudo -u pi nginx
            ;;
        stop)
            echo  "Stopping Nginx..."
            sudo nginx -s stop
            ;;
        restart)
            $0 stop && sleep 3 && $0 start
            ;;
    esac
    exit
    
    
    sudo chmod +x /etc/init.d/nginx
    
    #添加开机启动
    sudo update-rc.d nginx defaults

    Ngrok

        安装Ngrok

        参考 https://lanseyujie.com/post/ngrok-for-raspberry-pi.html 搭建的 Ngrok 服务,将树莓派 RPC 的 6800 端口和 HTTP 的 80 端口分别映射到公网上。

        配置Ngrok

    server_addr: "ngrok.syscmd.online:4443"
    trust_host_root_certs: false
    tunnels:
        ssh:
            remote_port: 2222
            proto:
                tcp: 22
        rpc:
            remote_port: 6868
            proto:
                tcp: 6800
        http:
            subdomain: "aria2"
            proto:
                http: 80

        测试与运行Ngrok

    ./ngrok_arm -config=ngrok.cfg start ssh rpc http

        开机自启Ngrok

        参考 https://lanseyujie.com/post/ngrok-for-raspberry-pi.html ,修改 TUNNELS="ssh" 为 TUNNELS="ssh rpc http" 。


    未完待续...



    参考资料

    [1] https://www.htpcguides.com/properly-mount-usb-storage-raspberry-pi/

    [2] http://elinux.org/RPi_Adding_USB_Drives

    [3] http://aria2c.com/usage.html

    本文标题:树莓派安装Aria2实现远程离线下载
    本文链接:https://lanseyujie.com/post/raspberry-pi-install-aria2-achieve-remote-offline-download.html
    版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0
    下一篇:NodeMCU入门
    呃...本文暂时没人留言,来添加一个吧!