Goodbye Wordpress, hello Ghost (and ActivityPub)

I’ve been meaning to leave WordPress for years. It's such a capable platform, but also ridiculously overkill for my simple blog needs. I've been meaning to replace it with... something, for a long time. Something lighter, smaller, faster and preferably that ties well into federated social media. I’ve explored both WriteFreely and Micro.blog, but nothing stuck. But with Ghost 6, things changed.

I was actually a backer to the initial Ghost Kickstarter. It promised a writer-focused publishing toolm and they delivered on that promise, but I never switched. At the time, I was deep into podcasting, and the need for a blog just wasn’t there. But my podcasting days are (for now) over, and the thing I miss the most beyond hanging out with my old podcasting friends, is having a channel for thinking out loud. And with the demise of Twitter as we knew it, there wasn't much social media for me to hang around on, and I feel like I missed the boat to Mastodon and the other platforms.

But then Ghost version 6 launched, with ActivityPub support, which seemed like the thing I was waiting for. Something leaner than Wordpress, with federated social media features built in.

The official Ghost hosting seems great, but I quickly realized that it’s also quite expensive, especially if you want to dabble with customizing themes. Their lowest tier that allows theme customization beyond the default theme starts at $29/month. That's for sure more than I'm willing to pay. I asked Ghost about tiers for us individual small time bloggers, and they refer to others offering Ghost hosting. So I started looking around.

The closest affordable alternative I found was PikaPods, which hosts a bunch of open-source apps in containers, including Ghost. But at the time of exploration, they didn’t support Ghost 6, and offered no information on when or if that would be available. And I'm quite impatient, so I rolled up my sleeves and went the self-hosting route.

I spun up a small virtual server on Linode, using their $ 5/month Nanode plan. It’s the smallest VM they offer, but still meets the requirements for running Ghost 6.

II went with Docker Compose for simplicity and reproducibility. The stack includes:

I’d love to say I figured all of this out on my own, but no, ChatGPT held my hand through all this. I'm no developer, I know nothing about servers. I fed it all the documentation for ghost 6 self hosting and their community forum and took it from there. We did it two times. First using the Ghost CLI, which we got up and running fine quite quickly, only to learn the ActivityPub features of Ghost 6 only works when doing it with Docker Compose. So VM was scrubbed and we started over. Some small issues along the way to get ActivityPub to behave, but nothing a little prompting with some back and forth with terminal commands and logs to figure out the issues. All in all, the setup took about an hour.

And this is it. This is Ghost 6 running on a Nanode server. A clean, fast blog. no bloat, no plugins, no blocks, no Gutenberg editor. Feels refreshingly clean and nimble. Now I'll do my best to focus on content more than theming.