🚀 Docker部署Aria2下载器 | 完整教程+Nginx反向代理配置 | Aria2 Explorer浏览器插件使用指南
docker 部署 Aria2 下载器,并在浏览器端配置 Aria2 Explorer
前言:为什么选择Aria2?
在当今数字时代,高速下载工具对于每个互联网用户来说都至关重要。无论是下载大型软件安装包、高清电影资源,还是BT种子文件,我们都需要一款稳定高效的下载工具。Aria2 就是这样一款轻量级但功能强大的多协议命令行下载工具。
Aria2的核心优势
- 🚀 多协议支持:HTTP/HTTPS、FTP、SFTP、BitTorrent、Metalink
- ⚡ 高速并行下载:支持多线程、多源下载,充分利用带宽
- 💻 跨平台运行:Linux、Windows、macOS、Android等全平台支持
- 🔌 丰富的前端:WebUI、桌面客户端、浏览器插件等多种管理方式
- 📦 轻量级设计:资源占用极低,可在路由器、NAS等设备上运行
- 🛠️ 高度可定制:通过配置文件灵活调整各项参数
为什么使用Docker部署?
传统的Aria2安装需要手动编译或安装依赖包,配置过程繁琐。而使用Docker部署具有以下优势:
- 一键部署:一条命令即可完成安装和配置
- 环境隔离:不影响宿主机系统,干净简洁
- 易于迁移:容器可随时备份和恢复
- 版本管理:方便升级和回滚
- 资源控制:可限制CPU、内存使用量
本文将详细介绍如何使用Docker部署Aria2 Pro,并配合Aria2 Explorer浏览器插件实现便捷的下载管理。特别针对内网穿透场景,提供完整的Nginx反向代理配置方案。
一小段废话:我的踩坑经历
我家所在的小区运营商不提供公网ip,所以只好使用内网穿透的方式从公网访问家中服务。
某日想起来查看了一下 nps 服务端的设备监控,90% 的 CPU 使用率吓了我一跳。经排查,原来是 nps 服务资源占用过高。

那么为什么一个小小的 nps 服务会有这么高的资源沿用呢?
原来是我使用了 Aria2 Explorer 这个浏览器插件查看下载进度。但是配置时偷懒选择了 http 协议!

