docker部署aria2-pro
前言
我平时有一些下载视频和一些资源文件的需求,有时候需要离线下载,也要速度比较快的方式
之前我是用家里的玩客云绝育之后不再写盘当下载机用的,但是限制很多
我发现了aria2 这个下载器非常适合我,而有个大佬又在原来的基础上进行了大量的配置等优化
发布了aria2-pro的项目,而且提供了docker部署
项目说明
-
- BT 下载率高、速度快
- 重启后不丢失任务进度、不重复下载
- 删除正在下载的任务自动删除未完成的文件
- 下载错误自动删除未完成的文件
- 下载完成自动删除控制文件(
.aria2
后缀名文件) - 下载完成自动删除种子文件(
.torrent
后缀名文件) - 下载完成自动删除空目录
- BT 下载完成自动清除垃圾文件(文件类型过滤功能)
- BT 下载完成自动清除小文件(文件大小过滤功能)
- 有一定的防版权投诉、防迅雷吸血效果
- 更好的 PT 下载支持
-
使用 Aria2 Pro Core 项目最新静态编译二进制文件
- 多平台:
amd64
,i386
,arm64
,armhf
(VPS、群辉、树莓派等常见平台完美支持) - 全功能:
Async DNS
,BitTorrent
,Firefox3 Cookie
,GZip
,HTTPS
,Message Digest
,Metalink
,XML-RPC
,SFTP
- 单服务器线程数最大值无上限(已破解线程数限制)
- 防掉线程优化
- 内存消耗优化
- 读写性能优化
- 最新依赖库,下载更安全、稳定、快速
- 持续更新最新版本
- 多平台:
-
支持与 RCLONE 联动
- 自动上传 OneDrive 、Google Drive 等网盘
- 百度网盘转存到其它网盘
- 多网盘自由选择
- 支持新一代互联网协议 IPv6
- 下载完成自动移动文件到指定目录(文件自动归档/分类)
- 定时自动更新 BT tracker 列表(无感知、无重启),保持 BT 下载高速率
- 用户文件权限自动配置功能
- 配置文件持久化,支持使用 watchtower 更新容器。
- 极简设计,专注下载,简单易用,少即是多。
项目地址
GitHub: https://github.com/P3TERX/docker-aria2-pro
Docker Hub: https://hub.docker.com/r/p3terx/aria2-pro
也希望多多支持作者提供了这么好的项目 ,给个stars
部署
1.首先安装docker(自行安装)
2.启动容器
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=chen \-e RPC_PORT=6800 \-p 6800:6800 \-e LISTEN_PORT=6888 \-p 6888:6888 \-p 6888:6888/udp \-v /data/aria2/config:/config \-v /data/aria2/downloads:/downloads \p3terx/aria2-pro
--name aria2-pro
- 容器名称,可自定义以示区分。--restart unless-stopped
- 设置容器重启策略,详情参见 Docker 官方文档。--log-driver json-file
- 设置日志记录格式为 json 格式。这是 Docker 的默认值,某些特殊情况可能需要设置。--log-opt max-size=1m
- 日志大小限制为1MB
,防止 Aria2 持续下载产生大量的日志占用磁盘空间。某些 GUI 可能没有相关选项。所以说有什么理由不用 CLI 一把梭?-
--network host
- 使用 host 网络模式。直接使用宿主机网络,免去端口映射导致的部分性能损失,且灵活性更高,可更方便的配置使用 IPv6 网络。host 网络模式仅适用于 Docker 17.06+ ,如果你的 Docker 版本低于此,请先升级。⚠️ macOS 和 Windows 上的 Docker 目前暂时无法使用 host 网络模式,依然需要进行端口映射。方法参见后面的 bridge 网络模式章节。
/data/aria2/config:/config 配置目录映射,配置文件持久化。左边为宿主机路径供自定义,不要有中文、不要混用配置文件,首次使用请确保目录为空。
TIPS: 注意确认目录是否存在、权限是否正确。
用于设置一些可能需要自定义的 Aria2 配置选项,方便一键部署。
TIPS: 以下环境变量定义后将直接写入配置文件( aria2.conf
),通过变量定义后无法通过配置文件修改,因为每次容器重启会自动修正为环境变量定义的值。你也可以选择忽略它们,直接在容器创建后修改配置文件。
-e RPC_SECRET=<TOKEN>
- RPC 密钥设置,即 WebUI 连接时需要填写的密码,只建议使用字母和数字。如果没有设置,配置文件中的默认密码为P3TERX
。-e RPC_PORT=6800
- RPC 端口设置。-e LISTEN_PORT=6888
- BT 监听端口(TCP)、DHT 监听端口(UDP)设置,即 Aria2 配置中listen-port
与dht-listen-port
选项定义的端口。如果没有设置,配置文件中的默认值为6888
。-e DISK_CACHE=<SIZE>
- 磁盘缓存设置,默认值64M
。建议在有足够的内存空闲情况下设置为适当增加大小,以减少磁盘 I/O ,提升读写性能,延长硬盘寿命。比如128M
、256M
等。此项值仅决定上限,实际对内存的占用取决于网速(带宽)和设备性能等其它因素。当下载文件超过这个大小且网速足够快时最多会占用所设置大小的内存,所以不宜过大,设置不当轻则进程终结、重则宕机。-e IPV6_MODE=true
- 开启 IPv6 模式。此变量等同于设定配置文件中的选项disable-ipv6=false
与enable-dht6=true
。可间接提升 BT 下载速率,但需要网络完整支持 IPv6 ,否则会导致部分功能异常,甚至无法下载。
特殊模式环境变量
-e SPECIAL_MODE=move
- 开启文件自动归档/分类功能,即在文件下载完成后把文件移动到指定目录。默认移动到下载目录下的completed
子目录。有关详情在后面的进阶玩法章节。-e SPECIAL_MODE=rclone
- 开启 RCLONE 联动功能。首次启动容器会在容器内自动安装 RCLONE,且每次重启会自动更新。有关详情在后面的进阶玩法章节。
其它环境变量
-e UPDATE_TRACKERS=false
- 禁用自动更新 BT tracker 。PT 下载和想手动填写设置 BT tracker 需求必须禁用。-e CUSTOM_TRACKER_URL=<URL>
:自定义 BT tracker 列表获取链接,多个链接可以用半角逗号(,
)进行分隔。如果没有指定则默认从https://trackerslist.com/all_aria2.txt
进行获取。-e UMASK_SET=022
- umask 设置,默认值022
。决定你下载下来的文件的权限,对权限不敏感或不理解直接填写000
。-e TZ=<TIME_ZONE>
- 时区设置,默认时区为Asia/Shanghai
,若无特殊需求无需自定义。
bridge 网络模式
TIPS: macOS 和 Windows 必须要使用 bridge 网络模式。
点击查看
bridge 网络模式下需要把容器内部的端口映射到宿主机,它是 Docker 默认的网络模式,所以很多 Docker 镜像的默认使用说明都包含端口映射的参数,也包括在 2020 年 3 月 28 日之前的本项目。bridge 网络模式主要是用于网络隔离,对于一般用户几乎无用,而且多了一层 NAT ,会有一定的网络性能损失。如果要使用 IPv6 网络还需要进行一些列复杂的设置。对于全新部署且没有特殊需求不会用到下面这些参数。
-p 6800:6800
- RPC 通讯端口映射。-p 6888:6888
- BT 监听端口(TCP)映射,即 Aria2 配置中listen-port
选项定义的端口。-p 6888:6888/udp
- DHT 监听端口(UDP)映射,即 Aria2 配置中dht-listen-port
选项定义的端口。
bridge 网络模式启动命令示例:
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=chen \-e RPC_PORT=6800 \-p 6800:6800 \-e LISTEN_PORT=6888 \-p 6888:6888 \-p 6888:6888/udp \-v /data/aria2/config:/config \-v /data/aria2/downloads:/downloads \p3terx/aria2-pro
TIPS: bridge 网络模式下如果需要自定义端口,建议映射到宿主机相同的端口,避免混淆和功能异常。
注意事项
- 作者不会对使用此项目造成的损失承担任何责任,使用前请务必详细阅读整个文档再考虑是否使用。
- 容器启动命令有关路径与端口参数中
:
(冒号)右边的值为容器内部的固定值(常识),不要去修改,否则可能导致无法正常工作。 - Aria2 配置文件中某些没必要修改的选项参数和已通过环境变量设定的选项参数默认情况下修改无效,重启后会自动修复为正确的值。(为了防止错误修改后导致容器工作异常所做的自我修复功能,比如可以防止把容器内的路径改成容器外的路径之类的迷惑行为)
- 由于 Aria2 暂时没有 UPnP 功能,所以必须配置防火墙开放监听端口,内网设备在路由器设置端口转发到相同端口,这对 BT 下载尤为重要,否则 Aria2 将无法与外界进行数据交换,影响下载率和速度。方法可参考内网端口转发设置章节。有关原理参见《Aria2 无法下载磁力链接、BT种子和速度慢的解决方案》。
- 某些 NAS 系统比如 OpenMediaVault 由于挂载盘默认使用了
noexec
特征,如果配置文件目录映射到了挂载盘下可能会导致附加功能脚本没有执行权限,解决方法可参考《OpenMediaVault 使用中遇到的问题和解决方案 #1 - permission denied》。 - 在中国大陆地区使用可能需要处理网络问题。已做针对性优化,但国情都懂的。
aria2-pro 解除了单服务器线程最大数量限制
Aria2 官方对单服务器线程数进行限制必然是有他们自己的考虑,但我个人认为自由软件就是要自由,所以解除了这个限制,让所有人可以自由选择。不过无脑的增加线程数并不会让下载速度飞起来,有时会起到反作用,甚至导致无限重启。合理的设置才是正道。
此外 Aria2 Pro 还有特殊的防掉线程优化以及增强配置选项,这是其他项目所不具备的,有关详情配置文件中有注释说明。
部署WebUI
docker run -d \--name ariang \--log-opt max-size=1m \--restart unless-stopped \-p 6880:6880 \p3terx/ariang
访问 6880端口
在AriaNg 设置中 点最上方的RPC 设置Aria2 RPC密钥
在上面给出的启动aria2的镜像代码中我设置的 密钥token是chen
-e RPC_SECRET=chen
进阶玩法
Aria2 Pro 具有非常多的隐藏功能与玩法等待你去发觉,比如通过创建多个容器,你甚至可以在同一设备上同时进行 BT 下载、PT 下载、自动上传 OneDrive 、自动上传 Google Drive 等功能,但不仅限于这些。想象力没有上限,需要自己思考。授人以鱼不如授人以渔,所以只写大概思路与示例。
重启
Aria2 Pro 具有自我修复机制,遇到问题首先重启。如果你修改过配置文件和附加功能脚本,先删除后重启。
docker restart aria2-pro
重装
docker rm -f aria2-pro
docker rmi p3terx/aria2-pro
rm -rf ~/aria2-config
docker pull p3terx/aria2-pro
docker run <...>
更新
也许你的问题在最新的版本中已经得到解决,多多关注项目页面动态。一些重要更新会在 Aria2 Channel 推送。
以下是使用 Watchtower 一键更新 Aria2 Pro 镜像与容器的命令示例:
docker run --rm \-v /var/run/docker.sock:/var/run/docker.sock \containrrr/watchtower -cR \aria2-pro
查看日志
查看日志才能更好的找到问题的根本,即使你看不懂,也要学会如何查看。
- 查看实时日志
docker logs -f --tail 30 aria2-pro
- 导出日志
docker logs aria2-pro > ~/aria2-pro.log
有些代码细节和WebUI作者博客文章中都没有写
我们根据Github作者提供的文档稍微整合了一下
文章参考:
Aria2 Pro - 更好用的 Aria2 Docker 容器镜像 - P3TERX ZONE
GitHub - P3TERX/Aria2-Pro-Docker: Aria2 Pro | A perfect Aria2 Docker image | 更好用的 Aria2 Docker 容器镜像
相关文章:

