Section 1
How a website actually exists on the internet — and how to put one up yourself, or tell an AI to do it for you and still understand what it did.
Google, your school's website, the page you're reading right now — all of them are the same four things. There is no fifth secret thing.
172.105.229.70. Computers find each other with numbers.yashina.burns.jp. Humans are bad at remembering numbers, so we built a phone book. That phone book is called DNS.And one more, because the modern web insists on it:
https:// instead of http://, and what stops browsers from showing scary "Not Secure" warnings.If the words above felt abstract, map them onto something physical:
| The tech thing | The real-life thing |
|---|---|
| Server | A building |
| IP address | The street address — "4 Privet Drive" |
| Domain name | The name on the door — "The Dursleys" |
| DNS | The phone book that turns a name into a street address |
| nginx | The receptionist who decides which room each visitor is shown to |
| SSL certificate | The lock on the front door |
When someone types your website's name, their computer asks the phone book "where does this name live?", gets back a street address, knocks on that door, and the receptionist hands over the right room's contents. That round trip happens in under a second, millions of times a day, and it has worked essentially this way since the 1980s.
Look at the address bar of the page you're on right now. It has three different layers, and people mix them up constantly:
You are looking at all three at once. Hold onto that — the next section is entirely about the difference between the last two.
Say Microsoft wants a page for engineers. They have two choices, and both are completely valid:
| engineers.microsoft.com | microsoft.com/engineers | |
|---|---|---|
| What it's called | A subdomain | A path |
| Needs a DNS A record? | Yes — a new one | No |
| Needs its own SSL certificate? | Yes — a new one | No — reuses the existing one |
| Needs server config? | Yes — a new nginx file | Usually not |
| How long to set up | ~10 minutes, plus DNS wait | Seconds. Make a folder. |
| Can it be a totally separate app? | Yes — even a different server | Harder; it lives inside the same site |
| How Google sees it | Closer to a separate website | Part of the same website |
Ask yourself one question:
yoursite.com/about.shop.yoursite.com.Beginners often make a subdomain for every little thing — about.mysite.com, blog.mysite.com, photos.mysite.com — because it feels more official. Now you're maintaining four DNS records, four SSL certificates, and four server configs for what should have been four folders. Worse, search engines may treat them as four unrelated websites, so none of them builds up the reputation that would have helped the others.
This uses Linode (a company that rents you servers), but every hosting company works the same way. The names of the buttons change; the five steps do not.
Before anything else. Buy a domain from a registrar — Namecheap, Cloudflare, Porkbun, GoDaddy. Expect $10–20 per year.
On Linode: create a new instance.
When it finishes building, Linode shows you an IP address. That's your street address. Write it down.
Go to wherever you bought the domain, find the DNS settings, and add a record:
| Field | Value | What it means |
|---|---|---|
| Type | A | "This name points to an IPv4 address" |
| Name | yashina | Just the prefix — not the whole address |
| Value | 172.105.229.70 | Your server's IP |
| TTL | 600 | Seconds others may cache it. 600 = 10 min. |
yashina — not yashina.burns.jp. Most registrars add the domain for you automatically, so typing the full thing creates yashina.burns.jp.burns.jp, which resolves for nobody. If your new address doesn't work, check this first.
To check it worked, open a terminal and ask the phone book directly:
dig +short yashina.burns.jp
If it prints your IP, it worked. If it prints nothing, either the record is wrong or it hasn't spread yet. Registrars warn that DNS can take 48 hours; in practice it's usually minutes. Different parts of the world update at different speeds, so it working on your laptop but not your phone for a while is normal, not broken.
shop., blog., test. — needs its own A record pointing at the same IP. One server can host hundreds of names. Every new path needs nothing at all.
Connect to the server and install nginx:
ssh root@172.105.229.70
apt update
apt install nginx -y
Put your files somewhere, conventionally under /var/www/:
mkdir -p /var/www/yashina.burns.jp
Then tell nginx that this name maps to that folder. Create /etc/nginx/sites-available/yashina.burns.jp:
server {
listen 80;
server_name yashina.burns.jp;
root /var/www/yashina.burns.jp;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Read that out loud and it's almost English: listen on the normal web port; when someone asks for this name; serve files from this folder; if the file isn't there, say 404 Not Found.
Turn it on:
ln -s /etc/nginx/sites-available/yashina.burns.jp /etc/nginx/sites-enabled/
nginx -t # ALWAYS test first
systemctl reload nginx # only if the test passed
nginx -t
It checks your config for mistakes before you apply them. If a server is hosting other websites and you reload a broken config, you can take all of them down at once. Test, read the output, then reload. Professionals who skip this step are the reason outages have their own Wikipedia pages.
Certificates used to cost money and take days. Now they're free and take about ten seconds, thanks to a nonprofit called Let's Encrypt. The tool is certbot:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d yashina.burns.jp
It proves you control the name by placing a secret file on your server and checking it can fetch that file over the address — which is exactly why the A record has to work before this step. It then rewrites your nginx config to use the certificate and redirect http:// to https://.
Certificates expire every 90 days. Certbot installs a scheduled job that renews automatically, so this is genuinely a once-per-subdomain task.
Now compare all of that to adding /training to a site that already exists:
mkdir -p /var/www/yashina.burns.jp/training
# put an index.html inside it
Done. No DNS. No certificate. No reload. No waiting. It's live the instant the file lands.
That is the difference the Microsoft comparison was pointing at. One of these is a construction project and the other is opening a drawer.
You don't have to memorize these commands. You do need to know enough to tell when an AI has done something wrong — which it will, confidently, at some point.
A prompt that works:
I have a Linode server at <IP ADDRESS> running Ubuntu,
and I own the domain <DOMAIN>.
I want <SUBDOMAIN>.<DOMAIN> to serve a simple static
site with an SSL certificate.
Walk me through it step by step. Tell me exactly which
DNS record to add at my registrar — I'll add it myself.
Before reloading nginx, always run nginx -t and show me
the output. Explain what each command does before running it.
Why that prompt is shaped the way it is:
All of these are safe. None can break anything that matters.
index.html, swap the emoji, reload. Smallest possible full loop: edit → deploy → see it./training/hello/ with its own index.html. Notice you touched no DNS and no certificate. This is the lesson, felt rather than read.404. Then look at the server's log and find your own visit in it: tail /var/log/nginx/yashina.burns.jp.access.log. Every visit to every website is written down somewhere like this.dig +short github.com. Those are real servers you just looked up in the real phone book — the same one your browser uses.docs.company.com and which use company.com/docs. Once you see it, you can't unsee it.nginx -t, every single time.rm -rf unless you fully understand the path after it. There is no undo, no recycle bin, and no confirmation. It is the single most expensive command in computing.whatever.bak instead of deleting it.| Word | Meaning |
|---|---|
| Server | A computer that stays on and hands out your files |
| IP address | The numeric address of that computer |
| Domain | A name you own and renew, like burns.jp |
| Subdomain | A prefix on your domain. Needs an A record. |
| Path | Whatever comes after the slash. Needs only a folder. |
| DNS | The internet's phone book |
| A record | One phone book entry: this name → this IP |
| TTL | How long others are allowed to remember that entry |
| nginx | The program that serves your files to visitors |
| SSL certificate | The proof of identity that makes https work |
| SSH | A secure remote terminal into your server |
| 404 | "That file isn't here" |