2025年了,Aria2 配置指南(SSL,RPC,Systemctl 服务配置更新)

10年前写过10次如何在树莓派上 Aria2,10年过去了,运行依旧稳定。

但是在10年后的今天,我们不得不更新一些配置,以增强安全性和适应现在Linux服务配置等,本篇博客主要介绍以下3个更新。

  1. RPC 配置
  2. SSL 配置
  3. IPV6 配置
  4. systemctl 服务配置

RPC在之前使用 –rpc-user 和 –rpc-passwd 两个参数来配置授权,而在v1.18.4之后,RPC 使用token授权令牌,取代 –rpc-user 和 –rpc-passwd 选项,提高安全性,具体参数为:

rpc-secret=<TOKEN>

在进行远程 RPC 连接时,SSL 在今天当然是必不可少,而且如果你使用web 客户端管理的话,web客户端如果通过https 连接,那么 http 和 websock 方式的RPC会被禁用,只能使用https和websocks方式进行RPC连接,具体配置为:

rpc-secure=true
rpc-certificate=/path/key/fullchain.pem
rpc-private-key=/path/key/privkey.key

要特别注意,Aria2 不支持自签名证书,所以必须使用具有根证书授权的机构颁发的SSL证书,这里推荐使用Let’s Encrypt 的免费证书,但是有一个问题是,Let’s Encrypt 自动更新的证书只有root用户才能访问,aria2 必须以root用户身份运行才能读取到证书文件,否则每次Let’s Encrypt 自动更新后都要手动复制证书并修改权限才能被以普通用户运行的aira2运行。

为了实现全自动化,我们用 root 用户来运行 aira2,但是这样同样会有问题,就是下载的文件所有者全部都是root,其他用户只能读取无法进行修改、删除、移动等操作,我的最终方案是通过 on-download-complete 参数,让下载后的文件通过脚本自动修改权限为普通用户,具体设置:

先写一个脚本文件:

nano /home/pi/.config/aria2/chown.sh

内容:

#!/bin/bash

# 检查 aria2 传递的参数数量
if [ $# -lt 3 ]; then
    echo "Usage: $0 <gid> <filepath> <filename>"
    exit 1
fi

# 定义目标用户和组
# 请将 pi 替换为你希望拥有文件的实际用户名和组名
TARGET_USER="pi"
TARGET_GROUP="pi"

# aria2c 在 on-download-complete 钩子中传递的参数是:
# $1: GID(全局 ID,aria2c 内部使用)
# $2: 文件数
# $3: 文件路径(如果下载的是单个文件)
# 
# 由于你只需要处理文件权限,我们主要关心文件路径

# $3, $4, $5, ... 是下载文件的路径
# 遍历所有下载完成的文件
shift 2 # 移除前两个参数 (GID, 文件数)

for FILE_PATH in "$@"; do
    if [ -f "$FILE_PATH" ] || [ -d "$FILE_PATH" ]; then
        echo "Changing ownership of $FILE_PATH to ${TARGET_USER}:${TARGET_GROUP}"
        # 使用 chown 命令递归地将文件/目录所有权更改为目标用户
        sudo chown -R ${TARGET_USER}:${TARGET_GROUP} "$FILE_PATH"
        # 确保目标用户拥有写权限,新组拥有读权限
        sudo chmod -R u+rw,g+r "$FILE_PATH"
    fi
done

exit 0

给予执行权限:

chmod +x /home/pi/.config/aria2/chown.sh

然后再 arai2.conf 中添加配置:

on-download-complete=/home/pi/.config/aria2/chown.sh

这样 RPC和SSL的支持就配置完成了,顺便说一句,10年前aria2就已经支持IPV6,但是当时由于运营商的网络发展并不完善,IPV6经常遇到问题,而在2025年,IPV6已经是运营商强烈建议使用的网络方式,所以我们可以在配置中不在禁用IPV6,完整的 aria2.conf 如下:

## 文件保存相关 ##

# 文件保存目录
dir=/home/pi/Downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 断点续传
continue=true

# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=prealloc

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=15
# 整体下载速度限制, 运行时可修改, 默认:0(不限制)
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0(不限制)
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0(不限制)
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0(不限制)
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=false

# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/home/pi/.config/aria2/aria2.session
# 在Aria2退出时保存错误的、未完成的下载任务到会话文件
save-session=/home/pi/.config/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许外部访问, 默认:false
rpc-listen-all=true
# RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=<TOKEN>
rpc-secure=true
rpc-certificate=/home/pi/.config/aria2/fullchain.pem
rpc-private-key=/home/pi/.config/aria2/privkey.key

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true

# 下载后完成
on-download-complete=/home/pi/.config/aria2/chown.sh

接下来再来配置通过 systemctl 控制 aira2 的启动:

添加配置文件

nanao /usr/lib/systemd/system/arai2.system

内容(用户root是为了读取 SSL 证书文件):

[Unit]
Description=Aria2 Service
After=network.target
 
[Service]
User=root
ExecStart=/usr/bin/aria2c --conf-path=/home/pi/.config/aria2/aria2.conf
 
[Install]
WantedBy=default.target

然后输入以下命令来重载 systemctl 控制器

sudo systemctl daemon-reload

开机自动启动配置:

sudo systemctl enable aria2.service

至此配置完成。

Related post

  1. NO IMAGE

    2021.05.23

    Ngrok 搭建指南
  2. NO IMAGE
  3. NO IMAGE
  4. NO IMAGE
  5. NO IMAGE
  6. NO IMAGE

There are no comment yet.

HTML tag cannot be used in this comment.

ABOUT

老赵的个人博客,关于 Mac, iPhone, iPad, iPod等产品的软件和硬件技术交流。也讨论Linux/UNIX技术,服务器运维技术等。

2025 年 11 月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Powerd by WordPress on Xserve
Xserve 2009
@2012-2024 HelloMac Copyright