Docker 搭建 aria2+AriaNg
什麼是 aria2 和 AriaNg
aria2 簡介
aria2 是一款輕量級、多協議、多來源的命令行下載工具,支持以下特性:
- 多協議支持:HTTP/HTTPS、FTP、SFTP、BitTorrent、Metalink
- 多線程下載:支持分段下載,最大化利用帶寬
- 低資源佔用:內存佔用小,適合在 VPS 或服務器上長期運行
- RPC 接口:支持 JSON-RPC 和 XML-RPC,可通過 Web 界面遠程控制
- 跨平臺:支持 Linux、macOS、Windows 等操作系統
AriaNg 簡介
AriaNg 是一個基於 Web 的 aria2 圖形化管理界面,提供以下功能:
- 現代化 UI:簡潔直觀的操作界面
- 實時監控:實時顯示下載速度、上傳速度、連接數等信息
- 批量操作:支持批量添加、刪除、暫停、開始任務
- 文件管理:查看下載文件詳情,選擇性下載 BT 任務中的特定文件
- 移動端適配:響應式設計,支持手機和平板訪問
安裝 aria2
前置要求
- 已安裝 Docker 和 Docker Compose
- 服務器有足夠的存儲空間
- 開放相應的防火牆端口
使用拉取 aria2 鏡像
``sh docker pull p3terx/aria2-pro
`p3terx/aria2-pro` 是一個經過優化的 aria2 鏡像,相比官方鏡像有以下優勢:
- 預配置了優化的下載參數
- 支持自動更新配置文件
- 內置證書生成工具
- 完善的日誌管理
### 啟動容器
``sh
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=password \
-e RPC_PORT=6800 \
-e LISTEN_PORT=6888 \
-p 16800:6800 \
-p 16888:6888 \
-p 16888:6888/udp \
-v /root/aria2/config:/config \
-v /mnt/nas_share/downloads:/downloads \
p3terx/aria2-pro用戶和組設定
PUID=$UID 、PGID=$GID 這 2 個定義用戶和用戶組的環境變量,限定了 aria2 以什麼用戶和用戶組運行,不指定則默認使用 nobady 用戶 和 nogroup 用戶組,但在使用 FileRun 網盤 時,會因權限問題無法刪除或改名 aria2 下載好的文件,所以 PUID 和 GUID 要指定為和 WEB 環境的運行用戶和用戶組 一致,比如 WEB 環境運行的用戶及對應的用戶組都是 WWW,對應的 uid 和 gid 都是 1001,那就要指定 PUID=1001、PGID=1001,這樣在 FileRun 網盤中就可以正常的進行刪除和修改操作了
如何獲取 UID 和 GID
可以通過以下命令查看當前用戶的 UID 和 GID:
id $USER輸出示例:
uid=1000(mac) gid=1000(mac) groups=1000(mac)環境變量詳解
-e UMASK_SET=022: 設置 umask,默認值 022;umask 用於控制創建文件的默認權限,022 表示創建的文件權限為 644(所有者可讀寫,其他人只讀),目錄權限為 755-e RPC_SECRET=: 設置 RPC 密鑰,用於 AriaNg 與 Aria2 的通訊驗證使用;建議使用強密碼,包含字母、數字和特殊字符-e RPC_PORT=6800: 設置 PRC 通訊端口(與宿主主機的端口映射一致);如需更改,確保與端口映射一致-e LISTEN_PORT=6888: BT 監聽端口(TCP)、DHT 監聽端口(UDP)設置,即 Aria2 配置中 listen-port 與 dht-listen-port 選項定義的端口。如果沒有設置,配置文件中的默認值為 6888。-v /root/aria2/config:/config: 配置文件掛載到指定的宿主主機目錄/root/aria2/config 中,宿主主機的目錄根據實際情況自行修改;-v /root/aria2/downloads:/downloads: 將/downloads掛載到宿主主機的/root/aria2/downloads:/downloads 目錄,即 FileRun 的數據目錄中,方便下載完成直接在網盤中查看;
端口映射詳解
-p 16800:6800,為 RPC 通訊端口映射,AriaNg 通過此端口與 aria2 通信-p 16888:6888,為 BT 監聽端口(TCP)映射,即 Aria2 配置中 listen-port 選項定義的端口;用於 BT 下載時的 Peer 連接-p 16888:6888/udp,為 DHT 監聽端口(UDP)映射,即 Aria2 配置中 dht-listen-port 選項定義的端口。用於 DHT 網絡發現
防火牆配置
如果服務器啟用了防火牆,需要開放相應端口:
# Ubuntu/Debian (ufw)
sudo ufw allow 16800/tcp
sudo ufw allow 16888/tcp
sudo ufw allow 16888/udp
# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=16800/tcp
sudo firewall-cmd --permanent --add-port=16888/tcp
sudo firewall-cmd --permanent --add-port=16888/udp
sudo firewall-cmd --reload高級配置選項
如果需要更精細的控制,可以創建自定義配置文件:
- 創建配置文件目錄
mkdir -p /root/aria2/config
cd /root/aria2/config- 創建 aria2.conf 配置文件
# 基本設置
dir=/downloads
input-file=/config/aria2.session
save-session=/config/aria2.session
save-session-interval=60
# 下載速度限制(字節/秒)
max-overall-download-limit=0
max-download-limit=0
# 上傳速度限制(字節/秒)
max-overall-upload-limit=0
max-upload-limit=0
# 最大同時下載任務數
max-concurrent-downloads=5
# HTTP/FTP 設置
max-connection-per-server=16
min-split-size=1M
split=16
# BT 設置
bt-max-peers=100
bt-request-peer-speed-limit=5M
bt-stop-timeout=300
enable-dht=true
enable-dht6=true
peer-id-prefix=-TR2940-
user-agent=Transmission/2.94
# 斷點續傳
continue=true
# 日誌
log=/config/aria2.log
log-level=warn
# RPC 設置
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-listen-port=6800
rpc-secret=your_secure_password_here- 使用自定義配置啟動
docker run -d \
--name aria2 \
--restart unless-stopped \
--log-opt max-size=1m \
-e PUID=$UID \
-e PGID=$GID \
-e UMASK_SET=022 \
-p 16800:6800 \
-p 16888:6888 \
-p 16888:6888/udp \
-v /root/aria2/config:/config \
-v /mnt/nas_share/downloads:/downloads \
-v /root/aria2/config/aria2.conf:/etc/aria2/aria2.conf \
p3terx/aria2-pro安裝 AriaNg
拉取 AriaNg 鏡像
docker pull p3terx/ariang啟動容器
docker run -d \
--name ariang \
--log-opt max-size=1m \
--restart unless-stopped \
-p 16880:6880 \
p3terx/ariang如果需要 HTTPS 訪問,可以使用 Nginx 反向代理(詳見後文安全配置部分)。
配置 RPC
訪問 http://你的服務器 ip:16880 訪問 AriaNg 的 web 管理界面,點擊AriaNg 設置菜單,再點擊全局 右邊的標籤


