首先感谢p3terx的贡献:

GitHub: https://github.com/P3TERX/docker-aria2-pro

Docker Hub: https://hub.docker.com/r/p3terx/aria2-pro

基础使用

  • 最基本的启动命令如下,你只需要完整替换<TOKEN>字段(RPC密钥)即可启动。更强大的功能请阅读后文。
docker run -d \
    --name aria2-pro \
    --restart unless-stopped \
    --log-opt max-size=1m \
    --network host \
    -e PUID=$UID \
    -e PGID=$GID \
    -e RPC_SECRET=<TOKEN> \
    -e RPC_PORT=6800 \
    -e LISTEN_PORT=6888 \
    -v $PWD/aria2-config:/config \
    -v $PWD/aria2-downloads:/downloads \
    p3terx/aria2-pro
  • 配置本机防火墙开放必要的入站端口,内网机器在路由器设置端口转发到相同端口。
  • 使用你喜欢的 WebUI 或 App 进行连接,强烈推荐 AriaNg
  • 体验高速远程离线下载的乐趣。

TIPS:

选项参数说明

Docker 基本选项

  • --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 网络模式章节。

 

容器目录映射/挂载

  • -v $PWD/aria2-config:/config – 配置目录映射,配置文件持久化。左边为宿主机路径供自定义,不要有中文、不要混用配置文件,首次使用请确保目录为空。
  • -v $PWD/aria2-downloads:/downloads – 下载目录映射。左边为宿主机路径供自定义,不要有中文

TIPS: 注意确认目录是否存在、权限是否正确。

用户文件权限设置(容器用户映射)

对以上映射的目录进行用户权限设置,aria2c 核心进程会以所设定的用户运行。当使用非 root 用户进行管理时非常重要,这关乎到安全性和文件是否能正常访问。你不应该错过这个细节,否则可能导致不必要的麻烦。

  • -e PUID=$UID – 用户映射。设置文件管理账户的UID(用户 ID)。忽略则默认为nobady用户,并权限最大化。
  • -e PGID=$GID – 用户组映射。设置文件管理账户的GID(用户组 ID)。忽略则默认为nogroup用户组,并权限最大化。

科普: 在常规的 Linux 发行版中$UID$GID这两个环境变量分别为当前登录账户的UIDGID值,所以通过 CLI 启动容器可以直接使用这两个变量。但需要注意可能有部分系统$GID没有被定义。

如果管理文件的账户不是当前登录的账户或者使用 GUI 创建容器请务必执行 id 命令手动获取并填写。比如我的账户为 p3terx,那么就执行 id p3terx

$ id p3terx
uid=1000(p3terx) gid=100(users) ...
设置后容器会自动去配置文件权限,配置目录权限为 755,配置文件为 600,附加功能脚本为 700,下载目录为设定用户 rwx 权限,以提升安全性,且每次重启容器会进行修正,防止权限问题。在不进行任何设置的情况下,即 PUIDPGID 其中任意一个变量留空。容器默认会定义用户为 nobady、用户组为 nogroup,并且设置权限最大化(777),这样理论上任何用户都可以读写配置文件、附加功能脚本等文件和访问下载目录。如果你对文件权限不敏感可以这么做,但并不推荐。

Aria2 配置选项环境变量

用于设置一些可能需要自定义的 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 RPC_SECRET=<TOKEN> \
    -e RPC_PORT=6800 \
    -p 6800:6800 \
    -e LISTEN_PORT=6888 \
    -p 6888:6888 \
    -p 6888:6888/udp \
    -v ~/aria2-config:/config \
    -v ~/aria2-downloads:/downloads \
    p3terx/aria2-pro

TIPS: bridge 网络模式下如果需要自定义端口,建议映射到宿主机相同的端口,避免混淆和功能异常。

注意事项

  • 作者不会对使用此项目造成的损失承担任何责任,使用前请务必详细阅读整个文档再考虑是否使用。
  • 容器启动命令有关路径与端口参数中:(冒号)右边的值为容器内部的固定值(常识),不要去修改,否则可能导致无法正常工作。
  • Aria2 配置文件中某些没必要修改的选项参数和已通过环境变量设定的选项参数默认情况下修改无效,重启后会自动修复为正确的值。(为了防止错误修改后导致容器工作异常所做的自我修复功能,比如可以防止把容器内的路径改成容器外的路径之类的迷惑行为)
  • 由于 Aria2 暂时没有 UPnP 功能,所以必须配置防火墙开放监听端口,内网设备在路由器设置端口转发到相同端口,这对 BT 下载尤为重要,否则 Aria2 将无法与外界进行数据交换,影响下载率和速度。方法可参考内网端口转发设置章节。有关原理参见《Aria2 无法下载磁力链接、BT种子和速度慢的解决方案》。
  • 某些 NAS 系统比如 OpenMediaVault 由于挂载盘默认使用了noexec特征,如果配置文件目录映射到了挂载盘下可能会导致附加功能脚本没有执行权限,解决方法可参考《OpenMediaVault 使用中遇到的问题和解决方案 #1 – permission denied》。
  • 在中国大陆地区使用可能需要处理网络问题。已做针对性优化,但国情都懂的。
  • 其它有关使用的注意事项因为精力有限暂未做整理,可查看本博客其它 Aria2 文章(不完全适用于本项目,仅供参考)。

 

分类: DOCKERTECH

Avatar photo

sontjer

For the amatuer tech nerds & life maniacs.

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注