How to Self-Host a Website
What's exactly a website?
Let's first walk in detail over all the technical steps involved in accessing a website:
- You first fire up a program or app such as Chrome, Firefox or Edge, which is a web browser.
- You then type in some address in the address bar, such as
breder.org/pomodoro-technique
. This is called the URL or Uniform Resource Locator. - Your browser figures out what's the IP Address of the server of
breder.org
, through the DNS protocol. IP stands for Internet Protocol, DNS stands for Domain Name Server, andbreder.org
is called a domain name. - Your browser then connects to the server using a TCP connection and writes bytes corresponding to the request, which is essentially asking “Please serve me the
pomodoro-technique
document please”. TCP stands for Transmission Control Protocol. - The server processes the request and sends back bytes corresponding to the requested document.
- Your browser then interprets the bytes appropriately, drawing text and graphics on the screen.
What do I need to have?
You need essentially to have two things:
1. A domain name, such as breder.org
or example.com
. This is acquired through registering a available domain name on a domain registrar, such as Hover, and your ownership paid through a small annual fee, typically between $9 and $15 USD per year.
2. A web server, essentially a computer always powered on and connected to the internet, which is always ready to serve requests as they come. The cheapest offering from Linode is $5 USD per month. This machine will host (store) and serve (transmit) your files to your visitors.
There's also a component which is pretty much non-optional today, as modern browsers tag pure “HTTP” traffic as “not secure”. You need an SSL certificate issued by a certificate authority to serve encrypted traffic over HTTPS. A popular and free option is Let's Encrypt.