This website was last archived on the Wayback Machine on the 9th of June 2019. At some point, after that it went down, unnoticed for two weeks. Fixing my little corner of the internet was not a top priority, so I left it broken and dead, rotting on a small virtual machine in the ether.
Enter the last weekend of September, and I'm finally ready to tackle the task ahead. On a mad whim, I decided I wanted to upgrade my original docker stack of NGINX as a reverse proxy, Let's Encrypt Certbot, and Ghost to something more streamlined and robust. The streamlined wish comes from my belief that Certbot was a potential cause of the site breakdown to begin with, as well as the fact that three or four containers and a myriad of configuration files just isn't for me. The wish for robustness is simply an excuse to try Docker Swarm.
Setting up a Docker Swarm on DigitalOcean with Docker Machine was a breeze. I was going to keep Ghost and ditch NGINX as a reverse proxy and server for my landing page. In place of that reverse proxy I settled on Traefik, and to negate the reliance on Let's Encrypt and the automatic renewing of free SSL certificates, I decided to buy some of my own.
Setting up Traefik and Ghost on my new swarm took about 12 hours of trial and error, pretty much that whole experience being the negotiating of Traefik's documentation and architecture. I then spent another 6 hours getting Traefik's S3 integration set up so that images can be stored on an S3 bucket and served using a CDN. This saw me delve into the new realm of creating my own Docker image (awildedocker/ghost-with-s3) which while still needing some fine-tuning, works!
I also made use of DigitalOcean's new managed databases. On the previous deployment of this website I was using the most basic option available, storing all Ghost's posts and settings in its inbuilt SQLite database stored in a volume mounted in the container. Saving Ghost's data in a proper hosted database seemed like the next logical step.
In the coming weeks, I'll endeavour to make a post or two detailing exactly how I went about setting all this up, as well as detailing how to use my Ghost + S3 Docker image. I'll also, of course, aim to put out more content on this old corner of the web I call my brain dump, but as usual, no promises!