How I Upgraded Ghost CMS from 5 to 6 by Changing a Single Number

Sometimes, DevOps life is all about intricate pipelines, perfectly orchestrated deployments, and ten layers of CI/CD checks. Other times... it’s about casually editing one number and watching your entire site level up.
The Situation
I was running my site on Ghost 5, containerized and deployed via Docker on DigitalOcean App Platform, with images stored on DO Spaces (S3). Everything was stable, beautiful, and... starting to feel a little too comfortable. Ghost 6 had just been released, promising shiny new features and under-the-hood improvements.
Of course, upgrading could mean carefully reading the release notes, testing in staging, verifying theme compatibility, and doing a slow, graceful rollout.
Naturally, I didn’t do that.
The "Upgrade" Plan
I opened my Dockerfile
and stared at the line:
FROM ghost:5
It looked so innocent. So simple. And then I thought: What if...
FROM ghost:6
That’s it. That was the plan.
The Commit
I edited the file directly on GitHub’s web UI. No local clone, no VS Code, no linting, no fanfare. Just raw, unfiltered confidence.
Commit message:
feat: YOLO Ghost 6 upgrade
The Deployment
Within seconds, DigitalOcean App Platform detected the change, built the new image, and deployed it. I opened my site, ready to see if I’d just bricked my blog.
Instead, everything loaded perfectly — except for Ghost’s ongoing obsession with having routes.yaml
and redirects.yaml
on the local file system, like it’s 1998. Even with my S3 setup, those files still need to be mounted somewhere — maybe I’ll just copy them into the container. Or better yet… magic S3 sync.
The Result
- Ghost CMS 6, running smoothly.
- No downtime.
- No complex migration scripts.
- One smug developer grin.
The Moral of the Story
Sometimes the simplest solution really is just changing a single number. But remember: this worked because my setup was already compatible with Ghost 6 — your mileage may vary.
Also, never underestimate the joy of deploying production changes from GitHub’s web UI like it’s 2012.
Next time someone asks how I handle upgrades, I’ll just say: "I increment integers for a living."