Ghost
This article is a stub. You can help the IndieWeb wiki by expanding it.
Ghost is an an open source CMS for blogging, general web publishing, newsletters, and paid subscriptions, and also a hosted silo at https://ghost.org. Ghost is written in node.js.
Features
This section is a stub. You can help the IndieWebCamp wiki by expanding it.
Ghost has both common CMS features and several others that make it an appealing self-hosting option:
- blogging
- general web publishing
- newsletter
- paid subscriptions
- ...
Why
This section is a stub. You can help the IndieWebCamp wiki by expanding it.
There are many reasons people either setup or migrate to Ghost. Among those in practice:
- migrate away from a silo
- both to own your data and to avoid contributing to a platform that may host offensive or harmful content (e.g. Substack#Criticism)
- 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:
- 2017-09-05 Converting a Jekyll blog to Ghost (original https://pushpullfork.com/converting-a-jekyll-blog-to-ghost/ offline since ~2021 or so)
How to migrate to Svelte
How to migrate from Ghost to Svelte, thread: https://hachyderm.io/@danilo/110124959698749322
"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: https://redeem-tomorrow.com" @danilo April 1, 2023
and add h-feed+h-entry microformats thanks to Kevin Marks suggestion and use of IndieWebify.me for validation.
See open source:
Indieweb Examples
IndieWeb community members running Ghost on their primary personal domain:
- Thomas Fish uses Ghost on his personal site: guerillero.net
- John Ellison is currently using Ghost on his own site.
- ...
Other Independents
Other Independents running Ghost on their primary domain :
- John O'Nolan is running Ghost on his primary site http://john.onolan.org/ (eating his own cooking!) since at least 2014-04-12 (perhaps earlier).
IndieWeb Friendly
The Recommendations feature (archived) is built on Webmention and displays incoming recommendations as a notification in the admin.
- From a forum discussion (archived), it does not yet seem to be possible to show them on the public site.
Requests
- Feature request for Webmention support: https://twitter.com/_/status/1270078783337480192
- "Is there a webmentions implementation for @Ghost yet? Because I think it'd be great if there was." @stormgrass June 8, 2020
Signs of interest
Earlier:
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]
Articles
Notable articles about using, adopting, hosting, and migrating to Ghost:
- 2024-01-13 Molly White: Migrating from Substack to self-hosted Ghost: the details
- ...
Testimonials
- https://twitter.com/anildash/status/1075524026406191105
- "(And if you want a nice personal website, I’ll give you one for free. Just remix this. https://glitch.com/~ghost )" @anildash December 19, 2018
- Add yourself here… (see this for more details)
Issues
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: http://blog.ghost.org/structured-data/ said they "added meta tag output for Schema.org, 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.
API
Ghost has an API documented at https://api.ghost.org/. 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
- 2020-08-14 "I was building a new website for Post Apathy - until the petulant CEO of Ghost.org deleted my website"
- criticism of billing practices https://twitter.com/amyhoy/status/1449093879546843137
- ". @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
- ". @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.
Lack of extensibility or IndieWeb
- 2018-01-06 @carlesbellver: "…reasons to go back from Ghost: no extensibility, no 3rd party apps, no 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. …
History
Concept
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.
Launch
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 http://john.onolan.org/ 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 http://ghost.onolan.org/ - 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 http://john.onolan.org/ (which was running WordPress at the time).
As of 2014-04-12, http://john.onolan.org/ moved to Ghost and is fully eating their own cooking.
Open Source IndieWeb related projects and tools | |
---|---|
Topics | Why open source? • How to open source a project • Open for contributions • IndieWeb Principles |
PHP | b2evolution • CASSIS • Known • Falcon (portions) • p3k • stapibas • dobrado • Grav • Miniflux-legacy • ProcessWire • Reader Self • Textpattern • tt-rss • Twyne • TYPO3 |
WordPress (PHP) | Indieweb Plugin • Webmention • Semantic Linkbacks • Micropub • IndieAuth • Post Kinds • Syndication Links • WebSub plugins • See Template:WordPress for others. |
Python | Bridgy Fed • BeautifulSoup • Bleach • Bundle • django CMS • IndieWeb Search • IndieWeb Utils • kaku • mf2util • Nefelibata • ninka • Publ • python-indieweb • Red Wind • Requests • ronkyuu • Woodwind |
Ruby | Dark Matter • Feedbin • FrancisCMS • Micropublish • Publify • Ruby on Rails • Sinatra • Singulus • Transformative • webmention.io • Jekyll |
JavaScript | AerosolCMS • CASSIS • Ghost • Camel • IndieKit • Eleventy |
Others | Hugo (Go) • Firefox • NetNewsWire |