在centos8上搭建aria2+webui-aria2+nginx 作者: 毕世平 时间: 2020-10-15 分类: 默认分类 前言:`aria2`是什么,想必不用我说了吧,它是跟`qBittorrent`同类的支持下载`bt`文件的协议,但是它还支持直接使用命令行下载,这个qb就做不到了吧。 本文主要介绍在`Centos8`服务器上安装`nginx`,`aria2`和`webui-aria2`这三款软件/协议,支持以`https://example.com`的方式访问到`webui-aria2`,然后通过在网页端修改访问后端`aria2`的默认端口号(本文修改默认6800为8443),可能还要添加上你设置的`token`。其中,`example.com`为你的域名,这个域名需要你自行绑定到你的服务器上。 条件准备: - 一个域名(免费的即可) - 一台有公网IP的vps服务器 - 熟悉基本linux命令 - 本地电脑,方便ssh和winscp操作 # 一、配置aria2 ## 1.1 安装 如下图,`aria2`可以直接从yum仓库安装: ![aria2安装.png](https://shiping.date/usr/uploads/2020/10/3185490807.png) # 安装epel-release yum -y install epel-release # 更新软件包 yum -y update # 安装aria2 yum -y install aria2 **提示**:可以输入`which aria2c`查找此主程序的位置,应该是在`/usr/bin/aria2c`下。 ## 1.2 配置 创建其配置文件,先创建`/etc/aria2`目录,然后在这个目录下创建`aria2.conf`配置文件和用于存放下载文件的目录`downloads`,下面给出可用示例: ## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ## ## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ## ## 文件保存相关 ## # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置 dir=/etc/aria2/downloads # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M #disk-cache=32M # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc和trunc则需要文件系统和内核支持 # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项 #file-allocation=none # 断点续传 continue=true ## 下载连接相关 ## # 最大同时下载任务数, 运行时可修改, 默认:5 #max-concurrent-downloads=5 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=5 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载 min-split-size=10M # 单个任务最大线程数, 添加时可指定, 默认:5 #split=5 # 整体下载速度限制, 运行时可修改, 默认: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=true # 连接超时时间, 默认:60 #timeout=60 # 最大重试次数, 设置为0表示不限制重试次数, 默认:5 #max-tries=5 # 设置重试等待的秒数, 默认:0 #retry-wait=0 ## 进度保存相关 ## # 从会话文件中读取下载任务 input-file=/etc/aria2/aria2.session # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件 save-session=/etc/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 # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 rpc-listen-port=8443 # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 #rpc-secret= rpc-secret=token # 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-user= # 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项 #rpc-passwd= # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 #rpc-secure=true rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件, # 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥 #rpc-certificate=/path/to/certificate.pem rpc-certificate=/etc/aria2/cf.crt # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件 #rpc-private-key=/path/to/certificate.key rpc-private-key=/etc/aria2/cf.key ## BT/PT下载相关 ## # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true #follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 #listen-port=6881-6999 # 单个种子最大连接数, 默认:55 #bt-max-peers=55 # 打开DHT功能, PT需要禁用, 默认:true enable-dht=true # 打开IPv6 DHT功能, PT需要禁用 enable-dht6=false # DHT网络监听端口, 默认:6881-6999 #dht-listen-port=6881-6999 # 本地节点查找, PT需要禁用, 默认:false #bt-enable-lpd=false # 种子交换, PT需要禁用, 默认:true #enable-peer-exchange=true # 每个种子限速, 对少种的PT很有用, 默认:50K #bt-request-peer-speed-limit=50K # 客户端伪装, PT需要 peer-id-prefix=-TR2770- user-agent=Transmission/2.77 peer-agent=Transmission/2.77 # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0 #seed-ratio=1.0 # 强制保存会话, 即使任务已经完成, 默认:false # 较新的版本开启后会在任务完成后依然保留.aria2文件 #force-save=false # BT校验相关, 默认:true #bt-hash-check-seed=true # 继续之前的BT任务时, 无需再次校验, 默认:false #bt-seed-unverified=false # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false bt-save-metadata=true **提醒**:你需要先把证书和key上传到`/etc/aria2`目录下,使用cloudflare提供的免费证书就可以,命名的话,随意,但是上面配置文件里的要和实际的一致。 ## 1.3 端口说明 上面配置中修改了`aria2c rpc服务`默认监听的端口,因为cloudflare cdn不支持通过此端口中转https流量,然而8443可以,所以这里使用了8443,这个端口也是后面你在网页端需要修改的端口号。下面给出支持的端口供选: ![http.jpg](https://shiping.date/usr/uploads/2020/10/3458435792.jpg) ![https.jpg](https://shiping.date/usr/uploads/2020/10/469872816.jpg) # 1.4 配置aria2服务文件 vim /etc/systemd/system/aria2.service # 下面是示例 [Unit] Description=Aria2c Service After=network.target [Service] ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf User=root Restart=on-abort [Install] WantedBy=multi-user.target # 上面是示例 systemctl daemon-reload systemctl enable aria2 systemctl start aria2 # 二、配置nginx ## 2.1 安装nginx nginx官方支持在centos8上添加`nginx.repo`源来安装`nginx`,这对于新手而言无疑友好很多,具体操作可参考:https://nginx.org/en/linux_packages.html#RHEL-CentOS # 安装yum-utils yum -y install yum-utils vi /etc/yum.repos.d/nginx.repo # 下面是文件内容 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true # 上面是文件内容 # 安装nginx yum -y install nginx # 2.2 创建配置文件 本文不对`nginx.conf`做修改,只在`/etc/nginx/conf.d/`目录下添加自己需要的文件: vi aria2.conf # 下面是示例,注意域名替换 server { listen 80; server_name example.com; location / { return 301 https://example.com$request_uri; } } server { listen 443 ssl; server_name example.com; ssl_certificate /etc/aria2/cf.crt; ssl_certificate_key /etc/aria2/cf.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; location / { root /usr/share/nginx/html/webui-aria2-master; } } # 上面是示例 # 2.3 对于nginx的一些命令操作 # 测试所有配置文件是否有错 nginx -t # 重载nginx配置 nginx -s reload # 启动nginx systemctl start nginx # 设置开机自启 systemctl enable nginx # 三、添加webui-aria2 已经有人做好了模板,比较出名的可能有`Aria2NG`,但是我觉得可能我更适合`webui-aria2`多一点。 本文采用的模板地址: - https://github.com/straightedge4life/webui-aria2 - https://github.com/ziahamza/webui-aria2 (这是原版,也是上面的fork源,本文不使用这个) # 下载压缩包 wget https://github.com/straightedge4life/webui-aria2/archive/master.zip # 解压 yum -y install unzip && unzip master.zip # 复制到/usr/share/nginx/html目录下 cp -r ./webui-aria2-master /usr/share/nginx/html/ # 四、防火墙设置 因为相对熟悉使用`iptables`一点,因此本文选择禁用`firewalld`服务,换而直接操作`iptables`,需要将`80,443和8443`端口和`bt(tcp)和dht(udp)随机占用的端口段`都放行: # 禁用firewalld服务 systemctl disable firewalld && systemctl stop firewalld # 安装iptables-services服务 yum -y install iptables-services # 启动和设置开机自启动 systemctl start iptables systemctl enable iptables # 默认带5条规则,所以从第5条插入开始 iptables -t filter -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT iptables -t filter -I INPUT 6 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT iptables -t filter -I INPUT 7 -p tcp -m state --state NEW -m tcp --dport 8443 -j ACCEPT iptables -t filter -I INPUT 8 -p tcp -m state --state NEW -m tcp --dport 6881:6999 -j ACCEPT iptables -t filter -I INPUT 9 -p udp -m state --state NEW -m udp --dport 6881:6999 -j ACCEPT # 保存添加好的规则,从而保证下次启动不失效 service iptables save # 五、访问创建好的服务 浏览器里输入你的域名`https://example.com`,然后在设置里面修改访问`aria2 rpc服务`监听的后端服务端口,这里修改为`8443`,然后你可能还需要设置下访问`token`来做一个验证,然后刷新页面,应该可以访问了。 ## 参考链接: - [Centos7 搭建aria2+Nginx实现离线下载](https://blog.csdn.net/moulongxiong/article/details/105729128 "Centos7 搭建aria2+Nginx实现离线下载") - [LAMP一键安装包常见问题](https://lamp.sh/faq.html "LAMP一键安装包常见问题") - [nginx官网安装方法](https://nginx.org/en/linux_packages.html "nginx官网安装方法") - [webui-aria2项目地址](https://github.com/straightedge4life/webui-aria2 "webui-aria2项目地址") 标签: none