这样在使用 Aria2 Explorer 查看下载进度时,会无限轮询后端 Aria2 服务,导致 CPU 占用率飙升。
我赶紧修改了配置,改为 ws 协议,果然 CPU 使用率下降了。
考虑到会有人和我一样使用 Aria2 Explorer,所以写了这篇文章,希望能帮到大家。
什么是Aria2 Explorer?
Aria2 Explorer是一款专为Microsoft Edge和Chrome浏览器设计的扩展程序,它可以:
- 📊 实时监控下载进度:可视化展示所有任务的下载状态
- 🎯 便捷任务管理:添加、暂停、继续、删除下载任务
- 🔗 一键捕获链接:自动识别页面中的下载链接
- 📱 响应式设计:适配各种屏幕尺寸
- 🌐 多服务器支持:可同时管理多个Aria2实例
重要提示:为了获得最佳性能,务必使用WebSocket(ws/wss)协议而非HTTP协议连接Aria2 RPC接口!
部署 Aria2
安装 Docker
在你的下载服务器上执行下方命令
sudo wget -qO- https://get.docker.com/ | bash如果提示没有安装 wget 的话安装一下就成。
其他安装方式:
如果您使用的是Ubuntu/Debian系统,也可以使用apt安装:
# 更新软件包索引sudo apt update
# 安装Dockersudo apt install docker.io
# 启动Docker服务sudo systemctl start dockersudo systemctl enable docker
# 验证安装docker --version对于CentOS/RHEL系统:
# 安装必要依赖sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Dockersudo yum install docker-ce docker-ce-cli containerd.io
# 启动服务sudo systemctl start dockersudo systemctl enable docker拉取镜像并运行
sudo docker run -d\ --name aria2 \ --restart unless-stopped \ --log-opt max-size=1m \ -e PUID=$UID \ -e PGID=$GID \ -e UMASK_SET=022 \ -e RPC_SECRET=自己设置一个密码\ -e RPC_PORT=6800 \ -p 6800:6800 \ -e LISTEN_PORT=6888 \ -p 6888:6888 \ -p 6888:6888/udp \ -v /etc/aria2-config:/config \ -v 下载存放的绝对路径:/downloads \ p3terx/aria2-pro将以上命令中中文的部分替换为你的实际情况。
例子:
sudo docker run -d\ --name aria2 \ --restart unless-stopped \ --log-opt max-size=1m \ -e PUID=$UID \ -e PGID=$GID \ -e UMASK_SET=022 \ -e RPC_SECRET=passwd\ -e RPC_PORT=6800 \ -p 6800:6800 \ -e LISTEN_PORT=6888 \ -p 6888:6888 \ -p 6888:6888/udp \ -v /etc/aria2-config:/config \ -v ~/downloads:/downloads \ p3terx/aria2-pro运行成功后 aria2 就装好了,配置文件不需要修改。
Docker命令参数详解
为了让大家更好地理解每个参数的作用,下面进行详细说明:
| 参数 | 说明 | 示例值 |
|---|---|---|
-d | 后台运行容器 | - |
--name aria2 | 容器名称,便于管理 | aria2 |
--restart unless-stopped | 自动重启策略,除非手动停止 | - |
--log-opt max-size=1m | 限制日志文件大小为1MB | 1m |
-e PUID=$UID | 设置容器内用户ID,避免权限问题 | $UID |
-e PGID=$GID | 设置容器内组ID | $GID |
-e UMASK_SET=022 | 设置文件权限掩码 | 022 |
-e RPC_SECRET | RPC访问密码,必须设置 | your_password |
-e RPC_PORT | RPC监听端口 | 6800 |
-p 6800:6800 | 映射RPC端口到宿主机 | 6800:6800 |
-e LISTEN_PORT | BT监听端口 | 6888 |
-p 6888:6888 | 映射BT TCP端口 | 6888:6888 |
-p 6888:6888/udp | 映射BT UDP端口(DHT) | 6888:6888/udp |
-v /etc/aria2-config:/config | 挂载配置目录 | 宿主机:容器 |
-v ~/downloads:/downloads | 挂载下载目录 | 宿主机:容器 |
高级配置选项
如果您需要更精细的控制,可以通过环境变量自定义更多参数:
sudo docker run -d\ --name aria2 \ --restart unless-stopped \ --log-opt max-size=1m \ -e PUID=1000 \ -e PGID=1000 \ -e UMASK_SET=022 \ -e RPC_SECRET=mysecretpassword123 \ -e RPC_PORT=6800 \ -p 6800:6800 \ -e LISTEN_PORT=6888 \ -p 6888:6888 \ -p 6888:6888/udp \ -e MAX_CONNECTION_PER_SERVER=16 \ -e MIN_SPLIT_SIZE=1M \ -e SPLIT=16 \ -e DISK_CACHE=64M \ -e ENABLE_IPV6=true \ -e BT_ENABLE_LPD=true \ -e BT_ENABLE_DHT=true \ -v /etc/aria2-config:/config \ -v /mnt/nas/downloads:/downloads \ p3terx/aria2-pro常用优化参数说明:
MAX_CONNECTION_PER_SERVER:单服务器最大连接数,建议8-16MIN_SPLIT_SIZE:最小分片大小,小文件下载时很有用SPLIT:单个任务的最大连接数,越多越快但消耗资源DISK_CACHE:磁盘缓存大小,适当增加可提升性能ENABLE_IPV6:是否启用IPv6支持BT_ENABLE_LPD:启用本地节点发现,提升BT速度BT_ENABLE_DHT:启用DHT网络,无需Tracker也能下载
验证安装
容器启动后,可以通过以下命令检查运行状态:
# 查看容器状态docker ps | grep aria2
# 查看容器日志docker logs aria2
# 进入容器内部docker exec -it aria2 /bin/bash
# 测试RPC连接curl -X POST http://localhost:6800/jsonrpc \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"aria2.getVersion","id":"test","params":["token:your_password"]}'如果返回版本信息,说明Aria2已经正常运行!
安装与配置 Aria2 Explorer
安装
这里以 Edge 为例
打开网址:aria2-explorer
点击获取

