隐约雷鸣 阴霾天空 但盼风雨来 能留你在此

隐约雷鸣 阴霾天空 即使天无雨 我亦留此地

Docker Aria2的最佳实践

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的最佳实践/

之所以构建这个镜像的原因

当前的镜像或多或少都有以下几点不符合的我的需求

  • 没有配置UID和GID

这关系到你下载的文件的权限问题,默认是root权限,很难管理

  • 掺杂了不必要的东西
    大量aria2 images都包含了webui,我觉得根本没有必要
    随便找一个在线的aria2控制台即可
    一个容器最好只跑一个服务
  • 端口不全
    绝大多数的aria2 images 都只开放了6800端口
    下载速度息息相关的BT下载DTH监听端口、BT下载监听端口,需要expose出来
  • 没有自动删除.aria2文件的自动执行脚本
    aria2建立下载任务后会自动生成.aria2文件,aria2自身提供了api可以触发执行脚本

本镜像的一些优点

  • 做了usermapping,使用你自己的账户权限来运行,这点对于群辉来说尤其重要
  • 纯aria2,没有包含多于的服务
  • 开放了BT下载DTH监听端口、BT下载监听端口(TCP/UDP 6881),加快下载速度
  • 默认开启DHT并且创建了DHT文件,加速下载
  • 包含了下载完成后自动删除.aria2文件脚本
  • 包含了执行删除文件操作时自动执行删除.aria2文件的脚本
  • 内置最优的aria2配置文件(来自P3TERX/aria2_perfect_config,感谢)
  • 默认上海时区 Asia/Shanghai
  • 直接设置token,不需要在配置文件里修改
  • 最新静态编译版的aria2c1.3.5

Document

在线webui

我在Gitee上构建了基于ariang主线稳定版的在线webui:
https://sleele.gitee.io/#!/downloading

挂载路径

/config /downloads

默认关闭SSL,如需需要请手动开启

之所以默认关闭SSL(建议开启),是因为如果开启,又没有配置证书,会导致aria2启动失败,所以如果需要开启请手动编辑aria2.conf
证书请放在/config/ssl目录下
删掉24,26,28行的#

《Docker Aria2的最佳实践》

修改RPC token

《Docker Aria2的最佳实践》

填写你自己的token,越长越好,建议使用生成的UUID

2019.10.11日更新静态编译aria2c1.3.5解决报错[WARN] aria2c had to connect to the other side using an unknown T…

PS:为什么不在ENV里加入直接修改token?

因为我发现直接运行命令aria2c --rpc-secret=$SECRET会报很多(在conf文件里写也会报,但是少很多)[WARN] aria2c had to connect to the other side using an unknown T…

原因在于aria2c 1.3.4不支持TLS1.3,在你的证书是TLS1.3的情况,下会报错,好消息是10.6号会发布1.3.5解决这个问题,国庆结束后我会更新aria2c 1.3.5解决这个问题

https://github.com/aria2/aria2/issues/1464

https://github.com/aria2/aria2/issues/1468

使用2019.10.11日前版本的用户,更新时请删除conf文件的第十七行

《Docker Aria2的最佳实践》

token现在不用写在配置文件里了,使用2019.10.11日前版本的用户,请删除第十七行,否则会报错,无法启动

关于群晖

群晖用户请使用你当前的用户SSH进系统,输入 id 你的用户id 获取到你的UID和GID并输入进去

《Docker Aria2的最佳实践》
《Docker Aria2的最佳实践》

《Docker Aria2的最佳实践》

关于自动更新trackers

我个人是不喜欢这个功能的,Aria2的一些机制,导致Aria2重启带来的问题会很多,比如,已移除的文件他会再下一次等等,所以没事还是不要重启Aria2,而且trackerlist大部分tracker是不会变动的,只有极少数会变动,频繁的自动更新tracker带来的收益极其有限,甚至是负收益

今后可能会添加这个功能作为可选项,但是默认一定会是关闭

Linux

输入 id 你的用户id 获取到你的UID和GID,替换命令中的PUID、PGID

执行命令

docker create \
  --name=aria2 \
  -e PUID=1026 \
  -e PGID=100 \
  -e TZ=Asia/Shanghai \
  -e SECRET=yourtoken \
  -p 6881:6881 \
  -p 6881:6881/udp \
  -p 6800:6800 \
  -v /path/to/appdata/config:/config \
  -v /path/to/downloads:/downloads \
  --restart unless-stopped \
  superng6/aria2

