From IndieWeb

Ghost is an an open source CMS for blogging, general web publishing, newsletters, and paid subscriptions, and also a hosted silo at Ghost is written in node.js.


Ghost has both common CMS features and several others that make it an appealing self-hosting option:


There are many reasons people either setup or migrate to Ghost. Among those in practice:

  • migrate away from a silo
  • migrate away from more technical solutions (e.g. Jekyll)
  • setup a newsletter
  • setup paid subscriptions

See below for specific examples of all of these.

How to

How to migrate from Jekyll

How to convert a Jekyll blog to Ghost:

How to migrate to Svelte

How to migrate from Ghost to Svelte, thread:

"Took about a week of steady work to gain feature parity, but I've got SvelteKit generating a static site via Netlify, and Ghost has been replaced. What a robust community Svelte has. I found backup on nearly everything I needed, from date formatters to icon libraries to the modal sheet I'm using for subscriptions. It's exciting to have full control over my home on the web:" @danilo April 1, 2023

and add h-feed+h-entry microformats thanks to Kevin Marks suggestion and use of for validation.

See open source:

Indieweb Examples

IndieWeb community members running Ghost on their primary personal domain:

Other Independents

Other Independents running Ghost on their primary domain :

IndieWeb Friendly

The Recommendations feature (archived) is built on Webmention and displays incoming recommendations as a notification in the admin.


Signs of interest


John O'Nolan has expressed interest in supporting Webmention with Vouch, and a "modern replacement for pingbacks".

"... would love to see a modern replacement for pingbacks though!" [1]

"I hadn’t heard of Vouch before. That’s actually very compelling!" [2]


Notable articles about using, adopting, hosting, and migrating to Ghost:



Rejected microformats2 markup in default theme

In October 2013, Barnaby Walters sent a pull request to casper (the default Ghost theme) which added h-entry and h-card microformats2 markup, but it was rejected. John O’Nolan commented the following when closing the PR:

“microformats2 is a very interesting subject and one which we are pay close attention to. At this time though, we're not ready to recommend it as part of the default Ghost theme. We absolutely encourage you to use it in all your personal themes, however - and of course you are welcome to distribute a 'microformats2-enabled' fork of Casper!” [3]

Note: A follow-up post on the Ghost blog: said they "added meta tag output for, Twitter Cards, and Open Graph" - all oligopoly (schema), or silo-specific invisible meta markup.

In February 2017, James Duncan opened an issue requesting Microformats 2 support in the default theme.

"There's a pull request at #29 regarding MF2 support in casper, but it was rejected on the basis of MF2 being something undevelped. Three years down the line, I'm wondering if you'd accept that or an updated PR to support MF2 and Indieweb bits?" [4]

John O'Nolan rejected the request again, citing

"At the moment we still don't think that the microformats2 approach is the right way to go or will offer significant benefits beyond our existing structured data" [5]


"You're (both) very welcome to add microformats 1/2/any-other to your themes, but this isn't something we're going to include in the default theme at the moment. I have no opinion on any politics RE schema-vs-microformats other than that schema has a concrete use-case and benefit which justifies its inclusion :)" [6]

which suggests that a future request of adding Microformats support to the default theme will need to demonstrate a concrete use case.

  • The concrete use-case is sending and receiving rich webmentions like comments, likes, reposts. Since webmentions are under consideration, implementing mf2 should be clearly communicated as an essential part of that for the best UX.


Ghost has an API documented at The public API to retrieve post information appears to be documented, but the private API to write posts is not documented well. As of 2018-10-04, There is a note on the page about their current OAuth limitations which makes it difficult for third-party apps:

We're working on adding more standard OAuth flows for getting private access to the API. In the meantime, the only OAuth flow available is to use a standard user login to get a Bearer Token. Therefore, getting access to write data from 3rd party apps is not impossible, but is not ideal.

This article includes a sample of posting using the API:


  • criticism of billing practices
    • ". @ghost is ridiculous. if you don’t add a plan before the trial deadline, they completely lock you out so you can’t log in, can’t add a plan, and you have to write them to beg to be let in again so you could pay.

      does not inspire operational confidence." @amyhoy October 15, 2021

Lack of extensibility or IndieWeb

Lack of Micropub and poor performance

  • 2018-01-04 Johnathan Lyman: From Ghost to WordPress

    … No intention on supporting MicroPub. … Extensibility is non-existent. … Poor content organization. … Poor performance. …



Ghost was originally offered as a concept in reaction to WordPress and was self-described as:

  • An "idealistic and fictional concept for a WordPress-lite fork" [7]
  • A "lite version of WordPress" [8]

Early image introduction

The introduction to the concept of Ghost was purely an image instead of using text. Text images were addressed as first question in his FAQ.

Kickstarter campaign

Ghost managed to raise £196,362 of through funding through Kickstarter, with more sponsored after it had ended. This spurred the start of development

Transition from WordPress

It was decided early on that the WordPress PHP code was too convoluted and so they started from scratch.

Node.js was chosen for the platform, due to many benefits such the Node Package Manager and associated ecosystem. The templating code was kept very similar to Wordpress, using the mustache templating engine instead of PHP.


Ghost officially launched on 2013-09-19.

Transition to eating their own cooking

There was originally criticism that John O'Nolan (the founder of Ghost) has a blog that runs on Wordpress, instead of eating his own cooking. This was because Ghost was originally just an idea that was proposed, it took a while to make it.

As of 2013-09-19 he had a subdomain running Ghost at - which is was a good start but not yet eating his own cooking in the IndieWeb personal reliance sense: he was not yet running it on his personal (identity) domain at (which was running WordPress at the time).

As of 2014-04-12, moved to Ghost and is fully eating their own cooking.

See Also