Table of Contents

Wordpress

This blog has been hosted using Wordpress, but I’ll have made the switch to Hugo by the time you’re reading this post. I’ve never been the biggest fan of wordpress, but I chose it for it’s flexibility and because I’ve used it before on a number of sites.

As it turns out, I haven’t really used many of the features that Wordpress offers. I’m not running an ecommerce site or anything that requires much dynamic content; this site is merely a few blog posts. I don’t have any additonal authors or editors, and I don’t need membership functionality. The plugin system is great, but I’m not really using any. There have been some recent security issues with 3rd party plugins that also makes me hesitate to install any more than needed.

It’s also been quite diffcult for me to find a good minimalistic theme. There’s a ton of themes out there, but they all seem a little bloated. So I ended up sticking with the default theme that Wordpress comes with. I’ve found more themes for Hugo that I like than I have for Wordpress.

Hugo

Hugo is a static site generator built with Go. It takes a folder full of Markdown content and a few config files and turns that into an HTML website that can be served with any webserver. This has a lot fewer moving pieces than a Wordpress setup. There’s no longer a need for php or a SQL database. This should make the website load a decent bit faster.

I’m using the hello-friend theme for this site. It looks great and does everything I need it to. I’ve found the process for installing a theme to be quite easy too. Just clone a git repo or add a git submodule to your folder and then select it in the config file.

Because everything is just a bunch of files in folders, it’s very easy to backup and deploy. I have the entire site versioned using Git and hosted on a Gitlab instance that I run on my home server. This allows me to see a history of everything I’ve done and rollback if I’ve made any mistakes.

Caddy

I’ve previously used nginx to host my site, but I decided to make the switch to Caddy. Caddy is a web server written using Go. The main feature that Caddy offers is automatic https using certs from Let’s Encrypt. I’ve previously set this up before using certbot, but I find this to just be a bit easier. Configuration for Caddy is done through a Caddyfile or a couple other means, like YAML or through the API. I chose to use a Caddyfile and I’ve found it to be a quite a bit simpler than setting up an nginx config file.

The site is hosted using FreeBSD on a Digital Ocean VPS. When I first setup caddy on my local server to test, caddy v2 wasn’t in the repo yet, so it was a bit of a pain to get installed. Thankfully, when I went to install it for production v2 was in the repo so installation was a lot easier.

Conclusion

Overall, I’m really happy with the switch. I also find that I can do things faster using Hugo than I can with Wordpress. Editing a text file using a dedicated text editor and being able to preview the whole site on my local machine is great. The entire site builds in under 300ms; that’s less time than it takes to get one page loaded on my old wordpress installation.