I generally encourage having personal websites. They have a lot of uses, and contrary to the widespread anti-self-promotion sentiment, I actually like it when someone links themselves. It gives me a way to find out what they're about if I'm interested.

So I thought I'd make a sorta guide on how to set them up aimed at people with little technical knowledge. (This involves picking up some technical knowledge, but not as much as you might think.)


First, there are a lot of what I call "cookie cutter" solutions out there, like Wix and Wordpress. These aren't what I'm on about. They're a quick path to putting up some content, but they don't give you full control over the website - you're limited to what the platform offers as far as layout and style, post format, comment/account systems which are usually confusing and buggy, and anything else you might want.

This guide is gonna be about doing it "the real way" which has the following benefits:

  1. Flexibility. Anything under the sun can be done with a server you control, not just things the platform supports.

  2. Independence. If your website is built on a platform like the above, migrating off it will be difficult. You can probably export all your text content, but putting your website back up with a different solution would take a lot of manual work and it'd probably never be the same; especially things like user accounts or comments wouldn't carry over easily. If you self-manage your website like I do, you could set it up on a new server in an hour. I even scripted my install process so I wouldn't have to do hardly anything. That's impossible with a cookie cutter platform.

So what I'm getting at here is, the quick and easy path leads to the dark side :P

So there are a few core components that go into a website:

Something that's not required but that you should get as soon as possible is an HTTPS certificate, so users can connect securely and know that they're connected to the right website. (Sites without HTTPS support are also penalized in Google search results.) These used to be expensive, but nowadays you can get one from Letsencrypt for free with their Certbot utility.


It's possible to just write a plain text file and have Nginx or another web server program serve it. That wouldn't be very interesting though, because plain text doesn't allow for any kind of layout, style or formatting - not even things like italics. For real web content, there are three core technologies involved:

The hardest part about rolling your own website is if you want a comment system. That requires a backend server and a database to store the comments in. The web server's job is just to serve the files containing HTML, CSS, and Javascript, so it doesn't handle that part, but they're designed to communicate with a backend so you still get the benefits of them. Backend or application servers are written in actual programming languages (and aren't the sort of thing we task newbie programmers to write).

My implementation's open source and up for copying, though.

That's all the ingredients to a website. If you're a non-programmer following this and get stuck, feel free to ask me.

This page was last modified (UTC)