I finally found a reason to buy eliasbrange.dev, to give this blog a proper home. The setup through GitHub Pages was dead simple and SSL works out of the box. Fantastic! For anyone else interested in setting up their own blog, below is the high-level setup of mine.
While setting up this blog I wanted something that was as easy to work with as possible:
- I did not want install anything locally. Only local dependency needed should be docker/docker-compose.
- I needed a theme to start from, since my CSS skills are pretty darn bad.
- I wanted every push to master to be automatically deployed.
- I wanted a free hosting alternative.
I have used Jekyll before so due to that previous experience I decided to use Jekyll again in favour of Hugo. Since I’m currently on a journey learning Go, Hugo could have been a great choice but I wanted something up and running quickly.
When I first created my previous Jekyll page over at brulugames.se I did not spend any time creating a local development environment using docker, instead I used the Jekyll CLI locally for development. This time I did not want to install Jekyll and its dependencies locally so I decided to use the official Jekyll image combined with the following docker-compose.yml.
Setting up the local environment is now as simple as doing
$ docker-compose up
and then browsing to
--watch part of the command makes Jekyll automatically regenerate the blog if a change is made to any file. When modifying
_config.yml, which seems to require a restart, a simple
docker-compose restart takes care of that. Coupled with
stop_grace_period: 0s restarts are nearly instant.
My CSS skills are almost non-existent so I needed a solid theme to start from. After scouring through lots and lots of theme pages I settled with Reverie, which seemed to fit my requirements.
One of the reasons for creating this blog was that I was playing around with GitHub Pages and wanted to try it out. Since it is free and fulfills my continuous deployment needs it is a perfect fit. I also bought the www.eliasbrange.dev domain and GitHub Pages automagically handled a LetsEncrypt SSL certificate for me. How convenient!
While setting up this blog with the improved local development and CD I decided to revamp my old setup on www.brulugames.se aswell. There I used the same local docker-compose.yml to create an identical development environment. For hosting the page I decided to try out Netlify, and wow, it was almost too easy. The only problem I ran into was that the docker image I used had
2.0.2 and the Netlify image had
2.0.1 so it failed to use my
Gemfile.lock. A quick workaround was to remove the
Gemfile.lock from the repository and have Netlify regenerate it on each build. Getting a SSL certificate from LetsEncrypt was dead simple there aswell.
So now I have two sites with extremely simple development environments combined with continuous deployment, now I just need to fill them with content.
Over and out!