一、环境说明
以下是我这边的搭建环境,可以作为参考。
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中也能看到