Before downloading your first file, there are a few basic skills and tools you need to prepare first: comfort navigating the terminal, an understanding of HTTP and basic networking concepts, and the installation and verification of aria2 1.37.0 along with supporting tools such as jq, curl, nmap, and the AriaNg web UI.

Welcome to the Learn Aria2 series! This series will take you from your very first download to mastering aria2 — a lightweight, multi-protocol & multi-source command-line download utility that is fast — all the way to RPC, BitTorrent, and a production download server. There are 23 episodes in total that build your understanding layer by layer.
But before you type your first aria2c command, there are a few basic skills and tools you must prepare. Why are these prerequisites important? Because aria2 is a client: it talks to servers over the network using HTTP, FTP, or BitTorrent protocols, then writes the results to files on disk. If you don't yet understand how an HTTP conversation works or aren't comfortable in the terminal, aria2 will feel like a black box — you memorize the commands, but what happens inside remains a mystery.
Imagine you want to manage a shipping fleet. Before planning routes, you need to understand the road map, the types of vehicles, and the warehouse doors. Episode 0 is that road map: preparing the basic skills, making sure aria2 1.37.0 is installed and verified, and then completing the supporting tools that will accompany you throughout the series.
Aria2 is a Command Line Interface (CLI) tool. All of its power is accessed through the terminal — not by clicking buttons. That's why the first step is preparing the right mindset: don't be afraid to type, be willing to read errors, and be patient in building your command vocabulary.
A simple analogy: a GUI is like a TV remote control — simple, but limited to the buttons available. A CLI is like an aircraft control panel — intimidating at first, but it gives you full control over every aspect. All DevOps work — fetching files from servers, scheduling downloads, monitoring a download server — starts with a command in the terminal.
Before wrestling with aria2, make sure you're comfortable navigating the terminal. At minimum, these four commands are enough as a starting point:
| Command | Purpose |
|---|---|
pwd | Shows the current working directory |
ls | Lists the contents of a directory |
cd | Moves to another directory |
man | Reads a command's manual page |
One concept you must understand from now on: stdout. Many commands write their output to stdout — that is, your terminal screen. This output can be redirected to a file with > (redirect) or piped to another command with | (pipeline). You'll use this pattern constantly, for example when checking downloads via RPC in the later episodes.
Aria2 supports many protocols, but the two most frequently used are HTTP/HTTPS and FTP. HTTP works through something called a URL — the address of the transfer destination. A URL's anatomy can be broken down into five components:
| Component | Example | Purpose |
|---|---|---|
| Scheme | https | The protocol used |
| Host | example.com | The domain name of the destination server |
| Port | 443 | The connection door on the server (default if not written) |
| Path | /files/ | The resource location on the server |
| Query | ?id=1 | Additional parameters for the request |
Once you understand URLs, understand the shape of the conversation: request and response. The client (aria2) sends a request containing a method and headers, then the server responds with a status code, headers, and a body. The status code classes are the "report card" for every download:
| Class | Meaning | Examples |
|---|---|---|
| 2xx | Success | 200 OK, 206 Partial Content |
| 3xx | Redirect | 301 Moved Permanently, 302 Found |
| 4xx | Client error | 403 Forbidden, 404 Not Found |
| 5xx | Server error | 500 Internal Server Error |
Notice 206 Partial Content — this is the status that lets aria2 request part of a file via the Range header. Without it, the multi-connection and resume features won't work. Other important headers: Content-Length (the file length in bytes) and Content-Disposition (the suggested file name). FTP itself is useful for legacy servers that don't provide HTTP.
Besides protocols, there are four network concepts that keep appearing throughout the series:
| Concept | Explanation | Analogy |
|---|---|---|
| DNS | Translates domain names into IP addresses | Phone book: you remember the name, the system looks up the number |
| IP Address | A server's unique address on the internet | Home address |
| Port | A specific door on a server | Apartment unit number: 80 for HTTP, 443 for HTTPS, 6800 for aria2 RPC |
| TLS/SSL | Encrypts data during transit | Sealed envelope: its contents can only be read safely by the recipient |
| Proxy | An intermediary between client and server | A receptionist who forwards your letters |
Why does this matter? When aria2 downloads from https://example.com, it performs DNS resolution, opens a TCP connection to port 443, performs a TLS handshake, and then sends the HTTP request. And when you enable RPC mode later, port 6800 becomes the door you must guard and inspect.
Aria2 doesn't have to be configured through the command line every time. Most options can be placed in a configuration file — by default ~/.aria2/aria2.conf — so they apply to all sessions. Additionally, aria2 honors standard network environment variables like http_proxy and https_proxy, so proxy settings can be inherited from the system rather than written per-command. The analogy: the command line is a one-time decision, the configuration file is a consistent habit, and environment variables are an inheritance from your surroundings. To see all available options, run aria2c --help.
Our target is aria2 1.37.0 — the latest stable version. Fortunately, aria2 is bundled in the repositories of nearly all major operating systems, so installation is as simple as using your package manager:
sudo apt update
sudo apt install aria2The installed version may lag slightly behind 1.37.0 on some distros — that's fine for learning. What matters is that the binary is available and its core features are enabled.
On Windows, aria2 is not bundled with the system. You can download the official binary named aria2c.exe from the project's release page (aria2 can run directly without installation — just drop the exe in any directory). For an experience closer to a production server, WSL2 is also a comfortable option.
On Android, Termux users just need to run pkg install aria2. Yes — with Termux, your phone can become a real aria2-based download server.
After installation, verify with aria2c --version:
aria2c --versionaria2 version 1.37.0
Copyright (C) 2006, 2019 Tatsuhiro Tsujikawa
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
** Configuration **
Enabled Features: Async DNS, BitTorrent, Firefox3 Cookie, GZip, HTTPS,
Message Digest, Metalink, XML-RPC, SFTP
Hash Algorithms: sha-1, sha-224, sha-256, sha-384, sha-512, md5, adler32
Libraries: libssl/3.0, zlib/1.3
Compiler: GCC 13.2.0Pay attention to the Enabled Features line — that's where you confirm your aria2 build is healthy:
| Feature | Used Later In |
|---|---|
| HTTPS | Secure downloads via TLS (episodes 3, 18) |
| BitTorrent | Downloading .torrent files (episode 11) |
| Metalink | Multi-mirror downloads from .meta4 files (episode 12) |
| SFTP | Secure transfer via SSH (episode 9) |
| XML-RPC | Remote control interface (episode 14) |
Tip
If a feature is missing from the Enabled Features list, your aria2 build was compiled without it — that's not a bug, it's a decision made at compile time. For this series, make sure at minimum HTTPS and XML-RPC appear, because both are used in nearly every episode.
Aria2 is great on its own, but some jobs become much easier with four companion tools:
| Tool | Purpose in This Series | Verification |
|---|---|---|
curl | Testing RPC requests against the aria2 server | curl --version |
jq | Parsing and coloring JSON output from RPC | jq --version |
ss | Checking whether the RPC port (6800) is listening | ss -tlnp |
nmap | Scanning ports on other hosts (including from outside) | nmap --version |
jq and curl become your main weapons once we reach the RPC episodes. ss and nmap are useful for verifying that the aria2 server is truly listening on the expected port. Make sure all four are ready:
curl --version
jq --version
ss -tlnpTo monitor downloads visually, also prepare your favorite browser — later we'll use AriaNg, a popular web UI that talks to the aria2 server via RPC. Just open it in the browser, point it at the RPC endpoint, and your entire download queue looks like a modern downloader application.
pwd, ls, cd, man).aria2c --version shows aria2 1.37.x with the HTTPS and XML-RPC features enabled.curl, jq, ss, and nmap are installed.In episode 0 you've laid the foundation for the entire series: understanding basic CLI skills and HTTP concepts (URL, request/response, status codes, headers), knowing basic networking (DNS, port, TLS, proxy), understanding the role of configuration files and environment variables, making sure aria2 1.37.0 is installed and verified with the HTTPS and XML-RPC features enabled, and completing the supporting tools curl, jq, ss, nmap, and a browser for AriaNg.
Key takeaways:
Range and Content-Length headers) is the language you'll speak with aria2 every day.aria2c --version: make sure the version is 1.37.x and the HTTPS feature is enabled.curl, jq, ss, nmap, and a browser as companions throughout the series.In the next episode, episode 1, we'll discuss the history, background, and why the world needs aria2 — the lightweight project written by Tatsuhiro Tsujikawa in C++, the big problem it solves (huge files with multi-connection and multi-source), and aria2's position alongside wget and curl. Make sure your environment is ready, because the Learn Aria2 journey is just beginning!