New Digs

New Digs

It turns out that my stint on WordPress was short-lived. One month, to be exact. I’ve restarted my blog on Ghost 6 with all the bells-and-whistles of Federation, built-in membership management, and native analytics from TinyBird.

Design

I’m using a new theme, Thesis*, *from Priority Vision, which reminds very much of a particular three-column Mac app that I’ve worked on. The pièce de résistance: the little satellite icon in the sidebar (from lucide.dev) representing NetNewsWire.

Federation

The website has its own Fediverse persona/mind of its own:

Membership

You can join as a member. It’s free. You get the ability to comment and access to some member’s only content (e.g., easy theme installs for NetNewsWire). I might send you the occasional email.

Miscellaneous

Most of the redirect work is done, so WordPress-style URLs (yyyy/mm/<post_title>) should redirect to the new Ghost URL. There’s no JSON feed with Ghost, so you’ll need to resubscribe to the new RSS feed.

I Can't Get Ghost 6 ActivityPub To Work When Using Ghost(Pro)

I Can't Get Ghost 6 ActivityPub To Work When Using Ghost(Pro)

A quick follow-up to yesterday’s post about the issues I faced getting Ghost’s ActivityPub—Network—functionality up and running: I’m now trying with Ghost(Pro) on my normal domain, and I’m still running into problems.

This time, the issue is slightly different: Network is enabled in Ghost’s settings, but when I open the Network tab I get an “Account suspended” warning. Looking in the Web Inspector, I see a host of 403 errors in the console, and using RapidAPI I get the following error:

{"error":"Forbidden","code":"SITE_MISSING"}

My current theory is that this is happening because my site was previously hosted on WordPress, which had ActivityPub enabled. If that’s the case, this could be an issue for anyone migrating between platforms.

Here’s hoping Ghost support can sort this out next week.

I Can't Get Ghost 6 ActivityPub To Work When Self-Hosting

I Can't Get Ghost 6 ActivityPub To Work When Self-Hosting

I love Ghost, but I simply can’t get their ActivityPub functionality to work in a self-hosted configuration.

I have done extensive testing:

  • using the New Install (i.e., Docker) option
  • on both Digital Ocean and Vultr
  • with this domain and fresh domain
  • using self-hosted and Ghost’s own ActivityPub infrastructure
  • using a Ghost admin domain at site.tld/ghost and admin.site.tld
  • proxying and not proxying using Cloudflare

Nothing works.

When using Ghost’s infrastructure, I receive Policy Violation errors. When I use my server’s own ActivityPub service at :8080 I get HTTP 403 errors. It’s a little disappointing.

However, when self-hosting, the native analytics with TinyBird worked as advertised and were really well presented, though not as in-depth as Plausible.

When not self-hosting I tried one of the fresh domains above with Ghost(Pro) and the ActivityPub functionality worked. It was marvellous.

I’m really hoping these issues are just early 6.0 bugs for self-hosters.

Some credit to Cathy Sarisky for helping the community.

Ghost 6.0 Ships

Ghost 6.0 Ships

From the Ghost blog:

  • Ghost publications are now connected with an open network. People can discover, follow, like and reply to your posts across Bluesky, Flipboard, Threads, Mastodon, WordPress, Ghost, and any other social web platform. Distribution is now built-in.
  • We’re introducing a native analytics suite for Ghost, giving you detailed insights into how your content performs across web traffic, newsletters, and member subscriptions – all in real-time, all from the same place you publish everyday.

I am sorely tempted to return to Ghost for these two features and the anti-faff nature of the platform versus (for example) WordPress. What’s keeping me on WordPress is the ability to customise RSS feeds and include a JSON feed. While I was able to do this in the past with Ghost, my customisations that enabled it were removed every time I updated to the latest Ghost version.

The Curious Case of Missing Mastodon Verification

The Curious Case of Missing Mastodon Verification

Verifying yourself on Mastodon is quite simple: just add the following to the <head> tag of your website:

<link rel="me" href="https://mastodon.instance/@username"/>

Then, add your website to your Mastodon profile, and you should be good to go.

That wasn’t the case for me.

I added the above link to the header—nothing. I added it to the footer—still nothing. I even tried adding the <a rel="me"...>version as a navigation link in both the top and bottom menus. No luck.

I left it overnight. Still no change.

Then I thought: If I’ve added my website to my Mastodon profile, I should at least see a Mastodon user-agent in the Apache logs. So, I re-added the website to my profile and checked again. Nothing.

Huzzah! A clue.

A quick check in Cloudflare revealed the issue: I had enabled Bot Fight Mode. I disabled it, checked the Apache logs again, and immediately saw Mastodon requests:

[10/Jul/2025:14:22:51 +0000] "GET /wp-json/activitypub/1.0/actors/0/followers HTTP/1.1" 200 4251 "-" "Mastodon/4.4.1 (http.rb/5.3.1; +https://indieweb.social/)"

Shortly after that, my website was verified.