点击添加扩展

其他浏览器安装方式:
- Chrome浏览器:访问 Chrome网上应用店
- Firefox浏览器:访问 Firefox附加组件
- 手动安装:下载crx文件,拖拽到浏览器扩展页面
配置

必填配置项:
- Secret Key:你在 docker run 时设置的
RPC_SECRET - RPC URL:Aria2服务器的访问地址,格式如下:
- 局域网:
ws://192.168.1.100:6800/jsonrpc - 公网IP:
ws://你的公网IP:6800/jsonrpc - 域名:
wss://aria2.yourdomain.com/jsonrpc
- 局域网:
重要提示:
- ✅ 推荐使用
ws(WebSocket) 或wss(WebSocket Secure) 协议 - ❌ 避免使用
http或https协议,会导致CPU占用过高 - 路径必须以
/jsonrpc结尾
配置示例:
# 局域网直连RPC URL: ws://10.102.3.243:6800/jsonrpcSecret Key: passwd
# 公网IP访问RPC URL: ws://123.45.67.89:6800/jsonrpcSecret Key: mypassword123
# 域名访问(HTTPS)RPC URL: wss://aria2.example.com/jsonrpcSecret Key: secretpass配置完成后点击保存,如果是使用服务器公网ip的情况就已经 OK 了。
如果是使用内网穿透且使用 nginx 做了反向代理的话,通过域名是无法直接使用 ws 的。这种情况我们接着往下看。
Aria2 Explorer高级功能
批量下载管理:
- 支持同时添加多个下载任务
- 可批量暂停、继续、删除任务
- 按状态、类型筛选任务
下载统计:
- 实时显示上传/下载速度
- 累计流量统计
- 任务完成时间预估
链接捕获:
- 自动检测网页中的磁力链接
- 右键菜单快速添加到Aria2
- 支持正则表达式过滤链接
通知提醒:
- 任务完成时桌面通知
- 下载错误即时提醒
- 可自定义通知音效
使用内网穿透的情况
很多家庭用户由于没有公网IP,需要通过内网穿透来访问家中的Aria2服务。常见的内网穿透方案包括:
- frp:高性能的反向代理应用
- nps:轻量级、功能强大的内网穿透服务器
- ngrok:知名的内网穿透工具
- ZeroTier:组建虚拟局域网
- Tailscale:基于WireGuard的组网工具
无论使用哪种方案,最终都需要在中转服务器上配置Nginx反向代理,以实现域名访问和WebSocket支持。
配置 Nginx
在反向代理服务器(内网穿透中转服务器)配置 nginx
在http区块下加入如下配置,注意修改域名和端口,需要修改的地方加了备注:【按实际情况来写】
# aria2upstream aria2 { least_conn; server 127.0.0.1:26800 weight=10 max_fails=5 fail_timeout=5s; # 26800 是内网穿透对公网暴露的端口【按实际情况来写】}server { listen 80; listen 443 ssl http2; server_name aria2.example.com; # aria2.example.com 是给 aria2 配置的域名【按实际情况来写】 if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } ssl_certificate /etc/nginx/ssl/aria2.example.com.cer; ssl_certificate_key /etc/nginx/ssl/aria2.example.com.key; # 上面两条是你域名的证书存放的绝对路径【按实际情况来写】 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; location / { proxy_pass http://aria2; proxy_http_version 1.1; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 1800; #nginx与upstream server的连接超时时间(单位:s) proxy_send_timeout 1800; #nginx发送数据至 upstream server超时, 默认60s, 如果连续的60s内没有发送1个字节, 连接关闭 proxy_read_timeout 1800; #nginx接收 upstream server数据超时, 默认60s, 如果连续的60s内没有收到1个 字节, 连接关闭 proxy_buffer_size 4k; #代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一 般只要能保存下头信息即可 proxy_buffers 4 32k; #同上 告诉Nginx保存单个用的几个Buffer最大用多大空间 proxy_busy_buffers_size 64k; #如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2 proxy_temp_file_write_size 64k; #proxy缓存临时文件的大小 }}配置成功后重载 nginx 就 OK 了
# 测试配置文件语法sudo nginx -t
# 重载Nginx配置sudo nginx -s reload
# 或者重启Nginx服务sudo systemctl restart nginxNginx配置关键点解析
1. WebSocket支持配置
以下两行是支持WebSocket的关键配置,缺一不可:
proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";这两行代码的作用是将客户端的WebSocket升级请求透传到后端服务器。
2. SSL证书配置
强烈建议启用HTTPS,原因:
- 🔒 加密传输,保护RPC密码不被窃取
- ✅ 现代浏览器要求HTTPS才能使用某些API
- 🌐 提升安全性和可信度
可以使用Let’s Encrypt免费证书:
# 安装certbotsudo apt install certbot python3-certbot-nginx
# 自动获取并配置证书sudo certbot --nginx -d aria2.example.com3. 超时参数调优
由于Aria2下载可能是长时间任务,需要调整超时参数:
proxy_connect_timeout 1800; # 连接超时30分钟proxy_send_timeout 1800; # 发送超时30分钟proxy_read_timeout 1800; # 读取超时30分钟根据实际需求可以适当延长或缩短。
4. 负载均衡配置
如果你有多个Aria2实例,可以配置负载均衡:
upstream aria2 { least_conn; # 最少连接算法 server 127.0.0.1:26800 weight=10 max_fails=5 fail_timeout=5s; server 127.0.0.1:26801 weight=10 max_fails=5 fail_timeout=5s; server 127.0.0.1:26802 backup; # 备用服务器}内网穿透完整流程示例
以frp为例,完整的配置流程:
1. frp服务端配置(frp.ini)
[common]bind_port = 7000token = your_frp_token
[vhost_https]type = httpscustom_domains = aria2.example.com2. frp客户端配置(家中NAS)
[common]server_addr = your_vps_ipserver_port = 7000token = your_frp_token
[aria2_rpc]type = tcplocal_ip = 127.0.0.1local_port = 6800remote_port = 268003. Nginx反向代理配置(见上文)
4. Aria2 Explorer配置
RPC URL: wss://aria2.example.com/jsonrpcSecret Key: your_rpc_passwordAria2性能优化指南
配置文件优化
虽然Docker镜像已经做了优化,但你仍可以根据实际情况微调。编辑 /etc/aria2-config/aria2.conf:
# ===== 基本设置 =====# 文件保存目录dir=/downloads
# 最大同时下载任务数max-concurrent-downloads=5
# 断点续传continue=true
# ===== HTTP/FTP/SFTP 设置 =====# 同一服务器最大连接数max-connection-per-server=16
# 最小分片大小min-split-size=1M
# 单个任务最大连接数split=16
# ===== BT 设置 =====# 启用DHTenable-dht=true
# 启用本地节点发现bt-enable-lpd=true
# 启用Peer交换bt-enable-peer-exchange=true
# 最大Peer数bt-max-peers=100
# 种子分享率(0表示不限制)seed-ratio=0
# ===== RPC 设置 =====# 启用RPCenable-rpc=true
# RPC监听端口rpc-listen-port=6800
# RPC密钥rpc-secret=your_password
# 允许所有来源rpc-allow-origin-all=true
# 允许外部访问rpc-listen-all=true
# ===== 高级设置 =====# 磁盘缓存disk-cache=64M
# 文件预分配file-allocation=falloc
# 日志级别log-level=warn
# Tracker服务器列表(定期更新)bt-tracker=udp://tracker.opentrackr.org:1337/announce,udp://exodus.desync.com:6969/announceTracker服务器更新
BT下载速度很大程度上取决于Tracker服务器的质量。建议定期更新Tracker列表:
# 获取最新Tracker列表wget -N https://raw.githubusercontent.com/XIU2/TrackersListCollection/master/all.txt
# 应用到Aria2配置echo "bt-tracker=$(cat all.txt | tr '\n' ',')" >> /etc/aria2-config/aria2.conf
# 重启Aria2docker restart aria2网络优化
1. 端口转发
确保以下端口已在路由器上开放:
- 6800 (TCP) - RPC接口
- 6888 (TCP/UDP) - BT监听端口
2. UPnP设置
如果路由器支持UPnP,可以在Aria2中启用:
enable-upnp=true3. IPv6支持
如果你的网络支持IPv6,启用它可以连接到更多Peer:
disable-ipv6=false常见WebUI推荐
除了Aria2 Explorer浏览器插件,还有多款优秀的Web管理界面:
1. AriaNg
特点:
- 🎨 现代化界面设计
- 📱 完美支持移动端
- 🌍 多语言支持
- ⚙️ 丰富的配置选项
部署方式:
docker run -d \ --name ariang \ -p 6880:6880 \ p3terx/ariang访问 http://your-ip:6880 即可使用。
2. WebUI-Aria2
特点:
- 官方推荐的Web界面
- 简洁直观
- 轻量级
GitHub地址: https://github.com/ziahamza/webui-aria2
3. Aria2 Explorer (本文推荐)
特点:
- 浏览器插件,无需额外部署
- 与浏览器无缝集成
- 支持多服务器管理
故障排除
问题1:Docker容器无法启动
症状: docker ps 看不到aria2容器
解决方法:
# 查看容器日志docker logs aria2
# 常见原因:# 1. 端口被占用:更换端口或停止占用进程# 2. 目录权限问题:chown -R $UID:$GID /etc/aria2-config ~/downloads# 3. 配置文件错误:检查aria2.conf语法问题2:无法连接RPC
症状: Aria2 Explorer显示连接失败
检查清单:
- ✅ 确认RPC_SECRET密码正确
- ✅ 检查防火墙是否开放6800端口
- ✅ 验证IP地址/域名是否正确
- ✅ 确认Aria2容器正在运行
- ✅ 测试连接:
curl -X POST http://localhost:6800/jsonrpc \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"aria2.getVersion","id":"test","params":["token:your_password"]}'问题3:WebSocket连接失败
症状: 使用ws/wss协议时连接超时
解决方法:
- 检查Nginx配置中的WebSocket相关header
- 确认SSL证书有效且未过期
- 验证Nginx已正确重载:
nginx -t && nginx -s reload - 检查浏览器控制台是否有CORS错误
问题4:下载速度慢
优化建议:
- 增加并发连接数:
max-connection-per-server=16 - 更新Tracker列表(见上文)
- 检查网络带宽是否充足
- 尝试更换下载时间段(避开晚高峰)
- 对于BT下载,确保端口已正确转发
问题5:CPU占用过高
原因分析:
- ❌ 使用HTTP协议轮询(最常见)
- ✅ 改用WebSocket协议
- 检查是否有大量小文件下载
- 适当降低并发数
问题6:权限问题
症状: 下载的文件无法访问或写入
解决方法:
# 确保PUID/PGID设置正确docker run ... -e PUID=1000 -e PGID=1000 ...
# 或者修改目录所有权sudo chown -R 1000:1000 /etc/aria2-config ~/downloads安全加固建议
1. 强密码策略
# 生成随机密码openssl rand -base64 32
# 或使用密码管理器生成复杂密码2. 限制访问IP
在Nginx中添加IP白名单:
location / { allow 192.168.1.0/24; # 允许局域网 allow 123.45.67.89; # 允许特定公网IP deny all; # 拒绝其他所有
proxy_pass http://aria2; # ... 其他配置}3. 启用Fail2Ban
防止暴力破解RPC密码:
# 安装fail2bansudo apt install fail2ban
# 创建Jail配置sudo nano /etc/fail2ban/jail.local[aria2-rpc]enabled = trueport = 6800filter = aria2-rpclogpath = /var/log/nginx/access.logmaxretry = 5bantime = 36004. 定期更新
# 每周更新一次Aria2镜像docker pull p3terx/aria2-prodocker stop aria2docker rm aria2# 重新运行docker run命令5. 备份配置
# 备份配置文件tar czf aria2-backup-$(date +%Y%m%d).tar.gz /etc/aria2-config
# 定期同步到远程存储rsync -avz /etc/aria2-config user@backup-server:/backup/aria2/进阶用法
1. 自动下载RSS订阅
结合flexget实现RSS自动下载:
# flexget配置示例tasks: anime_download: rss: https://example.com/anime.rss accept_all: yes aria2: host: localhost port: 6800 secret: your_password2. 与网盘同步
使用rclone将下载内容自动同步到云存储:
# 安装rclonecurl https://rclone.org/install.sh | sudo bash
# 配置云存储rclone config
# 创建同步脚本#!/bin/bashrclone sync /downloads remote:aria2-backup --progress3. 下载完成通知
集成Telegram Bot发送通知:
import requests
def send_telegram_notification(message): bot_token = "YOUR_BOT_TOKEN" chat_id = "YOUR_CHAT_ID" url = f"https://api.telegram.org/bot{bot_token}/sendMessage" data = { "chat_id": chat_id, "text": message } requests.post(url, data=data)4. Docker Compose编排
使用docker-compose.yml统一管理:
version: '3'services: aria2: image: p3terx/aria2-pro container_name: aria2 restart: unless-stopped environment: - PUID=1000 - PGID=1000 - RPC_SECRET=your_password - RPC_PORT=6800 - LISTEN_PORT=6888 ports: - "6800:6800" - "6888:6888" - "6888:6888/udp" volumes: - ./config:/config - ./downloads:/downloads networks: - aria2-net
ariang: image: p3terx/ariang container_name: ariang restart: unless-stopped ports: - "6880:6880" depends_on: - aria2 networks: - aria2-net
networks: aria2-net: driver: bridge启动命令:
docker-compose up -d总结
通过本文的详细教程,相信您已经掌握了:
✅ 使用Docker快速部署Aria2 Pro下载器
✅ 理解各个Docker参数的作用和配置方法
✅ 安装和配置Aria2 Explorer浏览器插件
✅ 正确使用WebSocket协议避免CPU占用过高
✅ 配置Nginx反向代理支持内网穿透场景
✅ Aria2性能优化和安全加固技巧
✅ 常见问题的排查和解决方法
核心要点回顾:
- 🎯 必须使用WebSocket协议:ws或wss,避免使用http/https
- 🔐 设置强密码:RPC_SECRET不要使用简单密码
- 🌐 启用HTTPS:保护数据传输安全
- ⚡ 优化配置参数:根据网络环境调整并发数和缓存
- 🔄 定期更新维护:保持软件和Tracker列表最新
Aria2作为一款强大的下载工具,配合Docker的便捷部署和Aria2 Explorer的友好界面,能够为您提供高效稳定的离线下载体验。无论是日常文件下载、BT种子下载,还是大规模资源采集,都能轻松应对。
希望本文能帮助您顺利搭建自己的下载服务器!如果在使用过程中遇到任何问题,欢迎在评论区留言交流。也欢迎将本文分享给有需要的朋友,让更多人受益于Aria2的强大功能!🚀✨
最后提醒:请遵守相关法律法规,合法使用下载工具,不要下载和传播侵权内容。祝您使用愉快!