Site Creation

This is a brief overview of how I developed this site, as well as how it is currently running.

The Site

This website is running on a virtual host provided by Hetzner Cloud. I've written the user-facing part of the site entirely from scratch, using vanilla javascript and HTML. This was originally a learning exercise, but I decided to keep it up as it's nice to have a central location to host things like this.

So how does it work? The code is hosted on github so feel free to browse at your leisure. The code is licensed under the Apache-2.0 license, so copy, reuse, mess around with whatever you feel like. If you have suggestions, feel free to open pull requests or issues.

The Server

This website used to be hosted on a local HPE ProLiant MicroServer Gen8. However, over time I decided to move to a virtual host. This massively improves uptime, and means that I don't need to put in the effort of maintaining my own local host.

The downside of this option, of course, is the lower specs for the price. My virtual host has only 2 vCPUs and 4 GB RAM, along with two hard drives (40GB nVME and 100GB NAS). But considering the fact that it doesn't rely on my own internet connection, is situated in a datacentre with a very fast internet connection, and has automated backups... I think the tradeoff is worth it for my own purposes.


Although previously I was running my code in Openshift, I have instead decided to lean more heavily on the lower level tools for this iteration. Currently all of the content on this site is hosted via Docker containers, and these are routed by nginx.

The container running this main site is based on Tiangolo's docker image, combining meinheld, gunicorn and flask into a single docker container. I make a few small changes which you can see in my own Dockerfile. I warn you though, it's not that interesting!

As for the site code, you can see it on Github. Flask allows me to massively reduce the amount of repeated code relative to old iterations, a task I was previously doing with the help of a small piece of javascript. unfortunately, that meant that the site was unusable with javascript disabled, which is not ideal. Most of the routes in my flask application are simple renders (along with steps to ensure that the route is valid), but a handful use actual scripting. Take a look at the routes under /personal/rpgs/ if you want to check them out.


My registrar is Gandi, although it annoys me that they spelled Gandhi wrong :p

They've been pretty easy to work with and have a good corporate philosophy in my opinion. I use their mail server as I'm not interested in setting up a mail server from scratch just yet.

To Do

There's still a few things that I want to do on here, which I haven't gotten around to.