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, and
breder.orgis 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-techniquedocument 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
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.