What this course is
Ten lessons that follow one small website from an empty
web domain name to a server you run yourself. Each
lesson explains one part of the chain, gives the commands in the order
they run, and ends with a short quiz. Nothing here is theoretical: every
command is the one you type on your own machine or server.
The course does not replace the reference pages linked along the way.
When a lesson says "install Nginx" and links
Install Nginx on Ubuntu, the
lesson explains where that step belongs in the whole picture and the
linked page explains the details.
Who it is for
- A beginner who has made a site on a laptop and now wants it on the internet under a real name.
- A owner of a site on shared hosting who is tired of the limits of a control panel and thinks about a VPS.
- A developer who writes code but has never touched DNS records, a firewall or a mail server.
- Anyone who has to answer the question "why is the site down, and is our mail safe?" at work.
No previous server experience is assumed. You should be able to open a terminal, edit a text file and read a command name without fear. A Linux machine helps, but the first lessons work from any system with dig and whois, and the server lessons start from a fresh Ubuntu 24.04 installation.
What you can do at the end
- Register a domain name, keep its owner data correct, and protect the registrar account.
- Explain what a name server, an A record and a TTL do, and connect a domain to any hosting without guessing.
- Put a site with a database and HTTPS on shared hosting, then move the same site to a VPS or a dedicated server.
- Install and configure Nginx, PHP-FPM and MariaDB from the command line.
- Close a server to strangers: keys instead of passwords, a firewall, automatic updates, one user and one PHP pool per site.
- Send and receive mail on your own domain with SPF, DKIM and DMARC.
- Know the threats a hosting provider and a server owner meet, and which of them your server will meet first.
- Keep the site alive with backups, monitoring and a maintenance schedule.
The lessons
Read them in order. Every lesson ends with a link to the next one, and the quiz at the end checks that the commands of that lesson make sense before you build on them.
- How domain names work and how to register one: the DNS tree, registries and registrars, the registration steps, and what happens when a domain expires.
- How web hosting works: a server, a web server, virtual hosts, PHP handlers, databases, and how many customers share one machine.
- Connect a domain to a hosting: delegation or your own DNS records, A, AAAA, CNAME, MX, TXT, TTL, and the first HTTPS certificate.
- Run a website on shared hosting: an account, uploaded files, a database and a small PHP page that uses it, redirects, a mailbox and backups.
- The same website on a VPS or a dedicated server: Ubuntu 24.04, SSH keys, Nginx, PHP-FPM, MariaDB, the move with rsync, and certificates.
- What else a server administrator needs to know: the skill map, how to learn it, certifications, and the next technologies.
- The security problems of hosting: what providers fight every day, and the threats a server owner meets first, ranked.
- Harden your server step by step: SSH, fail2ban, the firewall, updates, permissions, TLS, backups and monitoring.
- Mail on your own domain: MX, SPF, DKIM, DMARC, reverse DNS, Postfix, Dovecot, and how to test what you built.
- The launch checklist and the maintenance plan: one list from domain to mail, a schedule for each day, week and month, and what to check first when a site is down.
Optional side story. The course does not need WordPress. If you already run it, Side story: WordPress on shared hosting and on a VPS collects the WordPress steps the lessons no longer cover. Every other reader can skip it.
How to use the course
Do the steps on a real domain and a real server, not only in your head.
A cheap VPS for a month costs less than the time you will spend guessing
what went wrong. Keep a notebook, or a plain text file, with every
command you ran and every value you set: the IP address, the name
servers, the database name, the ports you opened. When something breaks,
that file is the first place to look.
The quiz after each lesson is not an exam. Its answer opens with a click,
so you can think first and check yourself after. If two answers in a row
surprise you, read that lesson again before you go on: the next one
assumes the commands of the previous one already work.
Conventions in the lessons
- The domain is example.com, the IPv4 address is 203.0.113.10 and the IPv6 address is 2001:db8::10. These are documentation addresses: replace them with your own, and never publish the real ones in a guide.
- The server runs Ubuntu 24.04 LTS with Nginx, PHP-FPM 8.3, MariaDB, certbot, ufw, fail2ban, Postfix and Dovecot. Another distribution works the same way, with its own package manager and file paths.
- A command you type starts on its own line in a dark block. The output below it is shortened to the lines that matter; your numbers, paths and versions will differ.
- Lines that start with sudo run as root. When a lesson says "on your computer", it means the machine in front of you; when it says "on the server", it means the machine you log in to over SSH.
- Words in monospace are file names, settings or commands mentioned inside a sentence.