docker-compose

  version: "2"
services:
  aria2:
    image: superng6/aria2
    container_name: aria2
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Asia/Shanghai
      - SECRET=yourtoken
    volumes:
      - /path/to/appdata/config:/config
      - /path/to/downloads:/downloads
    ports:
      - 6881:6881
      - 6881:6881/udp
      - 6800:6800
    restart: unless-stopped   

Preview

《Docker Aria2的最佳实践》
点赞
  1. 匿名说道:

    跟教程把绑定路径的R/O勾上了,仔细想想那是read only的意思...

  2. 匿名说道:

    root id也一样...

    User uid: 0
    User gid: 0
    -------------------------------------

    chown: changing ownership of '/config': Read-only file system
    [cont-init.d] 10-adduser: exited 0.
    [cont-init.d] 20-config: executing...
    mkdir: cannot create directory ‘/config/ssl’: Read-only file system
    touch: cannot touch '/config/aria2.session': Read-only file system
    touch: cannot touch '/config/dht.dat': Read-only file system
    chown: changing ownership of '/config/aria2.conf': Read-only file system
    chown: changing ownership of '/config': Read-only file system
    chown: changing ownership of '/downloads': Read-only file system
    [[32mINFO[0m] Get trackers ...
    wget: can't connect to remote host (151.101.228.133): Connection refused

    [[31mERROR[0m] Unable to get trackers, network failure or invalid links.
    [cont-init.d] 20-config: exited 1.
    [cont-init.d] 99-custom-scripts: executing...
    [custom-init] no custom files found exiting...
    [cont-init.d] 99-custom-scripts: exited 0.
    [cont-init.d] done.
    [services.d] starting services
    [services.d] done.
    Exception caught
    Exception: [download_helper.cc:563] errorCode=1 Failed to open the file /root/.aria2/aria2.session, cause: File not found or it is a directory

    1. NG6说道:

      你挂载的目录只给只读权限,所以不行

  3. 匿名说道:

    openmediavault 4.x 安装后webUI无法连接

    以下是日志

    [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
    [s6-init] ensuring user provided files have correct perms...exited 0.
    [fix-attrs.d] applying ownership & permissions fixes...
    [fix-attrs.d] done.
    [cont-init.d] executing container initialization scripts...
    [cont-init.d] 10-adduser: executing...

    -------------------------------------
    _ ()
    | | ___ _ __
    | | / __| | | / \
    | | \__ \ | | | () |
    |_| |___/ |_| \__/

    Brought to you by linuxserver.io
    We gratefully accept donations at:
    https://www.linuxserver.io/donate/
    -------------------------------------
    GID/UID
    -------------------------------------

    User uid: 1000
    User gid: 100
    -------------------------------------

    chown: changing ownership of '/config': Read-only file system
    [cont-init.d] 10-adduser: exited 0.
    [cont-init.d] 20-config: executing...
    mkdir: cannot create directory ‘/config/ssl’: Read-only file system
    touch: cannot touch '/config/aria2.session': Read-only file system
    touch: cannot touch '/config/dht.dat': Read-only file system
    chown: changing ownership of '/config/aria2.conf': Read-only file system
    chown: changing ownership of '/config': Read-only file system
    chown: changing ownership of '/downloads': Read-only file system

    --------------------[TRACKERS]--------------------

    --------------------[TRACKERS]--------------------

    [[32mINFO[0m] Adding trackers to '/config/aria2.conf' ...

    sed: can't create temp file '/config/aria2.confXXXXXX': Read-only file system
    [cont-init.d] 20-config: exited 1.
    [cont-init.d] 99-custom-scripts: executing...
    [custom-init] no custom files found exiting...
    [cont-init.d] 99-custom-scripts: exited 0.
    [cont-init.d] done.
    [services.d] starting services
    [services.d] done.
    Exception caught
    Exception: [download_helper.cc:563] errorCode=1 Failed to open the file /root/.aria2/aria2.session, cause: File not found or it is a directory

    1. NG6说道:

      你设置的目录,权限有问题,删掉这个根目录或者换个根文件夹,权限太高,无法创建,要不然就只能用root id

可以不需要填写邮箱(仅回复通知)和昵称直接评论,评论将在审核后通过

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据