docker部署aria2-pro
前言 我平时有一些下载视频和一些资源文件的需求,有时候需要离线下载,也要速度比较快的方式 之前我是用家里的玩客云绝育之后不再写盘当下载机用的,但是限制很多 我发现了aria2 这个下载器非常适合我,而有个大佬又在原来的基础…...

vue中Mixins
使用 Mixins 的主要优点包括: 代码复用: 可以将常用的逻辑封装在 Mixin 中,然后在多个组件中重复使用。逻辑分离: 将不同功能的代码分开管理,使代码更加清晰和易于维护。灵活性: Mixins 允许你在组件中引入多个 Mixin,并且可以根…...
linux常用指令(定期更新)
linux常用指令 1.页相关页大小 2.系统参数3.启动参数4.网络参数查询网卡所属numa节点信息网络测速相关iperf测试sar监控网卡流量查看网卡txqueuelen和mtu抓包tcpdump 网络数据收发状态snmp协议栈netstat -i所有网口TX-OK、RX-OKnetstat-s查看各个协议的收发数据ethtool -S单个网…...

【项目】图书管理系统
目录 前言: 项目要求: 知识储备: 代码实现: Main: Books包: Book: BookList: Operate包: Operate: addOperate: deleteOperate: exitOperate: findOperate:…...

