Ghost debuted in April 2013. It’s focus is on “professional publishing”. They refer to websites as publications. It’s actively developed by a non-profit foundation and it’s open source. All good.

It’s built in Javascript on top of Node.js using the Handlebars templating engine for its presentation layer. Content is stored using MobileDoc format.

When I installed a local copy of the current version (2.8.0) to take it for a test drive, I ran into an issue where it wouldn’t start after the install. It took a few minutes to figure out that the issue was an older version of Node, which once updated to the recommended version (currently Node 8.x), cleared the way to a smooth start.

Once up and running, the experience of getting around in the CMS was about as intuitive as one can ask for. The editor is, hands down, the easiest I’ve ever seen. Easier than the old WordPress editor, and one can see where some of the Gutenberg styling has been borrowed from the Ghost editor, except that this one really works.

The controls for both pages and site settings are laid out where you can find them easily, and are pretty much self-explanatory. Installing the sample data gives you a tour of the basic concepts in 7 short introductory posts. Once you get through them (it only takes about 15 minutes to read them all) you’re up and running. I pretty much fell in love with the experience within the first few minutes.

From a development perspective, the code is beautifully organized, and the documentation is thorough. Within a couple hours, I’m able to find my way around the templating system, the data structures, create custom routing (for setting up custom sitemaps, etc). Within another hour or so, following the well-documented source code of the included sample theme, I’m able to lay out the basics of a new custom theme. Docs are available for using ghost as a headless CMS with REST API endpoints.

For a site that is about publication (what Ghost was designed for) this is, hands down, the best thing I’ve seen in a long time.

That said, Ghost does have its limits.

If you’re running a blog and want to have open comments, you need to integrate it with a comments service. Disqus is the one recommended as being the most common choice. Discourse is another that appears to be a popular choice, especially if you also need a forum or discussion companion piece.

E-commerce is not supported. At least not within Ghost itself. So this is probably not the CMS you’re looking for if you’re trying to set up an online store.

It’s API allows it to be extended with any number of other online services – anything you can run through a web hook, embed in an iframe, or inject in a script. But all these things are just that: integrations with other platforms, none of which are handled natively in the Ghost CMS itself.

On one hand, this is understandable. Ghost focuses on publishing. What it does, it does exceptionally well. But it’s not trying to be all things to all people. That means that you can’t do all your online business in one place. You’ll use Ghost for your publishing, and you’ll use Discourse (or whatever) for your social stuff, and maybe Shopify for your sales.

There seem to be plans for expanding the range of Ghost-specific add-ons (Ghost Apps, as they’re called) that may eventually start handling some of these things. But they are not to that point yet.

The beauty of it being so simple is also one of it’s drawbacks. What’s there is highly customizable. But if Node, Handlebars templates and custom routing with yaml configurations scare you, you won’t be able to take advantage of it. (Or, you can hire someone who is comfortable to do that for you.) The platform is developer friendly; but it will require some developer chops to actually build it out the way you want it. “Developer friendly” does not mean (as it often does in WordPress) that you can just install a plugin. There aren’t many (if any) readily available such things. You have to know something about code. But for someone who knows what they’re doing, it’ll be a pleasure to work with.

That said, there are a couple dozen (as opposed to many thousand in WordPress, for example) pre-fab themes you can purchase from various vendors. Your mileage may vary.

The other limiting factor around Ghost is that it’s not going to run on a lot of popular shared server hosting plans. Most of these plans are set up for more traditional server-side scripting languages (mostly PHP). Ghost runs on Node. I asked my go-to hosting company, SiteGround, a couple years back whether they had any plans to allow node based platforms on their shared hosting. The answer was, no. (I could set up anything I wanted, though, if I bought a VPS plan.)

So hosting a Ghost site means either hosting it with the Ghost foundation. Pricing starts at $29/month. If you’re a serious blogger, that’s probably worth it. And hosting with the foundation helps pay for more development, which can only help make good thing better. And, since they take care of it, you don’t have to worry about updates, security and all that other server-side stuff. You can focus on your publication. Which is the whole point.

If you want to go it on your own, you can install it on a DigitalOcean droplet, or you can run a Docker container on your own VPS. Or you can install it on any VPS running Ubuntu Linux with a minimum of 1GB memory. The Digital Ocean 1GB droplet is currently $5/month.

In all, I have to say I liked it a lot. I could happily run this blog on Ghost. Someday, in the not-too-distant future, I just might.

See also the follow-up to this review with a few added cautions.