跳轉到內容

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=$UIDPGID=$GID 這 2 個定義用戶和用戶組的環境變量,限定了 aria2 以什麼用戶和用戶組運行,不指定則默認使用 nobady 用戶nogroup 用戶組,但在使用 FileRun 網盤 時,會因權限問題無法刪除或改名 aria2 下載好的文件,所以 PUIDGUID 要指定為和 WEB 環境的運行用戶和用戶組 一致,比如 WEB 環境運行的用戶及對應的用戶組都是 WWW,對應的 uid 和 gid 都是 1001,那就要指定 PUID=1001、PGID=1001,這樣在 FileRun 網盤中就可以正常的進行刪除和修改操作了

如何獲取 UID 和 GID

可以通過以下命令查看當前用戶的 UID 和 GID:

sh
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 網絡發現

防火牆配置

如果服務器啟用了防火牆,需要開放相應端口:

sh
# 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

高級配置選項

如果需要更精細的控制,可以創建自定義配置文件:

  1. 創建配置文件目錄
sh
mkdir -p /root/aria2/config
cd /root/aria2/config
  1. 創建 aria2.conf 配置文件
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
  1. 使用自定義配置啟動
sh
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 鏡像

sh
docker pull p3terx/ariang

啟動容器

sh
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 設置菜單,再點擊全局 右邊的標籤

aria2+AriaNg

aria2+AriaNg

  • RPC 別名隨意填就好,例如"My Aria2"
  • RPC 地址填寫你服務器的域名或 IP,後面的端口號就是前面啟動的 aria2 的 RPC 通訊端口(示例中為 16800)
  • RPC 協議選默認的 HTTP
  • RPC Http 請求方法使用默認的 POST
  • RPC 密鑰填寫前面啟動的 aria2 的 RPC 密鑰(RPC_SECRET)

配置完刷新一下頁面,如果狀態顯示 已連接 就 ok 了

使用指南

添加下載任務

HTTP/FTP 下載

  1. 點擊界面上的"+"按鈕
  2. 選擇"新建下載"
  3. 輸入下載鏈接(支持多個鏈接,每行一個)
  4. 點擊"立即下載"

BT 磁力鏈下載

  1. 點擊"+"按鈕
  2. 選擇"BT 下載"或"磁力鏈接"
  3. 粘貼磁力鏈接或上傳.torrent 種子文件
  4. 選擇要下載的文件(可選擇性下載部分文件)
  5. 點擊"立即下載"

批量操作

  • 全選任務:在任務列表左上角點擊複選框
  • 批量刪除:選中多個任務後,點擊底部的刪除按鈕
  • 批量移動:選中任務後,可批量移動到不同的分類

文件管理

下載完成後,可以在"已完成"標籤頁查看下載的文件:

  • 查看文件詳情(大小、路徑、哈希值等)
  • 對於 BT 任務,可以重新選擇要下載的文件
  • 直接刪除不需要的文件

性能優化建議

1. 調整併發連接數

根據服務器性能和網絡狀況調整:

sh
# 編輯 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. 優化分段下載

conf
# 在 aria2.conf 中添加
split=16
min-split-size=1M
  • split: 單個文件分割成多少段下載,值越大速度越快,但佔用資源越多
  • min-split-size: 最小分段大小,避免過小文件分段過多

3. BT 下載優化

conf
# 增加 Peer 數量
bt-max-peers=100

# 提高請求速度
bt-request-peer-speed-limit=5M

# 延長等待時間(避免熱門資源過早停止)
bt-stop-timeout=600

4. 啟用緩存

conf
# 磁盤緩存,減少 IO 壓力
file-alloc=trunc

可選值:

  • none: 不預先分配空間(速度快,可能產生碎片)
  • falloc: 使用 fallocate 預先分配(最快,但需要文件系統支持)
  • prealloc: 預先分配空間(較慢,兼容性好)
  • trunc: 使用 trunc 系統調用(默認值,平衡性能和兼容性)

5. 會話保存

防止意外中斷後丟失下載進度:

conf
input-file=/config/aria2.session
save-session=/config/aria2.session
save-session-interval=60

安全配置建議

1. 使用強密碼

確保 RPC_SECRET 使用強密碼:

sh
# 生成隨機密碼
openssl rand -base64 32

示例輸出:

KjH8sN3pL9mQ2rT5vX7zA0bC4dE6fG8hI1jK3lM5nO7=

