I recently published my first blog post in almost four years. It turned out to be a less than straight forward journey, so I thought I’d share the adventures I experienced while venturing into the rabbit hole.
-
Search for credentials to the server where the only copy of my blog existed. Found them well hidden in an old 1Password vault.
-
Clone the Git repo of my blog from that server.
-
Write a blog post. This did not take as long as the rest of these steps.
-
Find out how to use Octopress 2. To be clear, that is an older version of a static site generator that seems to have been unmaintained for quite a few years now.
-
Remember my weird af deployment method. How to deploy, you wonder? From my laptop I commit the newly generated site, push to a remote repository on the server, SSH into the folder from which nginx serves the files (which is on the same server) and git pull. Genius.
-
By this point, the post was actually published, but I realized that the blog wasn’t served via HTTPS, which just feels unacceptable in the day and age of Let’s Encrypt.
-
As I was going to setup Let’s Encrypt, I also realized that the server was running Ubuntu 14.04.5, which was released mid-2016.
I’m not sure if I should give myself credit for telling my wife somewhere around this step that I would regret doing this.
-
Before upgrading I checked if there were any backups of the droplet on Digital Ocean. The answer was no. I enabled backups, but the first backup would not run until next morning, so they would not cover me right now.
-
Instead I shut down the instance and took a snapshot which I could recover from later, if necessary.
-
Upgrade server from Ubuntu 14 to 16 and then straight on to 18. What could go wrong?
-
Something went wrong. The upgrade broke an old site running on CodeIgniter 2 and PHP 5, which I had no intention of spending much – or preferably any – time maintaining. The problem was that only PHP 7 was installed now, which didn’t play well with the site.
-
I found an alternative package repository from which I could install PHP 5.6.
-
The version of CodeIgniter the site was using had an issue with PHP 5.6, so I monkey-patched the framework core files to fix the error. ¯\_(ツ)_/¯
-
No errors anymore, but the site was only displaying a blank page. After some searching it turned out to be a missing PHP 5 mysql package.
-
I was finally ready to set up Let’s Encrypt, which was already running for the site I had just broken. I upgraded LE and made sure everything was still working for both the new setup and the old.
-
Profit?
This is the kind of moment that reminds me of what working in tech is all about: perseverance and Google.
In unrelated news, I’m taking suggestions on which static site generator to use moving forward.