How to run your personal website for free

I spent a lot of time figuring out how to run this website for free. I couldn’t believe how simple it is. I’ll teach you how I do it here so that you don’t have to learn it on your own.

Most people recommend just paying for a platform like Wordpress or Ghost. They are not wrong, hosting your own website can be a lot of work and these platforms take care of everything for you for a monthly fee.

But, you are probably an engineer like myself and I have a little trouble paying for simple things that I know I can do myself. It’s not about the money. There just has to be a way to do it for free without becoming a full-blown server admin. Here’s how I do it -

Blogging engine - Jekyll

Jekyll is one the most popular static site generator out there. It’s simple and has a lot of plugins and free themes. It allows you to write in Markdown, which most engineers already know how to. I’ve never had to go back and modify anything after the initial set up.

Hosting - Gitlab Pages

Gitlab offers free private repos and free CI to go with them. I have this blog set up in a private repo and have the CI configured to generate the static site on every push to master and deploy to Gitlab Pages, which is also free. Also haven’t had to go back and change anything after the initial setup. Here’s a tutorial.

Comments -

Static sites don’t offer a way to add comments out-of-the-box and Disqus is evil. I use Utterances to offer Github issues-backed comments. This way you are not tracked on this website and I own my data. Took less than 5 mins to set up.

TLS - Let’s Encrypt

Paying for SSL certs is just ridiculous in the age of Let’s Encrypt. Set up takes less than 5 minutes and the certs get renewed automatically using this script.

[Update - July ‘19]: Gitlab has introduced automatic HTTPS for Pages, so enabling TLS is now as simple as clicking a button!

That’s it. You just learnt how to set up and run your personal website for free in less than an hour. You’re welcome.