Then Notes 隨筆

aria2 設定教學 – 強大又輕巧的下載工具,支援 BT、斷點續傳

cover

aria2 是一款強大又輕巧的下載工具,5 MB 不到的大小支援了 HTTP、HTTPS、FTP、SFTP、BitTorrent (BT 種子) 和 Metalink 等通訊協定。aria2 的原理跟 IDM 相似,都是透過分割檔案、增加連線數進行下載,可以提升下載速度。

如果您不想動手設定這些有的沒的,其實可以試試看 Motrix 這個開源的下載工具,其核心也是 aria2 哦!但已經全部設定好了,安裝後即可使用。

功能特色

下載

請根據自己的作業系統下載對應的版本,32 位元請選擇 win-32bit,64 位元請選擇 win-64bit。下載連結在 Assets 中,檔名看起來可能像 aria2-1.XX.0-win-XXbit-build1.zip

安裝、設定

由於 aria2 是非常輕量化的下載工具,所以並沒有 GUI 介面(別擔心,有人寫出 Web 介面,後面會講到!),需要自行建立設定檔。

首先解壓縮 aria2 至硬碟中的任何地方,例如 C:\aria2,在資料夾中依序建立 5 個檔案 aria2.confaria2.sessionStart.vbsStatus.batStop.batRestart.bat

建議您不要使用「記事本」建立這些檔案,可能會因為編碼問題造成錯誤。可以使用 Visual Studio Code 或 Notepad++ 等軟體編輯,編碼請選擇 UTF-8,且副檔名一定要正確,注意不要存成 .txt 純文字檔哦!

aria2-vscode

手動建立 aria2.conf 檔案

用文字編輯軟體貼上以下設定,可以自行調整功能。

## '#'開頭為註解內容,選項都有對應的說明,請根據需要修改 ##
## 註解選項填寫的是預設值,建議在需要修改時再取消註解  ##

## 檔案儲存相關 ##

# 檔案的儲存路徑(可使用絕對路徑或相對路徑),預設: 目前啟動位置
dir=Download
# 啟用磁碟快取,0為停用快取,需 1.16 以上版本,預設: 16M
disk-cache=32M
# 檔案預分配方式,能有效降低磁碟碎片,預設: prealloc
# 預分配所需時間: none < falloc < trunc < prealloc
# NTFS 建議使用 falloc
file-allocation=none
# 斷點續傳
continue=true

## 下載連線相關 ##

# 最大同時下載任務數,執行時可修改,預設:5
max-concurrent-downloads=10
# 同一伺服器連線數,新增時可指定,預設:1
max-connection-per-server=10
# 最小檔案分割大小,新增時可指定,取值範圍 1M -1024M,預設: 20M
# 假定 size=10M,檔案為 20MiB 則使用兩個來源下載;檔案為 15MiB 則使用一個來源下載
min-split-size=10M
# 單個任務最大執行緒數,新增時可指定,預設: 5
split=20
# 整體下載速度限制,執行時可修改,預設: 0
#max-overall-download-limit=0
# 單個任務下載速度限制,預設: 0
#max-download-limit=0
# 整體上傳速度限制,執行時可修改,預設: 0
max-overall-upload-limit=1M
# 單個任務上傳速度限制,預設: 0
#max-upload-limit=1000
# 停用 IPv6,預設: false
disable-ipv6=false

## 進度儲存相關 ##

# 從 Session 檔案中讀取下載任務
input-file=aria2.session
# 在 Aria2 結束時儲存錯誤 / 未完成的下載任務到 Session 檔案
save-session=aria2.session
# 定時儲存 Session,0 為結束時才儲存,需 1.16.1 以上版本,預設: 0
save-session-interval=30

## 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=6800
# 設定的 RPC 授權 Token,v1.18.4 新增功能,取代 --rpc-user 和 --rpc-passwd 選項
#rpc-secret=<TOKEN>
# 設定的 RPC 存取使用者名稱,此選項新版已廢棄,建議改用 --rpc-secret 選項
#rpc-user=<USER>
# 設定的 RPC 存取密碼,此選項新版已廢棄,建議改用 --rpc-secret 選項
#rpc-passwd=<PASSWD>

## BT/PT下載相關 ##

# 當下載的是一個種子 (以 .torrent 結尾) 時,自動開始 BT 任務,預設: true
follow-torrent=true
# BT 連接埠,當連接埠被遮蔽時使用,預設: 6881-6999
listen-port=62524
# 單個種子最大連線數,預設: 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=true
# 種子交換,PT需要停用,預設: true
enable-peer-exchange=true
# 每個種子限速,對少種的PT很有用,預設: 50K
#bt-request-peer-speed-limit=50K
# 客戶端偽裝,PT 需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 當種子的分享率達到此個數時,自動停止做種,0為一直做種,預設: 1.0
seed-ratio=0.1
# 強制儲存 Session,即使任務已經完成,預設: false
# 較新的版本開啟後會在任務完成後依然保留 .aria2 檔案
#force-save=false
# BT校驗相關,預設: true
#bt-hash-check-seed=true
# 繼續之前的 BT 任務時,無需再次校驗,預設: false
bt-seed-unverified=true
# 儲存磁力連結中繼資料為種子檔案(.torrent檔案),預設: false
#bt-save-metadata=true