- RPC 別名隨意填就好,例如"My Aria2"
- RPC 地址填寫你服務器的域名或 IP,後面的端口號就是前面啟動的 aria2 的 RPC 通訊端口(示例中為 16800)
- RPC 協議選默認的 HTTP
- RPC Http 請求方法使用默認的 POST
- RPC 密鑰填寫前面啟動的 aria2 的 RPC 密鑰(RPC_SECRET)
配置完刷新一下頁面,如果狀態顯示 已連接 就 ok 了
使用指南
添加下載任務
HTTP/FTP 下載
- 點擊界面上的"+"按鈕
- 選擇"新建下載"
- 輸入下載鏈接(支持多個鏈接,每行一個)
- 點擊"立即下載"
BT 磁力鏈下載
- 點擊"+"按鈕
- 選擇"BT 下載"或"磁力鏈接"
- 粘貼磁力鏈接或上傳.torrent 種子文件
- 選擇要下載的文件(可選擇性下載部分文件)
- 點擊"立即下載"
批量操作
- 全選任務:在任務列表左上角點擊複選框
- 批量刪除:選中多個任務後,點擊底部的刪除按鈕
- 批量移動:選中任務後,可批量移動到不同的分類
文件管理
下載完成後,可以在"已完成"標籤頁查看下載的文件:
- 查看文件詳情(大小、路徑、哈希值等)
- 對於 BT 任務,可以重新選擇要下載的文件
- 直接刪除不需要的文件
性能優化建議
1. 調整併發連接數
根據服務器性能和網絡狀況調整:
# 編輯 docker run 命令或使用 docker-compose
-e MAX_CONCURRENT_DOWNLOADS=10 \
-e MAX_CONNECTION_PER_SERVER=16 \推薦配置:
- 低配 VPS(1 核 1G):併發 3-5,單文件連接 8-16
- 中配 VPS(2 核 2G):併發 5-10,單文件連接 16-32
- 高配服務器:併發 10+,單文件連接 32+
2. 優化分段下載
# 在 aria2.conf 中添加
split=16
min-split-size=1Msplit: 單個文件分割成多少段下載,值越大速度越快,但佔用資源越多min-split-size: 最小分段大小,避免過小文件分段過多
3. BT 下載優化
# 增加 Peer 數量
bt-max-peers=100
# 提高請求速度
bt-request-peer-speed-limit=5M
# 延長等待時間(避免熱門資源過早停止)
bt-stop-timeout=6004. 啟用緩存
# 磁盤緩存,減少 IO 壓力
file-alloc=trunc可選值:
none: 不預先分配空間(速度快,可能產生碎片)falloc: 使用 fallocate 預先分配(最快,但需要文件系統支持)prealloc: 預先分配空間(較慢,兼容性好)trunc: 使用 trunc 系統調用(默認值,平衡性能和兼容性)
5. 會話保存
防止意外中斷後丟失下載進度:
input-file=/config/aria2.session
save-session=/config/aria2.session
save-session-interval=60安全配置建議
1. 使用強密碼
確保 RPC_SECRET 使用強密碼:
# 生成隨機密碼
openssl rand -base64 32示例輸出:
KjH8sN3pL9mQ2rT5vX7zA0bC4dE6fG8hI1jK3lM5nO7=2. 配置 HTTPS 訪問
使用 Nginx 反向代理實現 HTTPS:
- 安裝 Nginx
apt install nginx -y # Debian/Ubuntu
yum install nginx -y # CentOS/RHEL- 創建 Nginx 配置
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:16880;
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 X-Forwarded-Proto $scheme;
}
}
# HTTP 重定向到 HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}- 申請 SSL 證書(使用 Let's Encrypt)
apt install certbot python3-certbot-nginx -y
certbot --nginx -d your-domain.com3. 限制 RPC 訪問來源
如果不需要外網訪問 RPC,可以限制 IP:
docker run -d \
...
-e RPC_LISTEN_ALL=false \
p3terx/aria2-pro或在防火牆中限制:
sudo ufw allow from 192.168.1.0/24 to any port 168004. 定期更新鏡像
# 定期更新鏡像
docker pull p3terx/aria2-pro
docker pull p3terx/ariang
# 重啟容器應用更新
docker restart aria2
docker restart ariang常見問題排查
1. 無法連接到 aria2
問題表現:AriaNg 顯示"未連接"或連接超時
排查步驟:
- 檢查容器是否運行
docker ps | grep aria2- 查看容器日誌
docker logs aria2- 檢查端口是否監聽
netstat -tlnp | grep 6800- 確認防火牆規則
sudo ufw status- 測試 RPC 連接
curl http://localhost:16800/jsonrpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"aria2.getGlobalStat","id":"1","params":["token:your_rpc_secret"]}'2. 下載速度慢
可能原因:
- 併發連接數過低
- 單文件連接數不足
- 服務器帶寬限制
- 資源本身速度慢(尤其是冷門 BT 資源)
解決方案:
- 增加併發連接數(見性能優化部分)
- 更換下載源(如果是 HTTP 下載)
- 檢查服務器帶寬使用情況
iftop # 實時查看網絡流量3. BT 下載無速度
可能原因:
- Peer 數量太少
- DHT 網絡未啟用
- 端口未正確映射
解決方案:
- 檢查 Peer 數量
docker exec aria2 aria2c --help | grep bt-max-peers- 確認端口映射
docker port aria2- 檢查防火牆是否放行 UDP 端口
sudo ufw allow 16888/udp- 嘗試添加更多 Tracker
# 獲取最新 Tracker 列表
wget -N https://raw.githubusercontent.com/XIU2/TrackersListCollection/master/all.txt
# 在 AriaNg 中添加:設置 -> Aria2 配置 -> BT/Tracker -> Tracker 服務器4. 權限問題
問題表現:下載的文件無法刪除或修改
解決方案:
- 確認 PUID 和 PGID 設置正確
docker exec aria2 id- 檢查掛載目錄權限
ls -la /mnt/nas_share/downloads- 修正權限
chown -R 1000:1000 /mnt/nas_share/downloads
chmod -R 755 /mnt/nas_share/downloads5. 容器無法啟動
排查步驟:
- 查看日誌
docker logs --tail 100 aria2- 檢查配置文件語法
docker exec aria2 aria2c --conf-path=/etc/aria2/aria2.conf- 檢查端口占用
lsof -i :6800
lsof -i :6888- 重新創建容器
docker rm -f aria2
# 重新執行 docker run 命令使用 Docker Compose 管理(推薦)
使用 Docker Compose 可以更方便地管理多個容器:
- 創建 docker-compose.yml 文件
version: '3'
services:
aria2:
image: p3terx/aria2-pro
container_name: aria2
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- UMASK_SET=022
- RPC_SECRET=your_secure_password
- RPC_PORT=6800
- LISTEN_PORT=6888
ports:
- "16800:6800"
- "16888:6888"
- "16888:6888/udp"
volumes:
- /root/aria2/config:/config
- /mnt/nas_share/downloads:/downloads
networks:
- download-network
ariang:
image: p3terx/ariang
container_name: ariang
restart: unless-stopped
ports:
- "16880:6880"
depends_on:
- aria2
networks:
- download-network
networks:
download-network:
driver: bridge- 啟動服務
docker-compose up -d- 管理服務
# 查看狀態
docker-compose ps
# 查看日誌
docker-compose logs -f
# 停止服務
docker-compose down
# 重啟服務
docker-compose restart
# 更新鏡像
docker-compose pull
docker-compose up -d擴展功能
1. 集成 FileRun 網盤
如前所述,通過正確設置 PUID/PGID,可以讓 aria2 與 FileRun 網盤無縫集成:
- 下載路徑設置為 FileRun 的數據目錄
- 下載完成後自動在網盤中查看
- 在線播放下載的視頻文件
- 通過網盤分享文件
2. 自動化腳本
可以編寫腳本實現自動化操作:
示例:自動清理已完成任務
#!/bin/bash
RPC_SECRET="your_password"
RPC_PORT="16800"
# 獲取所有完成任務
curl http://localhost:${RPC_PORT}/jsonrpc \
-H "Content-Type: application/json" \
-d "{
\"jsonrpc\":\"2.0\",
\"method\":\"aria2.tellStopped\",
\"id\":\"1\",
\"params\":[\"token:${RPC_SECRET}\", 0, 1000, [\"gid\", \"status\"]],
}" | jq '.result[] | select(.status == "complete") | .gid' \
| xargs -I {} curl http://localhost:${RPC_PORT}/jsonrpc \
-H "Content-Type: application/json" \
-d "{
\"jsonrpc\":\"2.0\",
\"method\":\"aria2.removeDownloadResult\",
\"id\":\"1\",
\"params\":[\"token:${RPC_SECRET}\", \"{}\"],
}"3. 瀏覽器擴展
安裝瀏覽器擴展快速添加下載任務:
- Chrome: Aria2 Integration
- Firefox: Aria2 Download Manager
安裝後,右鍵點擊下載鏈接即可發送到 aria2。
總結
通過本文的教程,您已經完成了:
- ✅ 使用 Docker 部署 aria2 和 AriaNg
- ✅ 配置了 RPC 連接和圖形化管理界面
- ✅ 瞭解了性能優化和安全配置的最佳實踐
- ✅ 掌握了常見問題的排查方法
- ✅ 學習了使用 Docker Compose 管理容器
現在您可以享受高效、便捷的下載體驗了!無論是 HTTP 文件、BT 種子還是磁力鏈接,aria2 都能為您提供出色的下載性能。配合 AriaNg 的友好界面,管理下載任務變得前所未有的簡單。