This website is hosted on the webserver that also runs the repository. The content is created in regular text files and then “compiled” using Jekyll.

The text files are managed within Git and pushed in a private project in the repo. I set up CI (continuous integration) for that project, so whenever I push some changes to either the content or the config to the repo, it automatically runs the jekyll build on the server which recreates the HTML files that this website consists of. This is fucking awesome!

How did I manage to get this working? First of course I installed Gitlab. When it auto-updated to v8.17 it suddenly supported Gitlab Pages which actually was not very hard to set up.

The tricky part was to set up a runner. After some trial and error heavily supported by having snapshots of the virtual machine that I could restore, I tried the Docker way and it happened to work like magic.

An important detail to know while the runner registration was the executor documentation that was not linked in any of the tutorials I crawled. Choosing the Docker executor nailed it, as it then just does what you expect and you do not have to configure everything yourself on the server that hosts the runner.