Docker Hub:https://hub.docker.com/r/superng6/aria2
GitHub:https://www.github.com/SuperNG6/docker-aria2
博客:https://sleele.com/2019/09/27/docker-aria2的最佳实践/
在茫茫多的docker aria2镜像中,一直找不到符合我需求的镜像
之所以构建这个镜像的原因
当前的镜像或多或少都有以下几点不符合的我的需求
- 没有配置UID和GID这关系到你下载的文件的权限问题,默认是root权限,很难管理
- 端口不全绝大多数的aria2 images 都只开放了6800端口 下载速度息息相关的BT下载DTH监听端口、BT下载监听端口,需要expose出来 支持修改
DHT网络监听端口
和BT监听端口
,部分网络6881端口已被封禁,建议修改 - 没有自动删除.aria2文件的自动执行脚本aria2建立下载任务后会自动生成.aria2文件,aria2自身提供了api可以触发执行脚本
- 没有回收站不小心删除文件后无法找回,现在有了回收站,再也不用担心误删了
- 没有任务转移功能NAS下载,建议使用SSD盘,减少硬盘噪音,下载完成后自动保留目录结构转移到HDD硬盘中
本镜像的一些优点
- 全平台架构
x86-64
、arm64
、armhf
,统一latest tag - 做了usermapping,使用你自己的账户权限来运行,这点对于群辉来说尤其重要
- 纯aria2,没有包含多于的服务
- 超小镜像体积 10.77 MB
- 可以自定义任意二级目录
- 开放了BT下载DTH监听端口、BT下载监听端口(TCP/UDP 6881),加快下载速度
- 默认开启DHT并且创建了DHT文件,加速下载
- 包含了下载完成后自动删除.aria2文件脚本
- 包含了执行删除正在下载任务事时自动执行删除文件(删除已完成的任务不会删除文件,请放心)和aria2文件的脚本
- 内置最优的aria2配置文件(修改自P3TERX/aria2.conf,感谢)
- 内置400多条最新trackers(来自XIU2 / TrackersListCollection,感谢)
- 每天自动更新trackers,不需要重启aria2即可生效(来自P3TERX/aria2.conf,感谢)
- 默认上海时区 Asia/Shanghai
- 直接设置token,不需要在配置文件里修改
- 最新静态编译版的aria2c1.3.5(来自P3TERX/aria2-builder,感谢)
- 解除aria2c下载线程限制
- 支持自动更新tracker,每次启动容器时会自动更新tracker
- 手动设置磁盘缓存
CACHE
,默认参数128M
- 可选则开启回收站,删除文件后移动至回收站,防止丢失文件
- 可选下载任务完成后,保留目录结构移动文件
- 相对来说最完善的任务处理脚本
- 更多可手动调节参数,大量选项不需要修改conf文件
- 全平台镜像统一tag
Architecture
全平台镜像统一Tag
latest (default none webui)
docker pull superng6/aria2:latest
Architecture | Tag |
---|---|
x86-64 | latest |
arm64 | latest |
armhf | latest |
webui-latest (default aria2 with webui ariang)
docker pull superng6/aria2:webui-latest
Architecture | Tag |
---|---|
x86-64 | webui-latest |
arm64 | webui-latest |
armhf | webui-latest |
往后所有新增功能设置选项均在/config/setting.conf
额外补充文章
群晖 DS918+扩展 – M.2 NVMe SSD 缓存变储存空间
https://sleele.com/2021/09/04/synology-nas-m2nvme-ssd-cache-change-to-storage-pool/
NAS SSD临时下载盘,Aria2+qbittorrent配置教程
https://sleele.com/2021/09/04/nas-ssd-aria2-qbittorrent/
Changelogs
2021/09/10
1、增加启动容器时显示正在运行的docker-aria2版本提示
2021/09/09
1、支持修改`BT监听端口`和`DHT网络监听端口`,默认`BTPORT=32516`
2、增强程序健壮性,"/config/setting.conf"的参数误删除也会使用默认参数
3、下个版本可能会合并webui版和普通版,二者资源占用上几乎没有区别,不想再多维护一个版本了
4、docker-compose 事例说明中加入host模式写法,推荐使用host模式,性能更好
5、"/config/setting.conf"的`自定义tracker地址`功能,变更至docker环境变量中,| `-e CTU=` |启动容器时更新自定义trackes地址中的trackes|
2021/08/24
1、更新 aria2 1.36.0
2021/08/14
1、添加WEBUI_PORT设置,默认`WEBUI_PORT=8080`
2021/07/28
1、自定义tracker地址变更至`/config/setting.conf`
现在无需重启容器也能方便修改自定义tracker了
Change Log History
Document
在线webui
我在Gitee上构建了基于ariang主线稳定版的在线webui:
仅https https://sleele.gitee.io/#!/downloading
http http://sleele.gitee.io/ariang/#!/downloading
自行构建webui
在docker上部署最新版ariang
https://sleele.com/2020/06/03/tiny-docker-ariang/
https://github.com/SuperNG6/docker-ariang
https://hub.docker.com/r/superng6/ariang
挂载路径
/config
/downloads
默认关闭SSL,如需要请手动开启
之所以默认关闭SSL(建议开启),是因为如果开启,又没有配置证书,会导致aria2启动失败,所以如果需要开启请手动编辑aria2.conf 证书请放在/config/ssl
目录下 删掉24,26,28行的#
号
修改RPC token
关于群晖
群晖用户请使用你当前的用户SSH进系统,输入 id 你的用户id
获取到你的UID和GID并输入进去
权限管理设置
对你的docker配置文件夹的根目录
进行如图操作,你的下载文件夹的根目录
进行相似操作,去掉管理
这个权限,只给写入
,读取
权限
环境变量说明
参数 | 说明 |
---|---|
--name=aria2 | 容器名设置为aria2 |
-v 本地文件夹1:/downloads | Aria2下载位置 |
-v 本地文件夹2:/config | Aria2配置文件位置 |
-e PUID=1026 | Linux用户UID |
-e PGID=100 | Linux用户GID |
-e SECRET=yourtoken | Aria2 token |
-e CACHE=1024M | Aria2磁盘缓存配置 |
-e PORT=6800 | RPC通讯端口 |
-e WEBUI_PORT=8080 | WEBUI端口 |
-e BTPORT=32516 | DHT和BT监听端口 |
-e UT=true | 启动容器时更新trackers |
-e CTU= | 启动容器时更新自定义trackes地址 |
-e RUT=true | 每天凌晨3点更新trackers |
-e SMD=true | 保存磁力链接为种子文件 |
-e FA= | 磁盘预分配模式none ,falloc ,trunc ,prealloc |
-p 6800:6800 | Aria2 RPC连接端口 |
-p 6881:6881 | Aria2 tcp下载端口 |
-p 6881:6881/udp | Aria2 p2p udp下载端口 |
--restart unless-stopped | 自动重启容器 |
自定义tracker地址
CTU=”https://cdn.jsdelivr.net/gh/XIU2/TrackersListCollection@master/best_aria2.txt“
/config/setting.conf
配置说明(推荐使用)
推荐使用setting.conf
进行本镜像附加功能选项设置
## docker aria2 功能设置 ##
# 配置文件为本项目的自定义设置选项
# 重置配置文件:删除本文件后重启容器
# 所有设置无需重启容器,即刻生效
# 删除任务,`delete`为删除任务后删除文件,`recycle`为删除文件至回收站,`rmaria`为只删除.aria2文件
remove-task=rmaria
# 下载完成后执行操作选项,默认`false`
# `true`,下载完成后保留目录结构移动
# `dmof`非自定义目录任务,单文件,不执行移动操作。自定义目录、单文件,保留目录结构移动(推荐)
move-task=false
# 文件过滤,任务下载完成后删除不需要的文件内容,`false`、`true`
# 由于aria2自身限制,无法在下载前取消不需要的文件(只能在任务完成后删除文件)
content-filter=false
# 下载完成后删除空文件夹,默认`true`,需要开启文件过滤功能才能生效
# 开启内容过滤后,可能会产生空文件夹,开启`DET`选项后可以删除当前任务中的空文件夹
delete-empty-dir=true
# 对磁力链接生成的种子文件进行操作
# 在开启`SMD`选项后生效,上传的种子无法更名、移动、删除,仅对通过磁力链接保存的种子生效
# 默认保留`retain`,可选删除`delete`,备份种子文件`backup`、重命名种子文件`rename`,重命名种子文件并备份`backup-rename`
# 种子备份位于`/config/backup-torrent`
handle-torrent=backup-rename
# 删除重复任务,检测已完成文件夹,如果有该任务文件,则删除任务,并删除文件,仅针对文件数量大于1的任务生效
# 默认`true`,可选`false`关闭该功能
remove-repeat-task=true
# 任务暂停后移动文件,部分任务下载至百分之99时无法下载,可以启动本选项
# 建议仅在需要时开启该功能,使用完后请记得关闭
# 默认`false`,可选`true`开启该功能
move-paused-task=false
/config/文件过滤.conf
配置说明
## 文件过滤设置(全局) ##
# 仅 BT 多文件下载时有效,用于过滤无用文件。
# 可自定义;如需启用请删除对应行的注释 #
# 排除小文件。低于此大小的文件将在下载完成后被删除。
#min-size=10M
# 保留文件类型。其它文件类型将在下载完成后被删除。
#include-file=mp4|mkv|rmvb|mov|avi|srt|ass
# 排除文件类型。排除的文件类型将在下载完成后被删除。
#exclude-file=html|url|lnk|txt|jpg|png
# 按关键词排除。包含以下关键字的文件将在下载完成后被删除。
#keyword-file=广告1|广告2|广告3
# 保留文件(正则表达式)。其它文件类型将在下载完成后被删除。
#include-file-regex=
# 排除文件(正则表达式)。排除的文件类型将在下载完成后被删除。
# 示例为排除比特彗星的 padding file
#exclude-file-regex="(.*/)_+(padding)(_*)(file)(.*)(_+)"
Linux
输入 id 你的用户id
获取到你的UID和GID,替换命令中的PUID、PGID
执行命令
docker run -d \ --name=aria2 \ -e PUID=1026 \ -e PGID=100 \ -e TZ=Asia/Shanghai \ -e SECRET=yourtoken \ -e CACHE=512M \ -e PORT=6800 \ -e BTPORT=32516 \ -e WEBUI_PORT=8080 \ -e UT=true \ -e RUT=true \ -e FA=falloc \ -e QUIET=true \ -e SMD=true \ -p 6881:6881 \ -p 6881:6881/udp \ -p 6800:6800 \ -p 8080:8080 \ -v $PWD/config:/config \ -v $PWD/downloads:/downloads \ --restart unless-stopped \ superng6/aria2:webui-latest
docker-compose
version: "3.1" services: aria2: image: superng6/aria2:webui-latest container_name: aria2 network_mode: host environment: - PUID=1026 - PGID=100 - TZ=Asia/Shanghai - SECRET=yourtoken - CACHE=512M - PORT=6800 - WEBUI_PORT=8080 - BTPORT=32516 - UT=true - QUIET=true - SMD=true volumes: - $PWD/config:/config - $PWD/downloads:/downloads restart: unless-stopped
Preview
本文由 NG6 于2019年09月27日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker Aria2的最佳实践 | sleele的博客
楼主你好,可以将/aria2/script文件夹放在config中么?
@tux 不建议,因为脚本会更新,如果放到config文件夹,不会随着容器更新而更新
开启ssl之后一直连不上了。。。证书和配置文件也都做了,就是不知道咋回事,http是可以正常使用的
你好,下载完成后任务转移该如何配置呢?
大佬你好,我用绿联nas的docker装了您的aria2,但是在配置页面更改配置后,当时能生效,过1-2分钟配置又恢复了,这是什么原因?
更新到4月12日版本后报错:“open /etc/wireproxy/config: no such file or directory” 无法启动。使用环境是群晖docker。请大佬帮忙看看。
@路人甲游客 另外一个仓库的项目填写错地址了,已修复
https://github.com/SuperNG6/docker-aria2/issues/64
https://github.com/SuperNG6/wireproxy/blob/master/.github/workflows/Build%20Image.yml
请教大佬,我黑裙DOCKER安装,选种子下载,直接报 已完成【发生错误(15)】
问号提示:failed to open the file /download/ubuntu-22.10-…….amd64.iso, cause:Permission denied
黑裙版本DSM 7.1.1-42962 Update 4 ,config 和download 权限都根据上面提示做好设置。
实在无解,求帮助。
@fiohappy PGID和PUID都用0试试
@NG6 嗯嗯,果然好了。改了uid和gid都是0,完全正常。谢谢。
请问有无WIN版本
请问有无WIN版本。
在config里开始SSL、加了证书用https还是访问不了。不知道是怎么回事。
@withero 自习检查一下配置吧,我这边测试是没有问题的
另外,不推荐直接用Aria2的ssl,建议使用NGINX反代aria2的rpc端口
就是按要求做的,PUid和Guid设置都没有问题
@苏苏 我也遇到这个问题,后面是Downloads文件夹的读写权限没有当前用户的,加上就好了。
@withero 其实就是说明里的权限配置,需要在系统内给对应目录给与对应用户相应的权限,如果user没有downloads的的权限,那么自然就无法读写
查看图片
@NG6 是的,本以为是这个超级管用用户默认就在文件夹权限里有,没想到竟然没有,不知道是不是因为我的群晖是迁移过来的原因。
楼主,请教一下,您文章中提到“把这三个端口在端口转发处转发到路由器”这一步如何操作?谢谢!