aria2 的官方網站在 http://aria2.sourceforge.net/,這是一套支援多重協定、多重來源、輕量化的命令列下載工具,它支援了 HTTP、HTTPS、FTP、BiTorrent、 Magnet、Metalink 等多種的協定,可以透過內建的 JSON-RPC 及 XML-RPC 介面來進行遠端操作。
支援多種作業系統,Windows x86 / x64、Mac OS、Linux,連 Andriod 也有支援。
最後更新日期 - 2015/09/13
事前準備
- Raspberry Pi Type B / B+,Type A 沒有內建網卡,必須自行安裝。
- Raspbian 作業系統。
- USB 外接硬碟,請特別注意,由於 Raspberry Pi 的供電不足以推動外接硬碟,所以一定要有獨立電源。
- Web Service,Apache、Nginx、Lighttpd ... 等任一套 HTTP Server。
開始安裝
- 直接從 Raspbian 套件庫進行安裝。
sudo apt-get -y install aria2
- 要用最新版本的話,可以從 Aria2 官網下載,目前版號是 1.18.8。
wget http://sourceforge.net/projects/aria2/files/stable/aria2-1.18.8/aria2-1.18.8.tar.gz
將檔案解壓縮。
tar zxvf aria2-1.18.8.tar.gz
解壓縮完畢之後,進入剛產生的目錄。
cd aria2-1.18.8
開始進行主程式的編譯及安裝。
./configure
這個步驟大約需要快二個小時,請耐心等待。
make && sudo make install
建立設定檔
新增 aria2 的設定檔。
vi /home/pi/aria2.conf
設定參數可以參考 Aria2 官方說明,裡面有洋洋灑灑的數十個參數,下面是我的設定檔,已依照官方說明的段落編排,提供給各位參考。
其中,紅色的參數一定要依實際環境:硬碟掛載的目錄、通訊埠、網路頻寬等資料做適當的修改。
########## 我是分隔線 ##########
## Basic Options ##
# 下載目錄
dir=/mnt/usb
# 進度紀錄
input-file=/mnt/usb/.aria2/aria2.session
# 同時進行任務數
max-concurrent-downloads=5
# 斷線續傳
continue=true
## HTTP/FTP Options ##
# 最低停止速度下限
lowest-speed-limit=10K
# 同伺服器最大連線數
max-connection-per-server=10
# 多點下載的單一分塊最小容量
min-split-size=10M
# 以遠端時間為準
remote-time=true
# 多點下載數量
split=5
## HTTP Specific Options ##
# 修改特徵碼
user-agent=uTorrent/2210(25130)
# 支援 GZip
http-accept-gzip=true
## FTP Specific Options ##
# PASV 模式
ftp-pasv=true
## BitTorrent Specific Options ##
# 啟用本地端的種子來源
bt-enable-lpd=true
# 強制加密
bt-require-crypto=true
# 小於指定速度,就自動提高可請求的連線數
bt-request-peer-speed-limit=200K
# 持續一段時間速度=0 就停止下載
bt-stop-timeout= 180
# DHT 埠
enable-dht=true
# IPv4 DHT 路由表檔案
dht-file-path=/mnt/usb/.aria2/dht.dat
# IPv4 DHT 的通訊埠
dht-listen-port=6881-6999
# IPv4 DHT 進入點
dht-entry-point=router.utorrent.com:6881
# *.torrent 儲存到記憶體,然後自動開始下載
follow-torrent=mem
# BT 的通訊埠
listen-port=6881-6999
# 總上傳速度
max-overall-upload-limit=30K
# 單檔最大上傳速度
max-upload-limit=0
# Specify the prefix of peer ID
peer-id-prefix=-UT2210-
# 分享率
seed-ratio=10.0
# 做種時間(分)
seed-time=10080
## Metalink Specific Options ##
# *.meta4, *.metalink 儲存到記憶體,然後自動開始下載
#follow-metalink=mem
## RPC Options ##
# 啟用 RPC
enable-rpc=true
# Add Access-Control-Allow-Origin header field with value * to the RPC response.
rpc-allow-origin-all=true
# 監聽來自所有網路介面連入的 JSON-RPC/XML-RPC 請求
rpc-listen-all=true
# RPC 的通訊埠
rpc-listen-port=6800
# RPC 加密的 Token
#rpc-secret=<TOKEN>
## Advanced Options ##
# you can proceed but some download progress will be lost.
allow-piece-length-change=true
# 以背景服務模式執行
daemon=false
# 停用 IPv6 支援
disable-ipv6=true
# 硬碟快取
disk-cache=32M
# Map files into memory.
enable-mmap=false
# Specify the method for polling events.
event-poll=epoll
# 磁碟空間預先分配
file-allocation=falloc
# 總下載速度
max-overall-download-limit=10M
# 單檔最大下載速度
max-download-limit=0
# 小於指定大小的檔案,不預先分配磁碟空間
no-file-allocation-limit=5M
# 錯誤及未完成的檔案下載記錄
save-session=/mnt/usb/.aria2/aria2.session
# 每 n 秒儲存一次檔案下載記錄
save-session-interval=60
########## 我是分隔線 ##########
掛載 USB 外接硬碟,這邊用的分割區位置是 /dev/sda1,掛載的目錄是 /mnt/usb,檔案系統是 ext4。
sudo mkdir /mnt/usb
sudo mount -t ext4 /dev/sda1 /mnt/usb
手動建立 .aria2 設定檔目錄及相關檔案
sudo chown -R pi:pi /mnt/usb
mkdir /mnt/usb/.aria2
touch /mnt/usb/.aria2/aria2.session
執行主程式
設定檔編輯完成後,就可以測試它了,如果沒有出現任何錯誤訊息的話,請按「Ctrl + C」中斷。
aria2c --conf-path=/home/pi/aria2.conf
接著,將它設定成一個可以背景啟動的服務。
sudo vi /etc/init.d/aria2
########## 我是分隔線 ##########
#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
USER=pi
CONF=/home/pi/aria2.conf
case "$1" in
start)
echo "Starting aria2c service"
umask 0002
su - $USER -c "aria2c --conf-path=$CONF -D"
echo "done !"
;;
stop)
echo "Stopping aria2c service"
sudo killall -w aria2c
echo "done !"
;;
restart)
echo "Restarting aria2c service"
sudo killall -w aria2c
umask 0002
su - $USER -c "aria2c --conf-path=$CONF -D"
echo "done !"
;;
*)
echo "$0 {start|stop|restart}"
;;
esac
exit
########## 我是分隔線 ##########
設定執行權限
sudo chmod +x /etc/init.d/aria2
測試服務是否可以正常啟動
sudo service aria2 restart
讓 aria2 在開機之後自動啟動
sudo update-rc.d aria2 defaults
開啟防火牆的通訊埠
如果 Raspberry Pi 是放在 IP 分享器、無線基地台或防火牆的後面,雖然我們安裝好主程式,也將設定檔編輯完成,沒有設定通訊埠轉送 (port forwarding) 時,此時也沒有辦法開始對外連線下載。
aria2 有幾個通訊埠需要開啟,下列是預設的埠號:
- RPC Port: TCP 6800
- BT Port: TCP 6811 ~ 6999
- DHT Port: TCP 6881 ~ 6999
這裡以 Tomato Firmware 為例,打開「通訊埠轉送」裡的「基本設定」,我把上面這些通訊埠對應到 Raspberry Pi 的 Private IP,另外還開了 80 Port,因為等等要增加 Web 管理介面。
安裝管理介面
由於 aria2 只是提供命令列的指令,若想用圖型介面來操作,就要進行 Web 管理介面的安裝。
YAAW 畫面比較簡潔,webui-aria2 比較詳細,視個人喜好或需求下去決定用哪一套,甚至可以兩套都安裝,只要放在不同的網頁目錄即可。
這裡使用 Nginx 來提供 Web Service,介面選擇 webui-aria2,請參閱 Raspberry Pi 的實作 - 用 Nginx 架設網頁伺服器。
先下載 webui-aria2。
wget https://github.com/ziahamza/webui-aria2/archive/master.zip
解壓縮檔案。
unzip master.zip
搬到 Nginx 的根目錄。
mv webui-aria2-master aria2
sudo mv aria2 /usr/share/nginx/www
開始下載檔案
處理好 Web 介面之後,只要用瀏覽器連上 http://x.x.x.x/aria2,就可以打開主畫面了。
我們就拿 CentOS 7 的種子檔 (torrent) 來測試,先連上 CentOS 的官網,找到 下載 的位置。
下載種子檔。
回到 Web 介面,點選「Add」-「By Torrents」。
點選「瀏覽」按鈕,將種子檔載入,再按「Start」按鈕開始下載。
這時就會開始下載工作了,最後能做的事就是 ...... 耐心的等待 !!!
異常處理
- 如果在 Aria2 執行時,一直遇到服務莫名停止,而錯誤訊息是「Segmentation fault」時,根據 Pilla 技術宅- [RPI] 架設Aria2 當做檔案下載中心 的實測,應該是記憶體使用過度的緣故,請將 mmap 參數由 true 改成 false 即可。
參考資料
更新紀錄
- 2014/04/30 撰文。
- 2015/01/14 調整文章內容,加入安裝畫面,並加入 Web 介面的安裝方法。
- 2015/09/13 根據 Pilla 技術宅 的實測, 將 mmap 參數從 true 改成 false。
默認apt-get安裝版本太舊,不支持定時保存進度,來試試新版。
回覆刪除是啊,
刪除不管任何一個 Linux 發行版的官方套件庫,通常都不會收錄最新的版本,
真的只能自己去抓 source code 來編譯。
很多時候BT需要多一點時間
回覆刪除建議把 bt-stop-timeout 設為 0
這是個好建議,
刪除我會醬子設定的原因是因為我主力抓的都是熱門種,如果不是的話,的確要像你所說的做一下調整。
您好, 想請教一下, 照著文中步驟做, 到"安裝管理介面"部分遇到一些問題
回覆刪除希望能得到樓主的指教, 我把web ui 解壓到 www後, 不能出現和你一樣的畫面
https://imgur.com/vJnzfQH