docker部署aria2-pro

前言

我平时有一些下载视频和一些资源文件的需求,有时候需要离线下载,也要速度比较快的方式

之前我是用家里的玩客云绝育之后不再写盘当下载机用的,但是限制很多

我发现了aria2 这个下载器非常适合我,而有个大佬又在原来的基础上进行了大量的配置等优化

发布了aria2-pro的项目,而且提供了docker部署

项目说明

    • BT 下载率高、速度快
    • 重启后不丢失任务进度、不重复下载
    • 删除正在下载的任务自动删除未完成的文件
    • 下载错误自动删除未完成的文件
    • 下载完成自动删除控制文件(.aria2后缀名文件)
    • 下载完成自动删除种子文件(.torrent后缀名文件)
    • 下载完成自动删除空目录
    • BT 下载完成自动清除垃圾文件(文件类型过滤功能)
    • BT 下载完成自动清除小文件(文件大小过滤功能)
    • 有一定的防版权投诉、防迅雷吸血效果
    • 更好的 PT 下载支持
  • 使用 Aria2 Pro Core 项目最新静态编译二进制文件

    • 多平台:amd64i386arm64armhf(VPS、群辉、树莓派等常见平台完美支持)
    • 全功能:Async DNSBitTorrentFirefox3 CookieGZipHTTPSMessage DigestMetalinkXML-RPCSFTP
    • 单服务器线程数最大值无上限(已破解线程数限制)
    • 防掉线程优化
    • 内存消耗优化
    • 读写性能优化
    • 最新依赖库,下载更安全、稳定、快速
    • 持续更新最新版本
  • 支持与 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 版本低于此,请先升级。

    ⚠️ ma­cOS 和 Win­dows 上的 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-portdht-listen-port选项定义的端口。如果没有设置,配置文件中的默认值为6888
  • -e DISK_CACHE=<SIZE> - 磁盘缓存设置,默认值64M。建议在有足够的内存空闲情况下设置为适当增加大小,以减少磁盘 I/O ,提升读写性能,延长硬盘寿命。比如128M256M等。此项值仅决定上限,实际对内存的占用取决于网速(带宽)和设备性能等其它因素。当下载文件超过这个大小且网速足够快时最多会占用所设置大小的内存,所以不宜过大,设置不当轻则进程终结、重则宕机。
  • -e IPV6_MODE=true - 开启 IPv6 模式。此变量等同于设定配置文件中的选项disable-ipv6=falseenable-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: ma­cOS 和 Win­dows 必须要使用 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 容器镜像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10 OpenCV 形态学的应用