2020/06/30 更新,新增額外的 Tracker,有沒有效果筆者不敢保證

bt-tracker=http://tracker.prq.to/announce,http://tracker.prq.to/announce.php,http://tracker.publicbt.com/announce,http://tracker.openbittorrent.com:80/announce,http://denis.stalker.h3q.com:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.pirateparty.gr:6969/announce,udp://tracker.cuntflaps.me:6969/announce,udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.opentrackr.org:1337/announce,http://tracker.opentrackr.org:1337/announce,udp://tracker1.wasabii.com.tw:6969/announce,udp://tracker.zer0day.to:1337/announce,http://p4p.arenabg.com:1337/announce,udp://p4p.arenabg.com:1337/announce,http://tracker.internetwarriors.net:1337/announce,udp://tracker.internetwarriors.net:1337/announce,udp://inferno.demonoid.ooo:3389/announce,udp://explodie.org:6969/announce,udp://bt.xxx-tracker.com:2710/announce,udp://allesanddro.de:1337/announce,udp://9.rarbg.com:2710/announce,udp://tracker.mg64.net:6969/announce,udp://mgtracker.org:6969/announce,udp://ipv4.tracker.harry.lu:80/announce,http://tracker.mg64.net:6881/announce,http://mgtracker.org:6969/announce,http://ipv4.tracker.harry.lu:80/announce,http://retracker.telecom.by:80/announce,http://tracker.devil-torrents.pl:80/announce,http://grifon.info:80/announce,http://tracker1.wasabii.com.tw:6969/announce,http://tracker.grepler.com:6969/announce,http://retracker.mgts.by:80/announce,udp://tracker.grepler.com:6969/announce,http://tracker.tlm-project.org:6969/announce,http://t.nyaatracker.com:80/announce,udp://tracker.vanitycore.co:6969/announce,http://tracker.vanitycore.co:6969/announce,http://tracker.electro-torrent.pl:80/announce,http://bt.artvid.ru:6969/announce,http://agusiq-torrents.pl:6969/announce,udp://tracker.kamigami.org:2710/announce,udp://public.popcorn-tracker.org:6969/announce,http://tracker.torrentyorg.pl:80/announce,udp://tracker.kuroy.me:5944/announce,udp://86.19.29.160:6969/announce,udp://208.67.16.113:8000/announce,http://tracker2.wasabii.com.tw:6969/announce,http://tracker.kuroy.me:5944/announce,http://91.218.230.81:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://peerfect.org:6969/announce,udp://tracker.swateam.org.uk:2710/announce,udp://tracker.filetracker.pl:8089/announce,http://tracker.filetracker.pl:8089/announce,udp://zephir.monocul.us:6969/announce,udp://z.crazyhd.com:2710/announce,udp://tracker.halfchub.club:6969/announce,udp://tracker.christianbro.pw:6969/announce,udp://tracker2.wasabii.com.tw:6969/announce,udp://tracker2.christianbro.pw:6969/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.files.fm:6969/announce,udp://tracker.edoardocolombo.eu:6969/announce,udp://tracker.doko.moe:6969/announce,udp://tracker.desu.sh:6969/announce,udp://tracker.cypherpunks.ru:6969/announce,udp://oscar.reyesleon.xyz:6969/announce,udp://open.stealth.si:80/announce,udp://open.facedatabg.net:6969/announce,http://fxtt.ru:80/announce,udp://tracker.cyberia.is:6969/announce,udp://thetracker.org:80/announce,http://torrentsmd.com:8080/announce,udp://tracker.skyts.net:6969/announce,udp://tracker.safe.moe:6969/announce,udp://tracker.piratepublic.com:1337/announce,udp://tracker.bluefrog.pw:2710/announce,udp://tracker.baravik.org:6970/announce,udp://tr.cili001.com:6666/announce,udp://retracker.lanta-net.ru:2710/announce,http://tracker2.itzmx.com:6961/announce,http://open.acgtracker.com:1096/announce,udp://tracker.justseed.it:1337/announce,http://tracker.tfile.me:80/announce,http://share.camoe.cn:8080/announce,http://retracker.omsk.ru:2710/announce,http://explodie.org:6969/announce

手動建立 aria2.session 檔案(Session 儲存位置)

空白檔案,不用填入任何東西。沒錯,不用懷疑,存檔完就可以關掉了!

注意!aria2.session 雖然是空白檔案,但一定要建立,否則會打不開 aria2

手動建立 Start.vbs 檔案(讓 aria2 背景執行)

