aria2 – gestionnaire de téléchargement
Aria2 est un gestionnaire de téléchargement en ligne de commande supportant HTTP/HTTPS, FTP, SFTP, BitTorrent, Metalink. Aria2 s’installe sur toutes les distribution GNU/Linux via le paquet aria2. Il se pilote en CLI via la commande aria2c ou via une interface nodeJS webui-aria2. Ce tutoriel vous détaillera pas à pas toutes les procédures pour utilises ces deux outils sur votre linux de type Debian.
Créer les répertoires et fichiers suivant nécéssaire à aria2 :
# mkdir -p /etc/aria2
# mkdir -p /var/log/aria2/
# touch /etc/aria2/aria2.conf
# touch /var/log/aria2/session.txt
# touch /etc/init.d/aria2
# touch /etc/apache2/sites-available/webui-aria2.conf
# chmod +x /etc/init.d/aria2
Lancer l’installation du client aria2 :
apt-get install aria2
Éditez le fichier « /etc/aria2/aria2.conf » comme suit :
# Reprises des téléchargements préalablement lancés
continue
# Lancer aria2 en tâche de fond
daemon=true
enable-rpc=true
rpc-listen-all=true
rpc-secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpc-secure=true
rpc-certificate=/etc/ssl/certs/certs/public.crt
rpc-private-key=/etc/ssl/private/private/private.key
# Dossier pour stocker les téléchargements
dir=/data/downloads/
# Dossier pour stocker les sessions
input-file=/data/downloads/session.txt
save-session=/data/downloads/session.txt
save-session-interval=20
# Niveau d'alerte des log
log-level=warn
# Nombre de connections simultanées à un serveur
max-connection-per-server=4
# Nombre maximum de téléchargements en même temps
max-concurrent-downloads=1
Éditez le fichier de démarage du daemon aria2 « /etc/init.d/aria2 » comme suit :
#!/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: aria2c init script.
# Description: Starts and stops aria2 daemon.
### END INIT INFO
USER="votreutilisateur"
DAEMON=/usr/bin/aria2c
CONF=/etc/aria2/aria2.conf
start() {
if [ -f $CONF ]; then
echo "Starting aria2 daemon"
start-stop-daemon -S -c $USER -x $DAEMON -- -D --conf-path=$CONF
else
echo "Couldn't start aria2 daemon for $USER (no $CONF found)"
fi
}
stop() {
start-stop-daemon -o -c $USER -K -u $USER -x $DAEMON
}
status() {
dbpid=`pgrep -fu $USER $DAEMON`
if [ -z "$dbpid" ]; then
echo "aria2c daemon for USER $btsuser: not running."
else
echo "aria2c daemon for USER $btsuser: running (pid $dbpid)"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/aria2 {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
Vous pouvez démarrer ou arrêter aria2 comme un service avec les commandes suivantes :
# service aria2 start
Starting aria2 daemon...
# service aria2 stop
Shutting down aria2 daemon...
Ou le lancer automatiquement au démarrage de votre serveur :
# update-rc.d aria2 defaults
# service aria2 start
Votre daemon aria2RPC tourne a présent sur le port par défaut 6800. Si vous souhaitez lui envoyer des fichiers à télécharger, vous pouvez le faire via une extension au navigateur Chrome ou via l’application webui-aria2 préalablement installé sur le même serveur où réside aria2.
# netstat -tupln | grep aria2
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 5435/aria2c
tcp6 0 0 :::6800 :::* LISTEN 5435/aria2c
# cd /lib/systemd/system
# vi aria2.service
[Unit]
Description=Aria2c download manager
Requires=network.target
[Service]
Type=forking
User=root
RemainAfterExit=yes
#ExecStartPre=/sbin/setcap cap_net_admin+ep /usr/bin/aria2c
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf --daemon
ExecReload=/usr/bin/kill -HUP $MAINPID
RestartSec=1min
Restart=on-failure
[Install]
WantedBy=multi-user.target
Extension navigateur Google Chrome
Télécharger l’extension ici : https://chrome.google.com/webstore/detail/aria2c-integration/edcakfpjaobkpdfpicldlccdffkhpbfk
Paramétrer l’adresse du serveur dans l’extension comme suit:
Application webui-aria2
Suite à la configuration d’aria2 pour être commandé par son RPC, il est possible de le gérer via une interface web qui va se charger de communiquer avec le daemon aria2RPC.
Récupérer l’interface web via le dépot git de ziahamza :
# cd /var/www
# git clone https://github.com/ziahamza/webui-aria2
Editer le fichier de « /var/www/webui-aria2 » avec les paramètres du daemon aria2RPC :
...
host: location.protocol.startsWith('https') ? location.hostname : 'www.domoinfo.fr',
path: '/jsonrpc',
port: 6800,
encrypt: true,
auth: { // either add the token field or the user and pass field, not both.
token: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
...
Enfin dans le fichier « /etc/apache2/sites-available/webui-aria2.conf », renseigner les paramètres suivants :
<VirtualHost *:80>
ServerName webui-aria2.exemple.com
DocumentRoot /var/www/webui-aria2/
CustomLog /var/logs/apache/webui-aria2-access.log combined
ErrorLog /var/logs/apache/webui-aria2-errors.log combined
# Force HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerName webui-aria2.exemple.com
DocumentRoot /var/www/webui-aria2/
CustomLog /var/logs/apache/webui-aria2-access.log combined
ErrorLog /var/logs/apache/webui-aria2-errors.log combined
# certificates
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certs/public.crt
SSLCertificateKeyFile /etc/ssl/private/private/private.key
# Authentificate users
<Location />
AuthType Basic
AuthName "webui-aria2"
AuthUserFile users.auth
AuthGroupFile groups.auth
# allow only users from the webui-aria2 group
Require group webui-aria2
</Location>
# AddExternalAuth pwauth /usr/sbin/pwauth
# SetExternalAuthMethod pwauth pipe
# <Directory /var/www/aria2/>
# AuthType Basic
# AuthName "PAM Authentication"
# AuthBasicProvider external
# AuthExternal pwauth
# require valid-user
# </Directory>
ProxyRequests Off
ProxyPreserveHost Off
<Location /jsonrpc>
ProxyPass ws://127.0.0.1:6800/jsonrpc retry=0
ProxyPassReverse ws://127.0.0.1:6800/jsonrpc
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
</VirtualHost>
Activer/vérifier le fichier de configuration pour apache :
# a2ensite webui-aria2.conf
# apache2ctl -t
Syntax OK
# /etc/init.d/apache2 restart
Connecter vous depuis votre navigateur web à l’interface :
DEBUG
Pwauth est une authentification pour apache, on peut voir si cela fonctionne en ligne de commande pour un utilisateur particulier, ici www-data en l’occurence :
# sudo -u www-data /usr/bin/pwauth
admin
pwd123456
# echo $?
0
Ici cela fonctionne. Si vous obtenez « 1 » cherchez l’erreur.
Références :
- https://aria2.github.io/
- https://github.com/ziahamza/webui-aria2
- https://www.blog-libre.org/2016/02/06/webui-aria2/
- https://github.com/ziahamza/webui-aria2/issues/108
- https://hehackedmy.wordpress.com/2016/04/21/monter-sa-seedbox-avec-aria2/