======Install and configure aria2c with aria-ng and SSL on Ubuntu 16.04.5====== Aria2 is an extremely powerful command line download manager capable of handing a wide range of protocolls including torrents. Aria-ng is a webui for aria2c, which is hooked into via RPC on port 6800. This guide will cover everything including a simple nginx install and configuration with SSL, installing aria2c and making some simple adjustments as well as creating a systemd service for aria2c. =====Nginx and SSL===== Firstly we need to install nginx and a firewall. # apt install nginx ufw ===== Let's Encrypt ===== For SSL use the EFF's PPA for the Let's Encrypt certbot. # add-apt-repository ppa:certbot/certbot # apt update; sudo apt upgrade # apt install python-certbot-nginx # certbot --nginx certonly Cert and Key locations: ''/etc/letsencrypt/live/domainname.tld/fullchain.pem'' ''/etc/letsencrypt/live/domainname.tld/privkey.pem'' =====Aria2====== Download and install the latest aria2 release for the repos # apt install aria2 We need to verify that we have a version that is >= v1.19 in order for core features of aria-ng to function: # aria2c -v Now we download and extract the aria-ng webui, which is a simple process, as it it only consists of HTML5 and JavaScript. # cd /var/www/html # mkdir aria-ng & cd aria-ng # wget https://github.com/mayswind/AriaNg/releases/download/0.4.0/aria-ng-0.4.0.zip # unzip aria-ng-0.4.0.zip & rm aria-ng-0.4.0.zip We will be running aria2c as root, so its configuration file will need to be created under ''/root/.aria2/'' First create the directory: $ sudo su # mkdir /root/.aria2 Then write the following configuration file: Create ''/root/.aria2/aria2.conf'' continue daemon=true dir=/PATH/TO/DIR file-allocation=falloc log-level=warn max-connection-per-server=4 max-concurrent-downloads=3 max-overall-download-limit=0 min-split-size=5M enable-http-pipelining=true enable-rpc=true rpc-allow-origin-all=true rpc-listen-all=true rpc-secret=YOUR_PASSWORD rpc-certificate=/root/.aria2/cert.pem rpc-private-key=/root/.aria2/private.key rpc-secure=true It is vital that you replace ''rpc-certificate'' and ''rpc-private-key'' with the exact same certs and keys that the nginx server is using. The download location is set by the ''dir='' option. This also needs to be changed. Make sure to set a secret token, or password, in the ''rpc-sectret='' option. You can test your aria2 config by setting the ''daemon=true'' option to ''false'' in the conf file, and running: $ sudo /usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf This will give you any output to monitor for errors before continuing. ====Systemd==== Now we can create a systemd service. First create the .service file: Create ''/etc/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 --conf-path=/root/.aria2/aria2.conf ExecReload=/usr/bin/kill -HUP $MAINPID RestartSec=1min Restart=on-failure [Install] WantedBy=multi-user.target Now reload the systemd configuration files: # systemctl daemon-reload Start (and optionally enable at boot) the aria2 systemd service: # systemctl start aria2 # systemctl enable aria2 ===== UFW ===== You will need to restart to start ufw and enable the rules. # ufw allow "Nginx Full" # ufw allow "OpenSSH" We will also need to allow port 6800 for the aria2c RPC connection: # ufw allow 6800 # ufw enable # reboot At this point the server should be =====Use in conjunction with an SFTP jail===== There are various reasons why one may want to set-up a file share for accessing the downloaded files from aria2, preferably securely and without overhead, and a jailed SFTP server comes in handy for this. This will create a separate user, with which one can connect to the Download directory, and only that directory, through a secure SSH connection. A guide on how to set this up can be found here: [[server:sftp_jail|Create Secure SFTP Server with User Jails]] Simply make sure that the ''ChrootDirectory'' points to the correct folder in your ''/etc/ssh/sshd_config''. Since we are running the aria2 service as root, it will be able to download into the chrooted folder. =====Known Issues and Workarounds===== As of Firefox version 61, you may run into a few graphical glitches and will experience large troubles when attempting to use a self-signed cert with it.\\ {{:documentation:aria-ng_firefox_vs_chromium.png?nolink&600|}}\\ A self-signed cert will result in Firefox not allowing a connection over SSL at all with aria-ng. There are a few complicated workarounds for this.