2. 配置 HTTPS 訪問

使用 Nginx 反向代理實現 HTTPS:

  1. 安裝 Nginx
sh
apt install nginx -y  # Debian/Ubuntu
yum install nginx -y  # CentOS/RHEL
  1. 創建 Nginx 配置
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;
}
  1. 申請 SSL 證書(使用 Let's Encrypt)
sh
apt install certbot python3-certbot-nginx -y
certbot --nginx -d your-domain.com

3. 限制 RPC 訪問來源

如果不需要外網訪問 RPC,可以限制 IP:

sh
docker run -d \
...
-e RPC_LISTEN_ALL=false \
p3terx/aria2-pro

或在防火牆中限制:

sh
sudo ufw allow from 192.168.1.0/24 to any port 16800

4. 定期更新鏡像

sh
# 定期更新鏡像
docker pull p3terx/aria2-pro
docker pull p3terx/ariang

# 重啟容器應用更新
docker restart aria2
docker restart ariang

常見問題排查

1. 無法連接到 aria2

問題表現:AriaNg 顯示"未連接"或連接超時

排查步驟

  1. 檢查容器是否運行
sh
docker ps | grep aria2
  1. 查看容器日誌
sh
docker logs aria2
  1. 檢查端口是否監聽
sh
netstat -tlnp | grep 6800
  1. 確認防火牆規則
sh
sudo ufw status
  1. 測試 RPC 連接
sh
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 資源)

解決方案

  1. 增加併發連接數(見性能優化部分)
  2. 更換下載源(如果是 HTTP 下載)
  3. 檢查服務器帶寬使用情況
sh
iftop  # 實時查看網絡流量

3. BT 下載無速度

可能原因

  • Peer 數量太少
  • DHT 網絡未啟用
  • 端口未正確映射

解決方案

  1. 檢查 Peer 數量
sh
docker exec aria2 aria2c --help | grep bt-max-peers
  1. 確認端口映射
sh
docker port aria2
  1. 檢查防火牆是否放行 UDP 端口
sh
sudo ufw allow 16888/udp
  1. 嘗試添加更多 Tracker
sh
# 獲取最新 Tracker 列表
wget -N https://raw.githubusercontent.com/XIU2/TrackersListCollection/master/all.txt

# 在 AriaNg 中添加:設置 -> Aria2 配置 -> BT/Tracker -> Tracker 服務器

4. 權限問題

問題表現:下載的文件無法刪除或修改

解決方案

  1. 確認 PUID 和 PGID 設置正確
sh
docker exec aria2 id
  1. 檢查掛載目錄權限
sh
ls -la /mnt/nas_share/downloads
  1. 修正權限
sh
chown -R 1000:1000 /mnt/nas_share/downloads
chmod -R 755 /mnt/nas_share/downloads

5. 容器無法啟動

排查步驟

  1. 查看日誌
sh
docker logs --tail 100 aria2
  1. 檢查配置文件語法
sh
docker exec aria2 aria2c --conf-path=/etc/aria2/aria2.conf
  1. 檢查端口占用
sh
lsof -i :6800
lsof -i :6888
  1. 重新創建容器
sh
docker rm -f aria2
# 重新執行 docker run 命令

使用 Docker Compose 管理(推薦)

使用 Docker Compose 可以更方便地管理多個容器:

  1. 創建 docker-compose.yml 文件
yaml
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
  1. 啟動服務
sh
docker-compose up -d
  1. 管理服務
sh
# 查看狀態
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. 自動化腳本

可以編寫腳本實現自動化操作:

示例:自動清理已完成任務

bash
#!/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. 瀏覽器擴展

安裝瀏覽器擴展快速添加下載任務:

安裝後,右鍵點擊下載鏈接即可發送到 aria2。

總結

通過本文的教程,您已經完成了:

  • ✅ 使用 Docker 部署 aria2 和 AriaNg
  • ✅ 配置了 RPC 連接和圖形化管理界面
  • ✅ 瞭解了性能優化和安全配置的最佳實踐
  • ✅ 掌握了常見問題的排查方法
  • ✅ 學習了使用 Docker Compose 管理容器

現在您可以享受高效、便捷的下載體驗了!無論是 HTTP 文件、BT 種子還是磁力鏈接,aria2 都能為您提供出色的下載性能。配合 AriaNg 的友好界面,管理下載任務變得前所未有的簡單。

參考資源

最後更新於: