💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Docker Aria2的最佳实践 Docker Hub:[https://hub.docker.com/r/superng6/aria2](https://hub.docker.com/r/superng6/aria2) GitHub:[https://www.github.com/SuperNG6/docker-aria2](https://www.github.com/SuperNG6/docker-aria2) 博客:[https://sleele.com/2019/09/27/docker-aria2的最佳实践/](https://sleele.com/2019/09/27/docker-aria2%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/) > 在茫茫多的docker aria2镜像中,一直找不到符合我需求的镜像 # 之所以构建这个镜像的原因 **当前的镜像或多或少都有以下几点不符合的我的需求** * 没有配置UID和GID > 这关系到你下载的文件的权限问题,默认是root权限,很难管理 * 端口不全 > 绝大多数的aria2 images 都只开放了6800端口 下载速度息息相关的BT下载DTH监听端口、BT下载监听端口,需要expose出来 支持修改`DHT网络监听端口`和`BT监听端口`,部分网络6881端口已被封禁,建议修改 * 没有自动删除.aria2文件的自动执行脚本 > aria2建立下载任务后会自动生成.aria2文件,aria2自身提供了api可以触发执行脚本 * 没有回收站 > 不小心删除文件后无法找回,现在有了回收站,再也不用担心误删了 * 没有任务转移功能 > NAS下载,建议使用SSD盘,减少硬盘噪音,下载完成后自动保留目录结构转移到HDD硬盘中 * 不能保存在保存磁力链接为种子文件时更名 > aria2虽然可以保存磁力链接为种子,但是种子名为随机字符串,本镜像可以将种子命名为正确名称 * 无法检测是否下载过的任务 > aria2只能够在持续运行期间检查是否为重复任务,重启后再建立相同任务则会覆盖,本镜像支持持久化检查重复任务 支持检测到重复任务自动删除新创立的重复任务 * 不能够暂停任务后结束/移动文件 > BT任务有个特点,就说很容易卡在一个进度就不动了,如果主要文件已下载完成可以执行其他操作就好了 本镜像支持暂停任务后清理垃圾文件,并移动到已完成目录,并结束该任务 # 本镜像的一些优点 * 全平台架构`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](https://github.com/P3TERX/aria2.conf),感谢) * 内置400多条最新trackers(来自[XIU2 / TrackersListCollection](https://github.com/XIU2/TrackersListCollection),感谢) * 每天自动更新trackers,不需要重启aria2即可生效(来自[P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf),感谢) * 默认上海时区 Asia/Shanghai * 直接设置token,不需要在配置文件里修改 * 最新静态编译版的aria2c1.3.5(来自[P3TERX/aria2-builder](https://github.com/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/](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/](https://sleele.com/2021/09/04/nas-ssd-aria2-qbittorrent/) # Changelogs ## 2021/09/10 ~~~ 1、增加启动容器时显示正在运行的docker-aria2版本提示 2、合并普通版和WEBUI版,增加选项`是否启用WEBUI` `-e WEBUI=true`,默认启用,端口8080 ~~~ ## 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](https://sleele.gitee.io/#!/downloading) http[http://sleele.gitee.io/ariang/#!/downloading](http://sleele.gitee.io/ariang/#!/downloading) ## 自行构建webui 在docker上部署最新版ariang [https://sleele.com/2020/06/03/tiny-docker-ariang/](https://sleele.com/2020/06/03/tiny-docker-ariang/) [https://github.com/SuperNG6/docker-ariang](https://github.com/SuperNG6/docker-ariang) [https://hub.docker.com/r/superng6/ariang](https://hub.docker.com/r/superng6/ariang) ## 挂载路径 `/config``/downloads` ## 默认关闭SSL,如需要请手动开启 之所以默认关闭SSL(建议开启),是因为如果开启,又没有配置证书,会导致aria2启动失败,所以如果需要开启请手动编辑aria2.conf 证书请放在`/config/ssl`目录下 删掉24,26,28行的`#`号![IknUvK](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/IknUvK.jpg) ## 修改RPC token 填写你自己的token,越长越好,建议使用生成的UUID![ByRMgP](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/ByRMgP.jpg) ## 关于群晖 群晖用户请使用你当前的用户SSH进系统,输入`id 你的用户id`获取到你的UID和GID并输入进去 ![nwmkxT](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/nwmkxT.jpg)![1d5oD8](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/1d5oD8.jpg)![JiGtJA](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/JiGtJA.jpg) ### 权限管理设置 对你的`docker配置文件夹的根目录`进行如图操作,`你的下载文件夹的根目录`进行相似操作,去掉`管理`这个权限,只给`写入`,`读取`权限![r4dsfV](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/r4dsfV.jpg) ## 环境变量说明 | 参数 | 说明 | | --- | :-- | | `--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=true` | 启用WEBUI | | `-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](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 **执行命令** ~~~bash 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=true \ -e WEBUI_PORT=8080 \ -e UT=true \ -e RUT=true \ -e FA=falloc \ -e QUIET=true \ -e SMD=true \ -p 32516:32516 \ -p 32516:32516/udp \ -p 6800:6800 \ -p 8080:8080 \ -v $PWD/config:/config \ -v $PWD/downloads:/downloads \ --restart unless-stopped \ superng6/aria2:webui-latest ~~~ docker-compose ~~~yml 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=true - WEBUI_PORT=8080 - BTPORT=32516 - UT=true - QUIET=true - SMD=true volumes: - $PWD/config:/config - $PWD/downloads:/downloads restart: unless-stopped ~~~ # Preview ![N94s7q](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/N94s7q.jpg)![Hq0pXW](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/Hq0pXW.jpg)![Xnip2020-05-11_15-43-56](https://cdn.jsdelivr.net/gh/SuperNG6/pic@master/uPic/Xnip2020-05-11_15-43-56.png)