CreateObject("WScript.Shell").Run "aria2c.exe --conf-path=aria2.conf",0

手動建立 Status.bat 檔案(顯示 aria2 狀態)

@echo off & title Aria2 Status
TaskList /FI "IMAGENAME eq aria2c.exe" /FO LIST
pause > nul

手動建立 Stop.bat 檔案(關閉 aria2)

@echo off & title Aria2 Stop
Taskkill /F /IM aria2c.exe
pause > nul

手動建立 Restart.bat 檔案(重啟 aria2)

Taskkill /F /IM aria2c.exe
start Start.vbs

執行 aria2

以上建立的 1 個 vbs 檔、3 個 bat 檔的功能就如同其名稱,現在我們要啟動 aria2,所以請點兩下 Start.vbs,讓 aria2 在背景執行。因為是在背景執行,所以

不會有任何畫面! 不會有任何畫面! 不會有任何畫面!

這很重要所以說 3 次。

檢查 aria2 狀態

如果您要確定 aria2 是否真的在執行,可以點兩下 Status.bat 查看狀態。應該會看到類似下面這樣的資訊,就表示 aria2 已經在背景運作了。

映像名稱: aria2c.exe
PID: 2176
工作階段名稱: Console
工作階段 #: 1
RAM使用量: 10,276 K

除錯

如果您在改完設定檔 aria2.conf 後遇到任何問題,或 Status.bat 也說沒有 aria2 在背景執行,說明設定檔有錯誤。如果您熟悉使用命令提示字元 / PowerShell / Windows Terminal 的操作,可以直接下指令:

.\aria2c.exe --conf-path=aria2.conf

來檢查是哪邊報錯。如果您不熟悉這些操作,請用「修改一次、執行一次」的方式除錯。即每改完一次 aria2.conf,就用 Restart.bat 重啟,並用 Status.bat 檢查到底有沒有正確執行。

重啟或關閉 aria2

點兩下 Restart.bat 即會重啟 aria2,您會看到一個黑畫面一閃而過,這是正常的,黑畫面消失後就代表 aria2 已經成功重啟了。

若要關閉 aria2,點兩下 Stop.bat 後看到類似以下訊息就是成功關閉囉!

成功: 處理程序 "aria2c.exe" (PID 2176) 已經終止了。

aria2 控制台

筆者喜歡的控制台為 mayswind 所編寫的 AriaNg,如果有需要自行架設控制台的朋友,可以前往 AriaNg 的專案頁面下載。

※【步驟更新】請下載 Releases 頁面中,Assets 下之 AriaNg-版本-AllInOne.zip 來使用。解壓縮後點兩下開啟 index.html 即可。https://github.com/mayswind/AriaNg/releases

請點選「AriaNg 設定」 →「RPC」→ 在 Aria2 RPC 位址中填入「localhost」即可。 aria2-rpc

再來就可以盡情享受快速下載囉! aria2-download

可以看到 aria2 一次以 10 個連線數下載檔案,有助於提升下載速度! aria2-connection

下載完的檔案位置位在 aria2 目錄的 Download 資料夾,假設程式路徑是 C:\aria2,那下載資料夾就是 C:\aria2\Download。如需修改下載資料夾,請參照上面的 aria2.conf 中的第 7 行 (dir=Download),資料夾名稱請不要使用中文或特殊符號,以免發生錯誤。

Docker 版

推薦使用 P3TERX 的 Aria2-Pro。筆者就架了一個 Aria2-Pro 在自己的伺服器上,若需要長時間下載的檔案就丟上去慢慢抓,十分方便。但請您盡量不要開放外部存取!如有相關需求也務必注意安全性,最好限制僅能特定 IP 能連、可用反向代理、且金鑰一定要夠複雜

以下設定中 aria2 在 6800 port,AriaNg 則在 6880 port。

docker-compose.yml

version: "3.8"

services:
  Aria2-Pro:
    container_name: aria2-pro
    image: p3terx/aria2-pro
    environment:
      - PUID=65534
      - PGID=65534
      - UMASK_SET=022
      - RPC_SECRET=【如果要對外開,金鑰務必要設定。AriaNg 設定中也要填寫此金鑰才能連線】
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - DISK_CACHE=64M
      - IPV6_MODE=false
      - UPDATE_TRACKERS=true
      - CUSTOM_TRACKER_URL=
      - TZ=Asia/Taipei
    volumes:
      - ${PWD}/aria2-config:/config
      - ${PWD}/aria2-downloads:/downloads
    network_mode: host
    restart: unless-stopped
    # 因為 aria2 會持續產生記錄檔,所以限制大小以避免佔用儲存空間
    logging:
      driver: json-file
      options:
        max-size: 1m

  AriaNg:
    container_name: ariang
    image: p3terx/ariang
    command: --port 6880 --ipv6
    network_mode: host
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: 1m