记一次搭建aria2+ariang+filebrowser的过程

说明

这段时间换了一家vps,故需要重新搭建下载站,便有了这篇记录遇到的坑的文章,搭建环境为 Debian 10。

安装File-Browser

直接通过官方的一键脚本安装

1
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

安装完成后可以通过下述指令测试是否正常

1
filebrowser -r /path/to/your/files -a 0.0.0.0 -p 8080

此时访问你的IP:8080就能够看到登陆界面了此时用户名和密码都是:admin,cltr+c结束filebrowser。

配置File-Browser后台运行

编辑vi /etc/systemd/system/filebrowser.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]
Description=File Browser
Documentation=https://filebrowser.org
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Restart=on-abnormal

User=fengz
Group=fengz

WorkingDirectory=/home/fengz/

ExecStart=/usr/local/bin/filebrowser -r /home/fengz/Download/
ExecReload=/bin/kill -USR1 $MAINPID

KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s

[Install]
WantedBy=multi-user.target

上述service文件修改自caddy v1的caddy.service文件。

保存后执行下述指令,使其可以开机自启并在后台运行

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable filebrowser
sudo systemctl start filebrowser

输入下述指令查看其运行状态

1
systemctl status filebrowser

若未运行成功,查看其状态信息自行排错

注意

  1. 使用的时候将User,Group,WorkingDirectory,ExecStart字段进行修改,使其运行在你想指定的路径下。
  2. 注意mkdir一个Download文件夹,使用ls -l查看该文件夹所属的用户以及用户组,使用chown,chgrp 修改文件夹所属的用户和用户组为普通用户,若未修改且所属是root用户的话,会导致普通用户无法在Download文件夹内增加或删除文件。

Aria2安装

在本博客的之前的文章中介绍了p3terx大佬搞得Aria2的一键管理脚本,这次介绍其增强版Aria2 Pro

描述

此版本是大佬为了满足小伙伴们使用 Docker 部署的需求,特意制作了基于 Aria2 完美配置和特殊定制优化的Aria2 Docker ,为了和一般的 Aria2 Docker 方案做区分所以将其取名为 Aria2 Pro。

镜像特点

  1. 使用 Aria2 完美配置方案
  2. 使用 aria2-builder 项目最新静态编译二进制文件
  3. 支持与 RCLONE 联动
  4. 下载完成自动移动文件到指定目录
  5. 支持新一代互联网协议 IPv6
  6. 定时自动更新 BT tracker 列表(无感知、无重启),保持 BT 下载高速率
  7. 用户文件权限自动配置功能
  8. 配置文件持久化,支持使用 watchtower 更新容器。
  9. 极简设计,专注下载,简单易用,少即是多。
    其余详细介绍请移步大佬的博客围观,支持的请顺手点个star,可以让更多的人获益。

项目地址

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

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

基础使用

最基本的启动命令如下,你只需要完整替换<TOKEN>字段(RPC密钥)即可启动。更强大的功能以及详细的功能描述如有需求,请移步大佬的博客,这里只介绍基本用法。
注意容器目录映射要和之前配置filebrowser运行的文件夹相对应。

1
2
3
4
5
6
7
8
9
10
11
12
13
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 ~/aria2-config:/config \
-v ~/aria2-downloads:/downloads \
p3terx/aria2-pro

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

大多数系统在不设置的情况下默认用户为 nobady、用户组为 nogroup,理论上任何用户都可以读写配置文件、附加功能脚本和所下载的文件。设置后容器会自动去配置文件权限,提升安全性,且每次重启容器会进行修正,防止权限问题。如果你对文件权限不敏感,那么忽略即可。

-e PUID=$UID- 用户映射。设置文件管理账户的 UID(用户 ID),忽略则默认为 nobady 用户。

-e PGID=$GID- 用户组映射。设置文件管理账户的 GID(用户组 ID),忽略则默认为 nogroup 用户组。

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

1
2
$ id p3terx
uid=1000(p3terx) gid=100(users) ...

Aria2 配置选项环境变量

