安装 aria2

通过包管理安装

  1. CentOS7 下安装

安装 EPEL 源及源管理工具:

yum install epel-release yum-utils

安装 REMI 源:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install aria2
  1. Debian10 下安装
apt install aria2

安装后使用命令 aria2c -v 查看 aria2 的版本号

编译安装

很多时候下载 BT 会收到服务商的版权警告,如果只是单纯的下载文件,可以编译安装,通过 --disable-bittorrent--disable-metalink 参数禁用 aria2 的 BT/PT 下载功能,详见官方文档

以 Debian 为例,安装编译所需工具:

apt install -y libcurl4-openssl-dev libevent-dev ca-certificates libssl-dev pkg-config build-essential intltool autoconf automake libtool autopoint libxml2-dev liblzma-dev zlib1g-dev

下载源码解压后,进入解压目录配置编译:

autoreconf -i
./configure --disable-bittorrent --disable-metalink
make
cp src/aria2c /usr/local/bin

守护进程

安装完成之后,为了管理方便,需要创建一个守护进程,这里通过 systemd 的方式管理:

vim /etc/systemd/system/aria2.service

输入以下内容,注意修改运行的用户和你的 aria2 执行文件以及配置文件路径:

[Unit]
Description=Aria2c download manager (atpx.com)
After=network.target

[Service]
Type=simple
User=aria2
ExecStart=/usr/bin/aria2c --conf-path=/home/aria2/aria2.conf

[Install]
WantedBy=multi-user.target

之后通过下面的命令管理:

# 启动 aria2
systemctl start aria2
# 停止 aria2
systemctl stop aria2
# 开机启动 aria2
systemctl enable aria2

配置 aria2

为了方便,可以编写一个配置文件,在合适的路径下创建文件:

touch ~/home/aria2/aria2.session
vim ~/home/aria2/aria2.conf,

编辑 aria2.conf 配置文件,这里就不再赘述具体的配置内容。

使用以下命令运行aria2:

aria2c --conf-path=/.aria2/aria2.conf -D

安装 AriaNg

AriaNg 是一个让 aria2 更容易使用的 Web 前端,AriaNg 使用纯 html&javascript 开发。

下载后解压到对应位置,配置好相应参数即可访问操作,例如这里将 AriaNg 解压到 /home/aria2/ariang 目录下:

location / {
    root /home/aria2/ariang/;
    index index.html;
}

使用 https 访问

如果你是部署到公网上,推荐使用 https 访问,配置文件中加入:

# 启用 RPC 服务的 SSL/TLS 加密
rpc-secure=true
# SSL 证书路径
rpc-certificate=
# SSL 证书私钥路径
rpc-private-key=

然后可以通过 https://yourdomain.com 进行访问,默认端口为 6800,但这里我不想防火墙开放 6800 端口,因此这里选择使用 Nginx 反代 jsonrpc:

location ^~ /jsonrpc {
    proxy_http_version 1.1;
    add_header Front-End-Https on;
    proxy_set_header Connection "";
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:6800/jsonrpc;
    proxy_pass_header X-Transmission-Session-Id;
}

使用 Nginx 反代后,在浏览器上访问你的 AriaNg 页面,同时将后台 AriaNg 设置 - RPC - Aria RPC 地址 中的端口修改为 443。

Nginx 设置密码访问

这里为了进一步的安全,可以用 Nginx 给页面加密,通过密码才能 AriaNG 页面。

安装工具:

# CentOS:
yum install -y httpd-tools
# Debian:
apt install apache2-utils

生成密码文件:

htpasswd -bcm /usr/local/nginx/htpasswd usr 123123

使用说明:

  • -c:创建一个加密文件
  • -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上
  • -m:默认采用MD5算法对密码进行加密
  • -d:采用CRYPT算法对密码进行加密
  • -p:不对密码进行进行加密,即明文密码
  • -s:采用SHA算法对密码进行加密
  • -b:在命令行中一并输入用户名和密码而不是根据提示输入密码
  • -D:删除指定的用户

在 Nginx 配置文件 server 中添加:

auth_basic 'Restricted';
auth_basic_user_file /usr/local/nginx/htpasswd;

为了防止暴力破解,可以添加访问限制,并发数量不超过 5 个,每秒处理不超过 1 个请求,突发请求不超过 5 个,否则返回错误信息。

http {
    # 限制单 ip 并发连接数
    limit_conn_zone $binary_remote_addr zone=connection:10m;
    # 限制单 ip 访问的漏桶算法限制平均每秒的请求为 5 个
    limit_req_zone $binary_remote_addr zone=request:10m rate=1r/s;
    ...
    server {
        limit_conn connection 5;
        limit_req zone=one burst=5;
        ...
    }
}

最后重载 Nginx 即可。当然,此处还可以更近一步,配合 Fail2ban 禁止掉尝试失败的 IP,具体可以参考 Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 这篇文章。