Aria2 对接 nextcloud 实现离线下载

一、环境说明

以下是我这边的搭建环境,可以作为参考。

1、服务器用的是ubuntu 22.04

2、nextcloud是使用docker compose的形式搭建的。下边会放compose文件。

3、aria2使用 Aria2-Pro-Docker ,也是用docker compose搭建的。下边会放compose文件。

本文档是以用户已经搭建过nextcloud为前提写的,不会详细讲如何搭建nextcloud。(因为搭建nextcloud是很复杂的。。。)

但会详细讲aria2的搭建。

大概讲一下aria2是什么东西,aria2就是一个很完善的下载工具,并且提供了接口让其它地方调用,如服务器上搭建了aria2,那么在本地电脑能直接把下载链接传给服务器的aria2,实现服务器下载(离线下载)。

因为aria2是命令行形式的使用起来不方便。所以就有网页管理平台,即Aria Ng。和aria2一起搭建在服务器上,在本地电脑就能访问 服务器网站。

请添加图片描述

二、整体思路

目标:让容器内的nextcloud 和 容器内的aria2都可以访问同一个目录(如 /nextcloud/external/downloads),这样就参实现aria2下载的东西能马上在nextcloud上显示出来。

实现思路

1、将路径 /nextcloud/external 挂载到 nextcloud中,让nextcloud能访问该路径下的东西。

2、为nextcloud添加外部存储应用,配置外部存储 将/nextcloud/external/downloads路径下的东西暴露给nextcloud用户。

3、将 /nextcloud/external/downloads 映射到aria2下载目录。

本文档以/nextcloud/external/nextcloud/external/downloads 作为示例,大家可以替换成自己想要的路径。

三、nextcloud配置

1、配置挂载点

见compose.yml里面的说明

compose.yml

services:
  nextcloud-aio-mastercontainer:
    image: nextcloud/all-in-one:latest
    init: true
    restart: always
    container_name: nextcloud-aio-mastercontainer
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    network_mode: bridge
    ports:
      - 8080:8080
    environment:
      APACHE_PORT: 11000
      APACHE_IP_BINDING: 0.0.0.0
      NEXTCLOUD_DATADIR: /nextcloud/ncdata  
      NEXTCLOUD_MOUNT: /nextcloud/external/ # 配置这里!!!指定暴露给nextcloud的路径,注意是系统的路径,不是容器内部的路径。(其实挂载后 对应的容器内部路径 也是/nextcloud/external/)

volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer

在aio中停止容器运行,一般是 8080 端口

请添加图片描述

要删除已有的 nextcloud-aio-mastercontainer 容器,再用compose.yml重新创建。删除aio容器不会影响到已有的数据,大胆删!

# 查看当前容器的id,删除的时候要用
sudo docker ps -a

# 删除容器
sudo docker rm 容器id

# 重新创建容器,需要先移动到 compose.yml 所在的目录
sudo docker compose up -d # 或 sudo docker-compose up -d

2、下载外部存储应用

登陆nextcloud 管理员用户,在应用设置 → 发现应用 → 下载安装 External storage support 应用,完成后要记得启用

请添加图片描述

3、配置外部存储

登陆nextcloud 管理员用户,在管理设置 → 外部存储 界面中可以配置外部存储。

增加存储 → 选择本地 就行了,其它配置参考下图(后面那个"可用于" 就是指定用户组,只有指定的用户组才能看到这个外部存储)。

如果没出现 本地选项,就是 NEXTCLOUD_MOUNT 挂载点没配置对。

请添加图片描述

4、测试

(1)在路径 /nextcloud/external/downloads 放点东西,看能不能在nextcloud中看到。

(2)在nextcloud的 外部存储 目录中,上传点东西,看能不能成功。

如果有问题一般是权限问题,把目录的权限改成 777 就行了。

sudo chmod 777 /nextcloud/external/downloads

四、Aria2配置

aria2用的是docker,官方:P3TERX/Aria2-Pro-Docker

1、配置compose.yml

version: "3.8"

services:
  Aria2-Pro:
    container_name: aria2-pro
    image: p3terx/aria2-pro
    environment:
      - PUID=33 # 用户和组都是 www-data,即网页数据
      - PGID=33 # 用户和组都是 www-data,即网页数据
      - UMASK_SET=022 # 这是下载后文件的权限,不要动它
      - RPC_SECRET=y2s9qp0buV4GgHPYcPwxy4pw # 密钥,AriaNg连接Aria2的时候需要用到该密钥
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - DISK_CACHE=256M
      - IPV6_MODE=true
      - UPDATE_TRACKERS=true
      - CUSTOM_TRACKER_URL=
      - TZ=Asia/Shanghai
    volumes:
      - /nextcloud/aria2/config:/config				# 配置文件目录,可以把冒号前面的路径替换成自己的路径。
      - /nextcloud/external/downloads:/downloads	# 下载目录,需要映射成nextcloud外部存储配的路径,这样就打通了nextcloud和aria2。

# 如果使用主机网络模式,则无需端口映射。
# 这是使用 IPv6 网络的最简单方法。
    network_mode: host
#    network_mode: bridge
#    ports:
#      - 6800:6800
#      - 6888:6888
#      - 6888:6888/udp
    restart: unless-stopped
# 由于 Aria2 会持续生成日志,因此请将日志大小限制在 1M 以防止硬盘空间耗尽。
    logging:
      driver: json-file
      options:
        max-size: 1m

# AriaNg 只是一个静态网页,通常只需部署在一台主机上。
  AriaNg:
    container_name: ariang
    image: p3terx/ariang
    # 能用 6880 端口来访问该网页
    command: --port 6880 --ipv6
    network_mode: host
#    network_mode: bridge
#    ports:
#      - 6880:6880
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: 1m

2、创建并运行

# 创建容器,需要先移动到 compose.yml 所在的目录
sudo docker compose up -d # 或 sudo docker-compose up -d

3、访问aria2 ng 管理网站,配置rpc

访问网站: 服务器地址:6880 (如 localhost:6880、192.168.1.24:6880 等)

在 AriaNg设置 → RPC(地址:6880) → Aria2 RPC密钥 中输入在 compose.yml中配置的rpc密钥。再刷新界面就行了,会提示说已连接。

请添加图片描述

4、测试

新建链接,下载个图片。

请添加图片描述

下载完成,nextcloud中也能看到

请添加图片描述

大功告成!

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值