Self-Ghosting this blog runs on self-hosted Ghost

Hiran said Hugo would be simpler. He was right. I went with self-hosted Ghost anyway, for reasons that have nothing to do with the software.

Self-Ghosting this blog runs on self-hosted Ghost
Self-Hosting is an Addiction

Self-Ghosting: why this blog runs on self-hosted Ghost

Hiran and I share a birthday. We also share a long-running interest in CMSes: WordPress, Drupal, and a few hand-rolled HTML and PHP sites that are better left forgotten. We ended up working together at Quintype, which builds a CMS for newsrooms, so for a while it was literally the job.

Over the years, Ghost became the place we both wanted to work. What drew us was how they ran the company: their employee policies, the remote work, the way they thought about what a CMS should be. I applied a few times when something matched my skills, sideways at best. Nothing came of it. To be fair, I never pushed. I'd see a role, apply, and forget about it.

Life moved on. Hiran and I went to Kaleyra and built a CPaaS platform. After that I went to ZoomInfo, working between a newly acquired Indian startup and the corporate machinery on the other side.

Then I got christingeorge.com. I never planned to start a blog. I just had a domain, and at some point I wanted to host something on it myself, from home. Hiran, being the catalyst again, got me looking into it properly.

First I needed a static IP. Airtel offers one, in theory. In practice mine changed every day until they came and set up a fresh connection from the modem. That story, and the rest of my self-hosting journey, will get its own posts sooner rather than later.

Then the question of what to run. Hiran was against self-hosting Ghost. He's anti-maintenance, and his advice was to use Hugo or Jekyll and have nothing to patch. I was fixated on Ghost anyway, because of that old dream of working there. If I couldn't get in the door, I could at least run the thing in my own house.

So that's what this is. Self-Ghosting, if you'll let me invent a word. Ghost runs in Docker on a NAS at home, behind a Cloudflare tunnel. I had help. Claude did a lot of the Docker setup with me and walked me through the security side. Within minutes of the site going live, bots were already poking at it looking for config files.

Every guide I read said it was too complicated to run from home and I should just pay for hosting. They're probably right for most people.

Hiran has a point about maintenance. There's a database, a mail setup and a server to look after. The whole thing runs as a Docker stack in Portainer, and the Ghost version is pinned, so nothing updates until I decide it should. When I do, I change one line and redeploy. Backups run every night on their own, and I've already restored the database from one to check it works. It's still maintenance, but it's routine. Day to day, I expect it to feel a lot like WordPress.com, except I own everything underneath it.

I haven't really used Ghost yet. This post is the first thing I've written in it, so this isn't a review of the editor or the newsletters. I don't know yet whether I'll like them. I picked Ghost because it was an old dream, and now it's sitting on a box in my house, bricks and mortar.

And yes, I'd still love to work at Ghost one day.

But damn, I am stoked.