Before touching Caddy, you need to master web server concepts, HTTP/HTTPS, DNS, and TLS. In this episode you'll also prepare a Linux environment, install Caddy, and verify the first installation with basic commands.

Welcome to the Learning Caddy series! This series will take you to mastery of Caddy — the modern web server that handles HTTPS automatically — from conceptual foundations all the way to production readiness. There are 31 episodes in total, arranged across ten phases.
But before you ever run caddy run, there are some basic skills and software you must have. Why are these pre-requisites important? Because Caddy replaces the job of Apache or NGINX with much simpler configuration, and its HTTPS automation depends on your understanding of DNS, ports, and TLS certificates. If these concepts aren't clear, the entire series will feel confusing.
This Episode 0 is your roadmap: we'll make sure you have the basic skills, prepare a Linux environment, install Caddy, and run the first verification. Once this episode is done, you'll be able to follow the rest of the series comfortably.
Caddy is a web server, so first understand what a web server is: a program that receives HTTP requests from browsers and sends back responses. You must understand the difference between HTTP and HTTPS, URL structure, request methods such as GET and POST, and status codes like 200, 301, and 404. Without these, reading access logs will feel like reading a foreign language.
The key concepts you need to understand:
example.com are translated into IP addresses.Caddy uses domain addresses to decide which site to serve. So you must understand how A records work and why ports 80 and 443 need to be open in the firewall.
Caddy is a single binary operated from the terminal. Get familiar with basic Linux commands like ls, cd, sudo, systemctl, and curl. An editor such as VS Code will be very helpful for writing the Caddyfile.
uname -a
cat /etc/os-release
idThe output of uname -a tells you the architecture and kernel, /etc/os-release tells you the distro, and id shows the currently active user. All three matter because Caddy is best run as a regular user, not root.
The easiest way on Debian and Ubuntu is through the official Cloudsmith repository:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddyThe curl -1sLf ... commands fetch the signing key and repository list, then sudo apt install caddy installs the latest stable Caddy version.
Also prepare the supporting tools you'll use in the upcoming episodes:
docker --version
git --version
openssl version
curl --versionCaddy is very lightweight because it's written in Go. At minimum you need:
If you want to experience real automatic HTTPS, also prepare a domain name with DNS access. Without a domain, Caddy still works for localhost and IP addresses, just without public certificates.
After installation finishes, verify that the Caddy binary is ready to use:
caddy version
caddy list-modulescaddy version shows the v2.x version. caddy list-modules lists all modules compiled into your binary — a feature we'll cover in episode 29.
Create your first file in your home directory:
localhost {
respond "Hello from Caddy!"
}Then run Caddy in foreground mode so it's easy to stop:
caddy run --config ~/CaddyfileOnce Caddy is running, open http://localhost in your browser or use curl http://localhost — both should show the text Hello from Caddy!. To stop it, press Ctrl+C.
Here's a recap of the pre-requisites you prepared in episode 0:
If anything is still missing, stop here and complete it before moving on. A strong foundation will make the next 30 episodes feel much lighter.
In this episode 0 you prepared the footing for the entire series: understanding web server, DNS, and TLS concepts, setting up a Linux environment, installing Caddy v2 from the official repository, and verifying the first installation with a Caddyfile hello world.
Key takeaways:
caddy run and stopped with Ctrl+C.caddy list-modules shows the modules available in your binary.In the next episode, episode 1, we'll discuss the history, background, and why you need Caddy — from the evolution of traditional web servers, the birth of Caddy by Matt Holt in 2015, to comparisons of Caddy with NGINX, Apache, and Traefik. Make sure your environment is ready, because the Learning Caddy journey has only just begun!