RaspberryPi
WebUI
aria2

次世代ダウンロードツールAria2とWEB-UIのセットアップ

はじめに

今回は、Raspberry Pi を多目的ダウンロードボックスにしてしまおう、思い立って、何かWebUIがあって、http[s]/ftpのダウンロード・アップロードができるツールはない物かと行き着いた先が、多目的ダウンローダー、aria2になりました。
というのも、最近、LinuxのISOファイルとか、VagrantのBOXファイルとか何かとダウンロードする機会が多く、本来なら、ダウンロード補助ツールをPCに入れておけばいいのですが、電気代とか熱くなってきて廃熱の騒音とか考慮したらこうなったという…orz

インストール

細かい点は今回飛ばします。

  • aria2c ダウンローダの本体

https://aria2.github.io/

に最新版があるのですが、raspbianの場合、aptコマンドでインストールできるので、以下のコマンドでインストールを実行します

sudo apt-get install -y aria2 ca-certificates

※CentOS7やFedoraでもインストールできるので、その場合は

sudo yum install -y aria2 ca-certificates

一応、SSLのルート証明書も更新しておきます。
インストールができたら、今度は、aria2をデーモン化しますので、設定ファイルとsystemctlの起動設定を書きます。

今回は、/mnt/storage に拡張ストレージをマウントしていますので、ダウンロード先はそこを指定します。設定ファイルは/etc/aria2.confに以下の内容で作ります。
拡張ストレージのパーミッションは766にします。

/etc/aria2.conf
dir=/mnt/storage
file-allocation=falloc
continue
log-level=error
max-connection-per-server=4
summary-interval=120
daemon=true
enable-rpc=true
rpc-listen-port=6800
rpc-listen-all=true
max-concurrent-downloads=1
disable-ipv6=true
disk-cache=25M
timeout=600
retry-wait=30
max-tries=50

作ったらパーミッションを700にします

sudo chmod 700 /etc/aria2.conf

サービス化

systemctlの制御スクリプトは/lib/systemd/system/にあるので、ここに、/lib/systemd/system/aria2.serviceという感じで、設定ファイルを作ります。

/lib/systemd/system/aria2.service
[Unit]
Description=Aria2c download manager
Requires=network.target
After=dhcpcd.service

[Service]
Type=forking
User=root
RemainAfterExit=yes
ExecStart=/usr/bin/aria2c --daemon=true --enable-rpc --rpc-listen-all -D --conf-path=/etc/aria2.conf
ExecReload=/usr/bin/kill -HUP $MAINPID
RestartSec=1min
Restart=on-failure

[Install]
WantedBy=multi-user.target

作ったらパーミッションを744にします

sudo chmod 744 /lib/systemd/system/aria2.service

サービス起動

いつものように、サービスを有効化して起動します

sudo systemctl enable aria2.service
sudo systemctl start aria2.service
sudo systemctl status aria2.service

この状態で、以下のようなステータス表示が出れば、OKです

● aria2.service - Aria2c download manager
Loaded: loaded (/lib/systemd/system/aria2.service; enabled; vendor preset: enabled)
Active: active (running) since XXX YYYY-MM-DD HH:mm:ss JST; 01s ago
Process: [PID] ExecStart=/usr/bin/aria2c --daemon=true --enable-rpc --rpc-listen-all -D --conf-path=/etc/aria2.conf (code=exited, status=0/SUCCESS)
Main PID: [PID] (aria2c)
CGroup: /system.slice/aria2.service
mq1438 /usr/bin/aria2c --daemon=true --enable-rpc --rpc-listen-all -D --conf-path=/etc/aria2.conf

MM DD HH:mm:ss hostname systemd[1]: Starting Aria2c download manager...
MM DD HH:mm:ss hostname systemd[1]: Started Aria2c download manager.

大体ここで失敗する理由が、ダウンロードパスの指定ミスです。パスの最後に"/"をつけると起動しないので注意が必要です

WebUI 設定

Apache2かNginxが入っていればいいので、DocumentRootに移動して、WebUIをCloneしましょう

cd /var/www/html
git clone https://github.com/PieterDherde/Aria2WebUI.git

あとは、ブラウザで表示して、UIが表示されればOKです。

aria2ui.png

こんな感じに。angular.jsでaria2と通信しているので、サーバサイドのインタプリンタ系言語は不要です

試しに、[add]から適当なファイルのダウンロードを実行してみてください

aria2ui2.png

例えば、こんな感じにCentOS7.5のISOのURLを入れて、[Start]をクリックすると

aria2ui3.png

こんな感じにダウンロードが始まります。速度と進捗状況もわかるので、イイ感じですね。

これがあれば、省電力PCとかクラウド上でダウンロードができるわけです。

誰かの参考になれば幸いです。