My personal website has been hosted on Github pages for just shy of 3 years now. In that time, the service has been fantastically reliable and fast. As I have slowly added features to the website, however, the resulting code gradually getting larger has made it so that fixing breakages and adding more improvements has become untenable.

I’ve been gradually using Gitlab more over Github in the past year for my git needs. Access to private repositories as a free user is something that has come in handy for my purposes, mainly backing up research data analyses and writing. They too offer a project-hosting solution in the form of Gitlab pages.

Github pages builds sites with Jekyll, so that is what I previously used. As the only thing to worry about, there wasn’t much else I needed to do in terms of configuration files - just set up the website and Github pages builds and serves it. The move to Gitlab pages hosting involved adding some instructions to the repository in the form of a Gemfile and a .gitlab-ci.yml, within which are instructions on what static site generator system you choose to use. Once pushed, a pipeline will be run according to these instructions to build your site and then serve it.

A major advantage of this is that you are able to use other types of static site systems, or you can specify certain addons to the system that you’ll want to use. After some troubleshooting (there were some directory conflicts in my repository with a public folder and the way Jekyll by default built things on Gitlab), the site worked ok, but there were a few things I had hacked on that didn’t end up working very well - my parasitological taxonomic reference materials. I’d also been wanting to modernise my website as well, to streamline it and make it better handle code.

So I made the decision to start again using Hugo as a backend with one of the provided templates - Beautiful Hugo, a port of Beautiful Jekyll by Dean Attali. There are intuitive responsive elements at the top and a place where I can put individual resources.

Another benefit is SSL. Github pages doesn’t at this point in time natively support SSL for sites served on custom domains. While the end user won’t necessarily notice it, and there are ways of providing some form of encryption (via CloudFlare for example), it is regarded as good practice which is well supported by Gitlab pages. It should be noted, however, that the SSL certificate generated by Cloudflare needs appended to it an intermediate as noted in this post.

Unfortunately there are a few issues. The directory structure is different to how it was previously, and while I can import most of my old posts, the links will not be the same. This will likely have implications for pages used as resources as well as search and commenting.

Edit: It appears that comments are migrating over nicely, and 301 redirects should catch most of the old links.