Building, Deploying and Hosting this Website

A picture of the author, Jakob Maier
Jakob Maier
Aug 7, 2022

Why even have a website?

I maintain this website for a couple of reasons. First, I enjoy learning about web technology, and the best way to learn is by trying stuff out. Second, I often like to work on small projects, which I can then show to people on this website.

The third reason for having this website is to have a place to publish blog posts. I like to write these posts for different reasons, sometimes just to rant about something or to share something interesting that I have found or learned to do. These posts are often just meant for me, so I can remember stuff better, but might also be useful to someone else. Whenever I learn something but can't find a blog post that explains the issue very well I try to write one myself.

Static site generator

To build this website I use Eleventy as a static site generator. While not quite as popular as Jekyll, Eleventy requires Node instead of Ruby, which I am very familiar with, so this is perfect.

Styling

For styling I use Tailwind CSS. I used to use Bootstrap, but switched because Tailwind is more flexible and just looks better.

Javascript

This website is 99% static and so it barely needs any Javascript. When I do need it though I use Alpine.js, a flexible and declarative framework. It has a syntax very similar to Vue, but is much more lightweight.

Hosting

This website is hosted on a small virtual private server from Alwyzon, a hosting provider from Vienna, Austria. I learned about this provider from LowEndBox and due to it being located so close to where I live it is the perfect fit. Of course, since this is a purely static site I could also host on github pages, which would be free. However I have some other websites and projects that need hosting, and so having a dedicated server has some advantages. For example, I host an instance of CommaFeed, an open source rss reader.

Deployment

The deployment of this website is done using Github actions. This way, any changes pushed to the master branch are automatically published on my website. In fact, you may have noticed that I have this little "edit this page" link on every page. When I click on this link it opens the page in my github repository in edit mode, where I can immediatly make my changes to the markdown files. Github even provides a Preview when using markdown, which is just really convenient. I can then commit my changes and it will be published using Github Actions within about 30 seconds. This way I get a full blown CMS with zero effort by just using Github + Github Actions.

Another Github action that I have found to be extremely useful is Broken-Links-Crawler. As the name suggests, this action crawls all the links on my page and notifies me when any of them are broken. This should prevent link rot as much as possible.

↑ back to top

© 2022 Jakob Maier
edit this page