文章目录 算子形态学提取直线示例 算子 adaptiveThreshold 二值化算子 adaptiveThreshold(src, dstNone,maxValue, adaptiveMethod, thresholdType, blockSize, C, ) /* *src&#xff1a;灰度化的图片 *dst&#xff1a;输出图像&#xff0c;可选 *maxValue&#xff1a;满足条件…

C#中对象的相等性与同一性的判断方法总结

C#对象的相等性与同一性 1. 概述与准备1.1 概述1.2 准备 2. Equals(Object)2.1 功能&#xff1a;2.2 实例&#xff1a;2.3 扩展&#xff1a;2.4 重写此方法 3. Equals(Object, Object)3.1 功能3.2 实例 4. ReferenceEquals(Object, Object)4.1 功能4.2 使用场景&#xff1a;4.3…

数据结构学习(四)高级数据结构

高级数据结构 1. 概念 之所以称它们为高级的数据结构&#xff0c;是因为它们的实现要比那些常用的数据结构要复杂很多&#xff0c;能够让我们在处理复杂问题的过程中&#xff0c; 多拥有一把利器&#xff0c;同时掌握好它们的性质&#xff0c;以及所适应的场合&#xff0c;在…

《剑指offer》76--删除链表中重复的结点[C++]

目录 题目&#xff1a; 思路&#xff1a; 贴代码&#xff1a; 代码输出 题目&#xff1a; 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;最后返回链表头指针。 如&#xff1a; 链表1->…

PaddleOCR基于PPOCRv4的垂类场景模型微调——手写文字识别

PaddleOCR手写文字识别 一. 项目背景二. 环境配置三. 数据构造四. 模型微调五. 串联推理六. 注意事项七. 参考文献 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;ORC是指对包含文本资料的图像文件进行分析识别处理&#xff0c;获取文字…

EXTJS实现自定义表格

宽度自适应 width: 100%, 高度自适应 height: 100% 同时设置表格所处页面高度100% html,body,#griddemo{height: 100%;} 自定义显示的文本内容 Ext.onReady(function () {Ext.QuickTips.init()function sexText(val) {if (val 0) {return <span style"color:green…

网络编程的学习

思维导图 多路复用代码练习 select完成TCP并发服务器 #include<myhead.h> #define SER_IP "192.168.125.73" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv[]) {//1、创建用于监听的套接字int sfd -1;s…

QPainter::translate: Painter not active

画笔关联画布 就是这里少写了this指针

05_Mongooes

Mongooes Mongoose是通过Node来操作MongoDB的一个模块。是基于Node.js的第三方模块。 一、Node.js安装 1.解压 2.创建文件夹 解压路径下&#xff0c;创建两个文件夹 node_global&#xff1a;全局安装位置 node_cache&#xff1a;缓存 3.配置 配置环境变量 在path路径…

毫秒生成的时间戳如何转化成东八区具体时间

假设现在有一个时间是1709101071419L 后端代码实现 Java代码&#xff08;东八区时间&#xff09; 在Java代码中&#xff0c;我们将时区从UTC调整为东八区&#xff08;UTC8&#xff09;&#xff1a; import java.time.Instant; import java.time.ZoneId; import java.time.Z…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个&#xff1a; FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图&#xff1a; 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下&#xff0c;它也是放…

JavaScript的`call`方法:实现函数间的调用!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

堆和二叉树的动态实现(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

BUUCTF-Misc-[SUCTF 2019]Game1

题目链接&#xff1a;BUUCTF在线评测 (buuoj.cn) 下载附件一大堆文件&#xff0c;打开index.html时发现一大串base字符 U2FsdGVkX1zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ 写代码和工具解都可以 填进去后错误&#xff0c;发现不是真的flag 查看另外一张照片&#xff0c;…

图像AI换脸软件:AI FaceSwap 中文版

AI FaceSwap 是一款利用人工智能技术进行面部交换的软件。该软件通过先进的人工智能算法&#xff0c;能够将一个人的面部表情、神态和特征准确地映射到另一个人身上&#xff0c;实现面部交换的效果。用户只需要提供两张照片&#xff0c;一张是目标人物的照片&#xff0c;另一张…

数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例

目录 引出数据库加固加固思路MySQLRedis Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 数据库进阶——如何提升数据库的安全性&#xff0c;以MySQL和Redis加固为例 数据库加固 加固思路 账号配置 应按照用户分配账号&…

Nginx使用—基础知识

Nginx简介 Nginx优点 高性能、高并发 支持很高的并发&#xff0c;在处理大量并发的情况下&#xff0c;比其他web服务器要高效 轻量且高扩展 功能模块少(源代码仅保留http与核心模块代码&#xff0c;其余不够核心代码会作为插件来安装) 代码模块化&#xff08;易读&#xff0…

C语言:qsort的使用方法

目录 1. qsort是什么&#xff1f; 2. 为什么要使用qsort 3. qsort的使用 3.1 qsort的返回值和参数 3.2 qsort的compare函数参数 3.3 int类型数组的qsort完整代码 4. qsort完整代码 1. qsort是什么&#xff1f; qsort中的q在英语中是quick&#xff0c;快速的意思了&#…

C++基础2:C++基本数据类型和控制结构

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构 2.1 C基本数据类型 程序是由算法…

C# 中 Replace 字符串操作方法

在 C# 中&#xff0c;Replace 是一个字符串操作方法&#xff0c;用于替换字符串中的指定字符或子字符串。它接受两个参数&#xff1a;要查找和替换的字符串。Replace 方法在源字符串中查找所有匹配的字符或子字符串&#xff0c;并用指定的替换字符串进行替换。 下面是 Replace…