用于设置一些可能需要自定义的 Aria2 配置选项,方便一键部署。
-e RPC_SECRET=<TOKEN>- RPC 密钥设置,即 We­bUI 连接时需要填写的密码,只建议使用字母和数字。如果没有设置,配置文件中的默认密码为P3TERX

-e RPC_PORT=6800- RPC 端口设置。

-e LISTEN_PORT=6888 - BT 监听端口(TCP)、DHT 监听端口(UDP)设置,即 Aria2 配置中 listen-portdht-listen-port选项定义的端口。如果没有设置,配置文件中的默认值为 6888。PT 下载由于部分站点封禁端口所以建议定义为任意未占用的 5 位数端口,比如 25236、51413

-e DISK_CACHE=<SIZE>- 磁盘缓存设置,默认值 64M。路由器或 NAS 等本地设备建议在有足够的内存空闲情况下设置为适当的大小以减少磁盘 I/​O 延长硬盘寿命,比如 128M256M 等,但不要超过可用内存空间大小。

IPV6_MODE=enable - 开启 IPv6 模式。此变量等于设定配置文件中的选项disable-ipv6=falseenable-dht6=true。可间接提升 BT 下载速率,但需要网络完整支持 IPv6 ,否则会导致部分功能异常,甚至无法下载。

#### 特殊模式环境变量

-e SPECIAL_MODE=move- 开启文件自动归档功能,即在文件下载完成后把文件移动到指定目录。默认移动到下载目录下的 completed 子目录。有关详情请移步大佬的博客。

-e SPECIAL_MODE=rclone- 开启 RCLONE 联动功能。首次启动容器会在容器内自动安装 RCLONE,且每次重启会自动更新。有关详情请移步大佬的博客。

其它环境变量

-e UPDATE_TRACKERS=disable - 禁用自动更新 BT tracker 。PT 下载和手动设置 BT tracker 需求必须禁用。

-e CUSTOM_TRACKER_URL=<URL>:自定义 BT tracker 获取链接。

-e UMASK_SET=022 - umask 设置,默认值022,若无特殊需求无需自定义。

-e TZ=<TIME ZONE> - 时区设置,默认时区为Asia/Shanghai,若无特殊需求无需自定义。

bridge 网络模式

bridge 网络模式下需要把容器内部的端口映射到宿主机,它是 Docker 默认的网络模式,所以很多 Docker 镜像的默认使用说明都包含端口映射的参数,也包括在 2020 年 3 月 28 日之前的本项目。bridge 网络模式主要是用于网络隔离,对于一般用户几乎无用,而且端口映射多了一层 NAT ,会有一定的网络性能损失。如果要使用 IPv6 网络还需要进行一些列复杂的设置。所以对于全新部署且没有特殊需求不会用到下面这些参数。

-p 6800:6800- RPC 通讯端口映射。

-p 6888:6888 - BT 监听端口(TCP)映射,即 Aria2 配置中listen-port选项定义的端口。PT 下载建议定义为任意未占用的 5 位数端口,比如 2523651413

-p 6888:6888/udp - DHT 监听端口(UDP)映射,即 Aria2 配置中 dht-listen-port 选项定义的端口。可与 BT 监听端口不同。PT 下载可忽略。

bridge 网络模式启动命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

大佬提醒

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

其他

要获取更为详细的信息请访问大佬的博客

caddy安装及相关配置

安装

caddy由于更新到了v2版本,未能找到之前的一键脚本安装,直接从caddy_download下载可执行文件,拷贝到服务器即可。(注意勾选需要的插件)

配置过程以及CaddyFile的书写见官方文档

对于aria2的RPC服务的SSL/TLS加密建议使用web server的反向代理实现。

个人使用的CaddyFile如下,装了cloudflare的插件,使用的是cloudflare的cdn:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
example.com {
reverse_proxy 127.0.0.1:8080
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
}

example.com {
reverse_proxy 127.0.0.1:6800
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
}

example.com {
root * /var/www/ariang
file_server
encode gzip
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
}

如果不想要使用环境变量,可以将 {env.CLOUDFLARE_API_TOKEN} 替换为auth token
该token的获取,文档中已告知了方法.Module dns.providers.cloudflare