记录一些常用的函数和瞎折腾的过程……

在docker中使用Aria2、AriaNG和FileRun实现完美下载

提醒:本文最后更新于 290 天前,文中所描述的信息可能已发生改变,请谨慎使用。

一直用迅雷下载,发现很多最新的电影因为版权方要求,限制下载,尝试使用Aria2下载,可以突破限制。我使用的docker方式安装,并且配合AriaNG和FileRun,那叫一个完美。具体步骤职下:

一、安装好FileRun,这个不多说,方法很多,可以直接拉取FileRun的docker镜像安装,也可单独建好php、mysql、nginx的容器来运行FileRun的安装文件。我使用的是后者。

二、安装Aria2 Pro,项目地址:https://p3terx.com/archives/docker-aria2-pro.html,docker地址:https://hub.docker.com/r/p3terx/aria2-pro

安装docker启动命令如下:

docker run -d \
  --name aria2-pro \
  --restart unless-stopped \
  --log-opt max-size=1m \
  -e PUID=$UID \
  -e PGID=$GID \
  -e UMASK_SET=022 \
  -e RPC_SECRET=<TOKEN> \
  -e RPC_PORT=6800 \
  -e LISTEN_PORT=6888 \
  -p 6800:6800 \
  -p 6888:6888 \
  -p 6888:6888/udp \
  -v /data/docker/aria2-config:/config \
  -v /www.filerun.com/data/aria2-downloads:/downloads \
  p3terx/aria2-pro

注意:

1、用户和组设定:

PUID=$UID、PGID=$GID这2个定义用户和用户组的环境变量,限定了aria2以什么用户和用户组运行,不指定则默认使用nobady用户和nogroup用户组,但在使用FileRun网盘时,会因权限问题无法删除或改名aria2下载好的文件,所以PUID和GUID要指定为和WEB环境的运行用户和用户组一致,比如WEB环境运行的用户及对应的用户组都是WWW,对应的uid和gid都是1001,那就要指定PUID=1001、PGID=1001,这样在FileRun网盘中就可以正常的进行删除和修改操作了;

2、几个环境变量:

-e UMASK_SET=022 ,设置umask,默认值022;

-e RPC_SECRET=<TOKEN>,设置RPC密钥,用于AriaNg与Aria2的通讯验证使用;

-e RPC_PORT=6800,设置PRC通讯端口(与宿主主机的端口映射一致);

-e LISTEN_PORT=6888,BT 监听端口(TCP)、DHT 监听端口(UDP)设置,即 Aria2 配置中listen-port与dht-listen-port选项定义的端口。如果没有设置,配置文件中的默认值为6888。

3、容器目录挂载,将/downloads挂载到宿主主机的/www.filerun.com/data/aria2-downloads目录,即FileRun的数据目录中,方便下载完成直接在网盘中查看;配置文件挂载到指定的宿主主机目录/data/docker/aria2-config中,宿主主机的目录根据实际情况自行修改;

4、3个端口映射:

-p 6800:6800,为RPC 通讯端口映射;

-p 6888:6888,为BT 监听端口(TCP)映射,即 Aria2 配置中listen-port选项定义的端口;

-p 6888:6888/udp,为DHT 监听端口(UDP)映射,即 Aria2 配置中dht-listen-port选项定义的端口。

5、参数--log-opt max-size=1m,限制日志大小限制为1MB,防止Aria2持续下载产生大量的日志占用磁盘空间,某些docker可视化管理系统可能没有相关选项。

三、安装AriaNg,一个可视化的Aria2下载管理界面,项目地址:https://p3terx.com/archives/aria2-frontend-ariang-tutorial.html,docker地址:https://hub.docker.com/r/p3terx/ariang

docker run -d \
  --name ariang \
  --log-opt max-size=1m \
  --restart unless-stopped \
  -p 6880:6880 \
  p3terx/ariang

上面3个安装完成后,就可以使用http://ip:6880访问AriaNg的web管理界面,进入web界面后需要设置一下与Aria2的通讯。

点击“AriaNg 设置”菜单,再点右边的“PRC(XX.XX.XX.XX:6800)”标签,填入“Aria2 RPC 地址”、“Aria2 RPC 密钥”(安装Aria2时填写的token)即可连接到Aria2,然后就可以愉快的进行下载了。

扩展应用:

如果是在家里的机器上安装的aira2,为了方便在外网连接家里的aira2进行下载,可以使用frp内网穿透服务来实现:

对于AriaNg,仅仅是个给aira2发送下载命令的静态网页,完全可以使用公用的忆经部署好的网页版,
比如由AriaNg开发者提供的Demo页面:

http://ariang.mayswind.net/latest

还有以下这些:

http://ariang.js.org
http://ariang.eu.org
http://p3terx.gitee.io/ariang

所以只需要做好aira2的内网穿透就就可以,具体内网穿透教程可以参考《Docker环境中使用frp内网穿透服务》一文,这里我只贴一下配置文件。

使用nginx的反代,nginx仅开放了80和443端口,我的frpc.ini配置是:

[aira2-pro]
type = http
local_port = 80
custom_domains = aira2-pro.psay.cn
proxy_protocol_version = v2

nginx的配置是:

server {
  listen 80 proxy_protocol;
  server_name aira2-pro.psay.cn;

  # 配合使用proxy_protocol获取真实ip
  real_ip_header proxy_protocol;
  real_ip_recursive on;
  set_real_ip_from 172.18.0.1;

  # Allow large attachments
  client_max_body_size 128M;

  location / {
    proxy_pass http://aira2-pro:6800; # aira2容器名和端口
    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_set_header X-Forwarded-Proto $scheme;
  }

  access_log /var/log/nginx/aira2-pro.psay.cn.log;
}

将aira2-pro.psay.cn做A记录到frp的服务器ip,重启nginx和frp,再进入AriaNg(使用上面提到的公共页面)的设置中,将Aria2 RPC地址改为aira2-pro.psay.cn,端口为80(注意端口不再是6800,而是nginx的端口80),填写Aria2 RPC密钥,保存就可以正常连接内网的aira2服务了。