Skip Navigation

15 Jul 2022

Using Aria2 with Ariang

Sahil Kokamkar
Unsplash Credit:@kolamdigital

Aria2

Aria2 is a lightweight cli download utility which supports multiple protocols such as HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. It can also be controlled via JSON-RPC (which we are going to use with WSS) and XML-RPC.

Installing Aria2

Install aria2 using package manager. For e.g., in dnf:

sudo dnf install aria2 -y

Configuring Aria2

Once you have aria2 installed, create an aria2.conf file in the /etc directory. And paste the following settings:

# Change the Secret
rpc-secret=<YOUR_SECRET>
enable-rpc=true
# Only allow connection from nginx proxy
rpc-allow-origin-all=false
rpc-listen-all=false
max-concurrent-downloads=5
continue=true
max-connection-per-server=16
min-split-size=10M
split=10
max-overall-download-limit=0
max-download-limit=0
max-overall-upload-limit=0
max-upload-limit=0
# Download destination, should be the same in "/files" block of nginx config
dir=${HOME}/downloads
# Your session file location, and you shouldn't forget to create it before hand. (Or aria2c will fail to start.)
input-file=${HOME}/.aria2.session
save-session=${HOME}/.aria2.session
file-allocation=prealloc
referer=*
http-accept-gzip=true
save-session-interval=60
force-save=false
log-level=notice
# Log file
log=${HOME}/.aria2.log
allow-overwrite=true
# BT settings configure as you like
bt-tracker=

Create files for log and session

touch ${HOME}/.aria2.session ${HOME}/.aria2.log

Running the config

Run the following command in terminal

aria2c --conf-path=${HOME}/etc/aria2.conf -D

Note: The process will not restart if the server reboots, so create the following service file and enable it.

[Unit]
Description=Aria2c
After=network.target

[Service]
Type=simple
User=<your-username>
ExecStart=/usr/bin/aria2c --conf-path=/home/user/etc/aria2.conf

[Install]
WantedBy=multi-user.target

Installing AriaNg

First, make aria2 directory in /var/www/ using mkdir aria2 and cd to it.

Then download and unzip it using by running the following command:

wget https://github.com/mayswind/AriaNg/releases/download/1.2.4/AriaNg-1.2.4-AllInOne.zip && 7z -e A*

Setting up Nginx

Create a ariang.conf file in /etc/nginx/sites-available/ and paste the following config:

server {
    listen 80;
    listen [::]:80;
    root /var/www/aria2; #AriaNg Location
    index index.html;
    server_name <your-domain>;
    
    access_log  /var/log/nginx/ariang.access.log;
    error_log   /var/log/nginx/ariang.error.log;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    location /jsonrpc {
        proxy_pass http://localhost:6800/jsonrpc;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    
    location /files {
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
        alias /home/USER/downloads;
        autoindex on;
    }
}

After that save and create a symbolic link to it using:

sudo ln -s /etc/nginx/sites-available/ariang.conf /etc/nginx/sites-enabled/

To protect your download directory using password, run sudo htpasswd -c /etc/nginx/.htpasswd <username> and entry your password.

Then finally test your nginx config using sudo nginx -t and reload the server sudo nginx -s reload.

And make sure to configure your DNS record and install SSL certificate using these steps.

Configuring AriaNg

Once you're done setting up nginx. Go to <your-domain>/#!/settings/ariang and go to RPC tab and change Aria2 RPC Protocol to WebSocket Security(WSS) and the port to 443.

AriaNg RPC settings

Add your rpc-secret in Aria2 RPC Secret Token and hit Activate and reload the page.

Now you should be able to see the Aria2 status as connected

Aria2 Status

Congrats🎉, you have successfully configured Aria2Ng.