I’m using the steps which I followed in my Raspberry Pi. Don’t worry. They are applicable for other Linux distros too. Tested in Kali Linux and Ubuntu.
I’m using a Raspberry Pi 3 Model B as a small file download server. Which means when I need to download a torrent, I use my PI. The reason is, I don’t want to keep my laptop turned on all night long. So I use transmission as the torrent client. Transmission daemon runs as a systemd service in the background, and I use the web interface to interact.
Its very simple,
- Turn on the PI which is in another place in the room.
- Typing my PIs’ IP in a browser and access the transmission web interface using any of my devices in the local LAN.
- Enter the username and password and done dusted for torrents.
Oh, I forgot! PI runs Kali Linux in headless mode.
Here comes the “but”. But my laptop still has to pay for its’ sins when I’m downloading a huge file over HTTP, HTTPS and etc, because I download them in off-peak time (0000h to 0800h). So had to come up with a solution. Opened the browser and summoned god Google. I just typed ‘downloader with a web interface for Linux headless’. For me, the first result was this link to ask ubuntu.
Aria2 is a file downloader just like wget. But much better for my need because aria2 being able to remotely controlled using JSON-RPC and XML-RPC interfaces. Bellow are some abstracts about aria2 and it’s a web interface.
Aria2 - “aria2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.”
Link — https://aria2.github.io/
Web UI - “The aim for this project is to create the worlds best and hottest interface to interact with aria2. Very simple to use, just download and open index.html in any web browser.”
Link — https://github.com/ziahamza/webui-aria2
Alright. Enough intro about them. Let’s see how to get them working with an RPi.
Step 01 — Install aria 2 in your RPi
Step 02 —Folders for the aria2 config file
You need to set up a different file to keep aria2 configurations. For me, I have a different user which I set-up for transmission. For now, let’s say that the user name is ‘user’. So ‘/user’ is the file I use for my downloads.
/user/torrents — for my torrents
/user/downloads — for downloads other than torrents (to keep separated from transmission)
/user/aria2/conf — new file for aria2 configurations
Step 03 — Configuration file
Then create a file named aria.conf in /user/aria2/conf
And paste below configurations. Don’t panic yet! Just past them and come back.
Let me break down the configurations you are questioning right now.
01) dir=/user/downloads => It’s the location you need your downloaded file to save.
02) log=/user/aria2/aria2.log => aria2 log file location
03) input-file=/user/aria2/ses/aria2.session =>(Create ‘ses’ folder first) This is a must. This file will save all the URIs and details related to that URI in this file. Which means details of your download
04) save-session=/user/aria2/ses/aria2.session => “Save error/unfinished downloads to FILE(aria2.session) on exit. You can pass this output file to aria2c with — input-file option on restart. “
05) force-save=true => “Save download with — save-session option even if the download is completed or removed. This option also saves control file in that situations. “
06) IT’S-A MUST(for me) TO have steps 03, 04 and 05.
07) rpc-secret=*YOUR TOKEN* => in your terminal type ‘sudo openssl rand -base64 32’ and get your token and past it here. And keep hold of that token for Web UI configuration.
Don’t worry about the RPC-certificate part. You don’t need it because you’re using this set-up in your Local LAN.
https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-i => Visit this to see all the aria2 configurations.
Step 04 — Testing configurations
Change daemon to false and console-log-level to info in the config file and save it. Now type,
in the terminal and press enter and see the magic. You’ll see a lot of info messages and the terminal will hang up because daemon is set to false. Press Ctrl + C and close the aria2 process. You’ll see something like below,
gid |stat|avg speed |path/URI
Good luck and god speed. Aria2 works fine. Change back the configs (daemon to true and console-log-level to warn) and save the file.
Step 05 — Adding aria2 to as a systemd service
Bellow is the gist you need to past
Save it and restart the RPi. Now type
This starts your aria2 service. To see if it’s running,
Step 06 — Installing apache2
For that, you can follow below link
How To Install the Apache Web Server on Ubuntu 16.04 | DigitalOcean
The Apache HTTP server is the most widely-used web server in the world. It provides many powerful features including…
Step 07 — Starting Apache2 and aria2 at startup
1 — Normally,
2 — And there is another method to do this in the kali RPi,
Search for ‘startup’ in Application Finer, Select ‘Session and Startup’, then ‘Application Autostart’ tab and finally ‘Add’
Do the same for Apache2.
Step 08 — Getting aira2 Web UI
Go to the folder which apache servers the web pages
And you can copy the ‘docs’ folder to /var/www/html and rename it to aria2. Access Web UI using a browser by typing https://your_server_ip/aria2
That’s it, guys. Now you can access your aria2 service through a Web-UI from any device in your LAN. But, there’s a problem. You need to enter your token which you generated in Step 03–07 into Settings -> Connection Settings -> Enter the secret token. Once per device! But if you don’t want to do that you can follow the below steps.
Step 09 — Building angular project with Secret Token
Hoping you have nodejs and npm installed, inside webui-aria2 folder in your terminal type, npm install. Then open the file /src/js/services/configurations.js
Uncomment — //token: ‘$YOUR_SECRET_TOKEN$’
and put your token generated from Step 03–07 and save the file.
Which is — token: ‘YOUR_TOKEN’
Then run the build script using npm run build and follow Step 08 and don’t forget to allow port 6800 for incoming traffic if ufw is enabled.
Yep! We did it. Hope you guys liked this article. Yeah, I know. It’s a long list of steps. But I tried my best as this is my first article. Hope this article has helped you if you’re reading this part. Cya!