Jekyll Originally, I had decided to locally host a Jekyll install instead of running through Github Pages. This was actually a pretty bad idea. Not only did I have the added complexity of patching the VPS, but I also had to maintain things like SSL certificates. I also had to run a reverse proxy from NGINX in order to serve SSL. This was pretty bonkers for a static content blog so I decided to go with another CMS.
The Idea There are two main difficulties I fight with personal projects: lack of documentation to keep me focused and getting overwhelmed with scope. So I tried to tackle both problems with a relatively simple solution. My idea is to treat projects like two week sprints. I will have a general idea for a project I will want to work on for two weeks. From there, I can reevaluate if it’s worth my time or if I want to pivot to another goal.
Why rebuild the blog? Recently I migrated my personal blog from a self hosted Jekyll install to Pelican. I am a big fan of Pelican. Jekyll seemed to not want to be self hosted. For example, in order to serve an SSL certificate, I had to run a reverse proxy from NGINX. Similarly, I wanted to reduce unnecessary complexity. So, in the process of redesigning the blog, I decided to also reconsider hosting.
Personal Perspective I certainly had a lot of fun setting up the install and it definitely reaffirmed my love of Cloudflare. A lot of the process was very intuitive and there was ample documentation. My favorite part of the platform is how forgiving it is. Working with the website was a breeze. I think some of the difficulties I had were working with IPv6 (I don’t currently have an address) and having the railgun listener allow inbound connections.
Bash Script Before I present the script, I would like to walkthrough my thought process and present some of the decisions I made. I ultimately wanted something relatively portable since I would be running it on a machine that had an IPv6 address. I also wanted something relatively lightweight since it’s a fairly simple task. Due to that, I decided on using bash and curl. This script assumes that you have curl and other basic UNIX tools installed.