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两个脚本。百度了一下说是被植入了挖矿脚本&…...

轮询--一起学习吧之架构
一、定义 轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输出入”(Programmed I/O)。这种方式是由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务&am…...

【开发工具】Git模拟多人开发场景理解分支管理和远程仓库操作
我们来模拟一个多人多分支的开发场景。假设你有一个新的空白远程仓库,假设地址是 https://github.com/user/repo.git。 克隆远程仓库到本地 $ git clone https://github.com/user/repo.git这会在本地创建一个 repo 目录,并自动设置远程主机为 origin。 创建本地开发分支并推送…...

从零学习Linux操作系统 第三十一部分 ansible常用模块介绍
一、ansible运行模块的两种方式 Ad-Hoc方式 ##利用ansible命令直接完成管理,主要用于临时命令使用场景 playbook方式 ##ansible脚本,主要用于大型项目场景,需要前期的规划,相当于shell当中的脚本 二、如何查看模块帮助 ansible…...

【Linux C | 网络编程】多播的概念、多播地址、UDP实现广播的C语言例子
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

HarmonyOS NEXT应用开发案例——滑动页面信息隐藏与组件位移效果
介绍 在很多应用中,向上滑动"我的"页面,页面顶部会有如下变化效果:一部分信息逐渐隐藏,另一部分信息逐渐显示,同时一些组件会进行缩放或者位置移动。向下滑动时则相反。 效果图预览 使用说明 向上滑动页面…...

ffmpeg 转码过程中参数含义
ffmpeg 转码过程中参数含义 frame 649 fps 73 q28.0 size 3072kB time00:00:25.88 bitrate 972.4kbits/ frame 694 fps 74 q28.0 size 3328kB time00:00:27.68 bitrate 984.9kbits/ frame 732 fps 74 q28.0 size 3584kB time00:00:29.20 bitrate1005.5kbits/ fram…...

探索c++——了解c++的魅力
前言:c是一门既面向对象又面向过程的语言。 不同于java纯粹的面向对象和c纯粹的面向过程。 造成c该特性的原因是c是由本贾尼大佬在c的基础上增添语法创建出来的一门新的语言。 它既兼容了c, 身具面向过程的特性。 又有本身的面向对象的特性。 面向对象和…...

Oracle常用语句语法
1 第一章Oracle命令 转载至 Oracle常用语句语法汇总 https://www.modb.pro/db/1759752946170548224 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 create user 用户名 identified by 密码(密码不能以数字开头)。例如…...

时隔n年再度会看Vue,Git
时隔n年再度会看Vue,Git 曾经沧海难为水,除却巫山不是云。不知道这句话用在这里合不合适,好多东西在记忆中都淡化了。但是互联网确是有记忆的。研究以前项目的时候,翻看到gitee码云上托管的项目,就像是自己的孩子重新又回来了一样…...

SpringCloud-Zuul网关的使用
在SpringCloud中网关Zuul起什么作用? 在Spring Cloud中,Zuul 是一个边缘服务网关,起着以下作用:反向代理:Zuul 可以作为应用程序的反向代理服务器,接收客户端请求并将请求转发给相应的服务。这使得客户端可…...