华为OD机试 - 疫情扩散时间计算 - 矩阵(Java 2024 C卷 200分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷&am…...

[数据集][图像分类]棉花叶子病害分类数据集2293张4类别
数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):2293 分类类别数:4 类别名称:["diseased_cotton_leaf"…...

《辐射4》是一款什么样的游戏 怎样在mac电脑上玩到《辐射4》辐射4攻略 辐射4开局加点 怎么在Mac电脑玩Steam游戏
辐射4(Fallout 4)是由Bethesda开发的一款动作角色扮演类游戏,为《辐射》系列游戏作品的第四代,于2015年11月10日发行。游戏叙述了主角一家在核爆当天(2077年10月23日),被Vault-Tec(避…...

视频推拉流EasyDSS平台直播通道重连无法转推的原因排查与解决
视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 用户使用EasyDSS平台对直播通道进行转推,发现只要关闭…...

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter测试的详细解析
3.2.4.3 自定义starter测试 阿里云OSS的starter我们刚才已经定义好了,接下来我们就来做一个测试。 今天的课程资料当中,提供了一个自定义starter的测试工程。我们直接打开文件夹,里面有一个测试工程。测试工程就是springboot-autoconfigurat…...
java包的相关概念
包:有效地管理类的一个机制。 包名的目的:通过隶属不同的包有效的区分不同源文件中名字相同的类 包语句 声明:通过关键字 package声明包语句。 位置:源文件中的第一条语句。 作用:为该源文件中声明的类指定包名。 …...

window搭建本地mongo数据库并导入数据
1 window下载mongo数据库 官网:www.mongodb.com 选择 Products > Community Edition 就能进入社区版 在这里下载 windows 版对应的安装包 注意:6.0.1 版本的 MongoDB 配置环境变量有问题,并且我不知道怎么解决,如果想要避免出…...
如何为Android车载应用开发通知?
如何为Android车载应用开发通知?在开发车载应用的通知时,开发者需要考虑到驾驶安全,确保通知不会分散驾驶员的注意力。这通常意味着通知应该是非侵入性的,或者在不影响驾驶的情况下提供信息。开发者可以使用Android的通知API来创建…...

centos上部署k8s
环境准备 四台Linux服务器 主机名 IP 角色 k8s-master-94 192.168.0.94 master k8s-node1-95 192.168.0.95 node1 k8s-node2-96 192.168.0.96 node2 habor 192.168.0.77 镜像仓库 三台机器均执行以下命令: 查看centos版本 [rootlocalhost Work]# cat /…...

网络安全: Kali Linux 进行 MSFvenom 程序利用
目录 一、实验 1.环境 2. Kali Linux 进行 MSFvenom 程序利用 3. 创建计划任务自动运行 MSFvenom 程序 二、问题 1.在线加密解密 2.MSF 运行失败 3.MobaXterm 连接Ubuntu 失败 一、实验 1.环境 (1)主机 表1 主机 系统版本IP备注Kali Linux20…...

浅显易懂C语言指针!!!(三)
文章目录 Pointers as function arguments - call by reference//函数传值vs传引用 Pointers as function arguments - call by reference//函数传值vs传引用 #include<stdio.h> void Increment(int a){//increment 增加 a a 1;//;函数中的是形式参数 形参…...
01 LM 算法及 Cpp 实现
文章目录 01 LM 算法及 Cpp 实现1.1 应用1.2 阻尼法推导1.3 Cpp 算法实现 01 LM 算法及 Cpp 实现 1.1 应用 LM 算法用于解决非线性最小二乘问题 min x F ( x ) 1 2 ∥ f ( x ) ∥ 2 2 (1) \min _x F(x)\frac{1}{2}\|f(\boldsymbol{x})\|_2^2 \tag{1} xminF(x)21∥f(x…...

【网络安全架构】互联网正对中国社会、经济、文化等各个领域产生巨大影响‘
摘 要: 中国互联网近年来飞速发展,普及率达到38.4%。已稳居世界第一网民大国的地位。互联网正对社会、经济、文化等各个领域产生巨大影响。2011年12月21日“泄密门”事件,再次敲响网络安全的警钟。网络攻击和入侵都是根据网络模型不同层次的特…...

【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响
业务简介 在网络状态变化的时候(数据或WiFi),会更新SPN。 基于Android U的代码分析。 分类:SPN Data_Dic-的博客-CSDN博客 功能逻辑 状态说明 飞行模式下注册上WFC的话,注册状态MD上报 regState: NOT_REG_MT_NOT…...
2PC和3PC的区别是什么
2PC提交协议是什么 二阶段提交是指,在计算机网络一级数据库领域内,为了使基于分布式系统的架构下的所有节点在进行事务提交时保持一致性而设计的一种算法。在分布式系统中,每个节点虽然可以知晓自己操作的成功和失败,但是无法知道…...

redis未设置密码被植入挖矿脚本
最近一台测试linux响应速度贼慢,检查发现cpu消耗高达100%!查看进程杀死后过段时间又重启了,一时间也摸不到头绪。无意间发现启动redis的时候cpu瞬间拉到了100%,主要就是zzh和newinit.sh两个脚本。百度了一下说是被植入了挖矿脚本&…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...