Hacker News new | past | comments | ask | show | jobs | submit login
Ghost 1.0 (ghost.org)
226 points by pieterhg on July 27, 2017 | hide | past | favorite | 94 comments

And, four years later, they still have not fulfilled their kickstarter promise of the Ghost Dashboard. This was the most requested feature on their public trello roadmap before the card was deleted one day. Over the years there have been many inconsistent messages around this feature being worked on, then delayed until Apps, then eventually forgotten. Maybe this was the right decision for the company, but certainly a case study in how not to manage public expectations and the danger of public roadmaps (you'll be held accountable by frustrated customers!)

I'm still a paying customer of Ghost Pro but migrating to self-hosted Hakyll static site. Ghost has grown to serve a completely different market than they originally set out to serve.

Here's a screenshot of the Ghost Dashboard [1] from the original Kickstarter campaign. As well as a mock video of the Dashboard [2]

[1] https://ksr-ugc.imgix.net/assets/011/492/835/b2e56fd9584d152...

[2] https://ksr-video.imgix.net/projects/487539/video-234630-h26...

Interesting. I saw Ghost when it was on Kickstarter and my mental model of it was still "That's the blog platform with the nice dashboard."

Guess not.

I did look at them again (Ghost Pro) last time I thought about setting up a blog, but there was no way to serve static files alongside posts. Anything that's not the text and images has to be hosted separately unless you want to roll your own Ghost server. If I ever get around to making myself a website I'll probably just use Pelican.

I use and can recommend Lektor. Development has stalled a bit, but it's eminently usable and good at what it does.

It is pretty easy to self-host Ghost though.

And it's even easier to not!

I'm sure I'm capable of managing a webserver, but it's one more thing to worry about that I'd just as soon skip.

I'm curious what Market they set out to serve and what Market they serve now - would you mind elaborating?

Their hosted version starts at $29/mo ($19/mo if you commit to 1 year), so probably not many personal bloggers there.

29?? Why is it so expensive?

Normally I would disagree with you, but it's running fine on my $5/month droplet. So... I'm saving $24/month because I know how to type "npm install."

What do you mean? I don't see anything on their site about being able to self-host it.

You can find out more info about self-hosting and how to install 1.0 in the docs: https://docs.ghost.org/docs/getting-started-guide

Digital Ocean also has a droplet with a pre-1.0 version pre-installed and ready to use.

I think the parent comment is referring to the open source code which you can self-host for free. You just need to pay for the metal/cloud that runs it.

See: https://docs.ghost.org/v0.11.9/docs/getting-started-guide/

you manually set it up? its one of the pre-configured images!

Honestly, I didn't know that, but I set it up quite some time ago. And it wasn't that painful. :)

Having automated security updates, backups and support has value though. Every server you have to admin is overhead.

DO has a preconfigured image but last time I checked it out it was pretty out of date.

Remember back when Ghost's slogan was "Just a blogging platform?"

I've been following them off and on for years, because I liked the notion that it'd be good to create a modern version of WordPress that focused on blogging. But they've swept that vision of Ghost under the carpet -- excuse me, they've pivoted -- to claim:

Ghost was founded in April 2013, after a very successful Kickstarter campaign to create a new platform focused solely on professional publishing."

And, okay, but maybe they should remove the link to that Kickstarter page, given that the word professional* doesn't appear on it once. Yes, they say "Ghost is a platform dedicated to one thing: Publishing," but they go on to say "Ghost allows you to write and publish your own blog," a use case that is, to say the least, significantly downplayed by their current messaging.

I wish them well in Creating The Future Of Publishing™, I guess. Meanwhile, great application idea: maybe someone could create a modern version of WordPress that focuses on blogging.

(Yes, Jekyll Hugo static site generators woo, but for people who are not HN regulars, having something you don't need to build and deploy from the command line is a nice thing. I went with WP for my new web site because despite my sincere belief that WP's internals are a series of dumpster fires connected by require() statements, WP's dashboard -- and its API -- are pretty useful. Ironically, from what I can tell Ghost is way behind on both of those fronts, even at 1.0.)

Anyone knows some light weight Node JS based alternatives to Ghost?

Express and a weekend with Google.

If I were to switch off Ghost, I'd do a static build with Gatsby.


> we've marked Ghost 0.11 as a Long Term Support (LTS) release. We will continue to provide maintenance and security updates for Ghost 0.11 for the next 6 months.

What's the lower bound on labeling something "long term support?" If I recall correctly, Canonical introduced their LTS releases, which are supported for five years, to address concerns about their six-month cadence.

Phew, tough crowd. We use Ghost for our company blog. It works great! Spun the new editor up locally and it's pretty slick; I'm excited to use it.

Nice work, Ghost Team. Only gripe is the electron-desktop application; Byword integration with Ghost would be preferred, or a method of using a well integrated non-electron native application, if Ghost isn't too keen on cooking one up -- which, I understand.

So wait, why is everyone hating this product? I installed it and thought it was pretty cool (though I didn't keep using it beyond one post, on how to install it!).

On-site live Markdown writer/viewer, easy publishing... seems like a pretty simple system for a lightweight blog.

Yeah, I'm not sure either. I've been using ghost's hosting for years, and haven't had a single problem with it.

I've used Ghost for a number of years now, both self-hosted and using their hosted service (for both business and personal uses!). So I suppose I fit the complete matrix of their target user.

I'm pretty excited about this new release - the editor has always been nice but I'm thrilled to see they're investing in improving it, and I'm also unreasonably happy to see a dark theme added.

Mostly, I'm just happy to see that they're working on it and that the changes are directionally correct. It would be easy for them at this point to start making mistakes, but I think they've been fairly good at figuring out what people use Ghost for and responding to their needs accordingly.

The team has also been quite responsive when I've submitted support requests, which is always an extra plus in my book.

More technical article worth reading: https://dev.ghost.org/ghost-1-0-0/

> We are also now defaulting to MySQL for production blogs as a future-proofing measure.

Oh FFHS, must this scourge infect everything?

And there's no Docker image for 1.0 up yet.

> Code that automatically works for MySQL & SQLite often needs special modifications for Postgres

I find this hard to fathom since SQLite is generally closer to Postgres than MySQL is to anything else:

> I wrote SQLite, and I trust Postgres to be more ANSI conformant. I used Postgres docs as reference when developing SQLite.


They have their own installer now, that must have taken a _lot_ of work. I think they'd have been much better served by producing a Docker image and telling self-hosters to use that. Would have been easier, much more portable and less errorprone. As it is, the official Ghost image leave a lot to be desired.

I'm 100% not going to be installing it on my bare server. If they don't come out with a Docker image themselves, presumably someone else will (or I guess I'll make my own.) But it's definitely not running uncontainered.

You guys should follow this issue: https://github.com/docker-library/ghost/issues/65

Looks like the Ghost team is welling to share an official Ghost Docker image after all :)

The thing is, it's not as easy as it sounds - take a look at the issues on the official image :(

More info on the new CLI / installer here:


Sadly this does not appear to work well with Alpine. I get a message about needing Ubuntu 16 to run or I can try using a different method "ghost install local" that requires Yarn instead of just NPM. I like Yarn, but requiring seems silly.

Trying to build this with Windows during the beta phase left me with plenty of issues as well. They do have a good Slack channel though & are active on GitHub, so kudos to them for always being responsive.

Hosting your own version has also always been a bit of a pain when wanting to use Docker on AWS or Azure. For example, you probably want to store your uploaded files in an S3 bucket or similar. That requires adding some node modules & doing minor configuration. I think it's safe to say Ghost would rather make it a bit painful to host this on your own.

If someone is looking to create the next Wordpress, Ghost is a great place to start. Just like Wordpress they started out with a focus on being the best CMS for blogs. They have a great platform but it is missing a lot of core features that are important to bloggers. If anyone is interested in doing this, I would be glad to chat.

Good news! It will be supported in Alpine Docker base image. See for yourself -> https://github.com/acburdine/ghost-1/blob/09ff7191fd56d53bab...

What were they using before, and what's wrong with MySQL?

Postgres was an option for production along MySQL and SQLite3 was suggested for development instances. Sqlite3 is still supported.

The mentioned why they dropped it here: https://dev.ghost.org/dropping-support-for-postgresql/

> Without active community support, Postgres has always been, and always will be a second-class citizen. For that reason, we are dropping official Postgres support from Ghost core.

This is incorrect, Postgres was always second class. I know because I tried my best to keep it running on postgres for months, back the 0.5.x days, and it was always a source of frustration.

What kinds of problems did it have? Why is it so difficult to support MySQL and Postgres at the same time, and why would MySQL be prioritised?

I answered this question in as much detail as possible in the blog post I wrote at the time (which was also linked in the above comment) https://dev.ghost.org/dropping-support-for-postgresql/

> why would MySQL be prioritised?

"Because it's easier to slap a system together on MySQL". Which, to be fair, it is but that's not a good thing when you're talking about data.

Probably not that - but Ghost was born in many ways as "a better wordpress" (or a not batshit crazy mess of old code and not properly namespaced plugins and themes).

The model it replaces/improves on is self-host on shared-hosting web hosts. That used to be php and mysql - I guess they kept mysql, even if nodejs doesn't lend itself to the same type of shared hosting as php does (in fact, neither does php, but that's a battle for another day).

Anyway, many hosting services will throw in a database instance on a more-or-less well-managed mysql cluster - at a minimum there might be some semi-regular backups of the database, with some automation for doing restores (and with more than a bit of luck, they'll keep snapshots, so that the sql injection that wiped your database haven't resulted in all-empty backups by the time you realize).

I don't think it makes much sense, but I doubt it is because "postgres is hard, mysql is easy".

Why is it easier though?

Because it was a lot easier to deal with permissions, you could write "SQL" rather than SQL, it was very lax with SQL keywords as table names (ie. you could create a table called 'user'), replication didn't involve selling your soul to several devils, etc.

It's like Rails - it's easy to slap something up but once you start using it in anger, it requires all the handholding and effort.

You're correct. I've edited my comment for clarity.

> what's wrong with MySQL?

After many years of security issues and its general inability to be a good database, I refuse to install it on any of my own boxes. If I need something heavyweight, I'll use Postgres; otherwise it'll be SQLite - both of which manage to be more secure and competent than MySQL.

> inability to be a good database

Judging from shitloads of successful companies and projects running MySQL in production I'd argue the inability here is with the developer. Can you substantiate your claim or is your dissatisfaction just rooted in your inability to run a MySQL server?

Or... perhaps those companies are just able to paper over MySQL's deficiencies at a lower cost than switching to Postgres with a product that's already in production. MySQL is very, very well-documented to be a poor database engine that does some terrible things with your data without warning.

There's several good alternatives - Postgres being free, MS SQL Server being a reasonable paid-for option, and there's Oracle and IBM's database systems at the high end.

One of the only reasons to develop a new project for MySQL (assuming your developers are at all capable of writing queries for Postgres, which is hopefully the case) is that you know your deployment environment is going to have MySQL. Which is probably the case here - LAMP is still a popular stack among PHP developers, so there's a very good chance that anyone wanting to deploy Ghost already has a MySQL server.

Run this query on both MySQL and Postgresql, should explain it all: SELECT 0 = 'banana'

MySQL has a historical record of fast then correct. Much of this has been fixed over the years, but scars still shine on the skin of DBAs and sysadmins in many many places.

Also, big appeal to authority here, many successful companies do silly things with databases.

Having run MySQL servers and suffered the problems for many years before I finally gave up, I don't think it's my inability that's the issue here.

As a counterpoint, many successful companies run PHP in production but I don't think anyone would claim that means it's a good language.

(One example of where MySQL lack{s,ed}: Postgres with a functional index on a field handled the exact same query on the exact same data a couple of orders of magnitude faster than MySQL on the exact same box.)

eh, quite a few people say that the later php versions are wonderful to work with.

not talking from experience though, never used it for anything remotely serious.

This post from a year or two ago is a pretty good summary of what's wrong with MySQL:


The original default was actually SQLite3

They mention building their new editor on this: https://github.com/bustle/mobiledoc-kit

Anybody have experience with it?

Mobiledoc dev here. Mobiledoc is used at Bustle (who funded initial development) on two properties, at Upworthy, Daily Beast, and on several other sites. We're extremely proud this work has also been adopted by Ghost and hope to continue working with them for a long time :-)

One of the benefits of Mobiledoc is that we provide a documented and versioned file format for serialized documents. This allows developers to share renderers for Mobiledoc content. Bustle for example publishes Mobiledoc articles to it's own HTML, to Google AMP, and to Apple News.

Mobiledoc also supports runtime-customizable "cards" for rich content. For example a writer might add a video to an article- but for each rendering environment the runtime version of that card must be different. The cards API allows developers to offer custom editing and embedding interfaces without breaking the general text editing interface.

Try it out and let us know what you think. You can join our Slack: https://mobiledoc-slack.herokuapp.com/ or find me on Twitter as @mixonic.

Yeah, it's the "card" functionality that appeals to me. I was planning on building something using slate.js but Mobiledoc sounds like it will fit my needs. Thanks for responding, I'll check things out.

Is there a roadmap for Mobiledoc available anywhere? I vaguely recall seeing a 1.0 feature document at some point, but development seems to have slowed from looking at commits.

So, this is so weird. That link shows everything blurred. Windows 10, latest Chrome. [1]

1: http://imgur.com/XmquYMF

The Koenig editor looks a lot like the Medium editor. Bravo. Looks very cool.

(Can it output static content? Ghost's fast, but HTML's faster. :) )

Ghost renders static HTML and includes relevant cache headers on it's responses so if you have a cache or CDN in front then it's pretty much indistinguishable from static HTML :)

I keep wishing Ghost would produce static content

On my Ghost blog, I use Nginx to cache the pages that Ghost outputs. It works very well.

I really wanted to like Ghost. I self hosted a blog for a couple years (didn't use that much) and really enjoyed tinkering around with the JS and deploying some custom code. But I just really felt like having no metrics was a huge disappointment; not that I would have garnered tons of views but it still rewarding to see them. I once had Blogger account where I posted some random iOS learnings and one of the posts actually got a lot of views, which was really cool to see.

Seeing this 1.0 release and then going to the roadmap board and seeing https://trello.com/c/rQL1Kiyx/61-post-analytics that the analytics is still in the backlog is disheartening. Maybe some users didn't like the editor, but I found it to be sufficient. So here we are two new editors!!! and no post metrics...

Install Piwik?

Google Analytics works fine for me.

Really impressed with the update, and really excited about the new Koenig composer. Having built a CMS at my news startup (edsurge) I know firsthand the pain that comes from composers that use html as the document storage model, rather than a more flexible (and recompilable) intermediate format like json.

I've long liked the Ghost approach, but some of the execution (composer, themes, and lack of self-updating) has been seriously wanting. Looks like 1.0 fixes these points.

My big gripe with 1.0 is the default Casper 2.0 theme. They've decided to include one of the most persistent anti-patterns on blogs of adding a fixed header sharing bar [1]. Mobile devices already have both sharing and scrollbar functionality, making the header both redundant and actually worse UX, since it takes away valuable reading space. It's totally for the benefit of the blogger and chasing a trend at the expense of the reading experience for the user, all to get a few extra shares. This has been covered before [2].

My view is defaults like these are so important in encouraging best practices and setting expectations. Although its only on this one theme (and can be disabled easily if you dig around and customize), I imagine other themes will dutifully copy the pattern, assuming its how the Ghost experience should be. From the outset, Ghost was about 'just a blogging platform', free of the cruft of Wordpress - a minimal expression of what blogging should be. This sharing bar is not that.

Still, kudos to the Ghost team for shipping 1.0. So many good changes.

[1] https://twitter.com/nickpunt/status/890641710488756224

[2] https://daringfireball.net/2017/06/medium_dickbars

There is no need to cry about this. Casper has been migrated to Ghost 1.0 as well.

You basically have two option now: https://github.com/TryGhost/Casper/commits/master

Have fun :-p

Were I to push a change to Casper, my sense is it would be rejected, as John O'Nolan (the Ghost maintainer) responded to the tweet I linked with:

> "It’s really not an anti-pattern. And it can be disabled with literally 1 line of code"

Since we disagree about whether these bars are good or bad UX, I believe that'd be a non-starter. And although it can be disabled, it adds unnecessary friction -- defaults should encapsulate best practices. As Ghost is a blogging engine that should appeal strongly to less technical users (by being simpler and better UX than wordpress), having to manually download, edit, and reupload a theme seems to not be in alignment with one of the key value propositions of the product. I doubt most users even change the default theme, and that's okay - frankly, that's a sign that the product is really good.

Since you're new here (or at least your account is new), HN is a community where we regularly discuss things like the scourge of downloading 5MBs of javascript in order to view a single news article, the importance of sane defaults, or other specific issues related to design and tech. It seems pedantic but its a place where people care about such things, and we don't typically tell people they're crybabies when bringing them up.

Whoa, easy there on the css effects. Might come out a bit silly otherwise.


(No, there's nothing wrong with your eyesight - this is a 100% crop from Chrome.)

I wish you could just run ghost locally and then publish a generated static site. I actually much prefer the Jekyll flow to ghost but the core ghost ui and functionality are great for less technical bloggers. It just seems like a waste of time and money to be running a node app to serve what are essentially static pages

C'mon now, Ghost was a scam! The guys took like 200K+ and if you add all the extra from their pro services you will go crazy. All these money for what? 4 years of development and a buggy heavyweight platform. Give me 200K and I will personally code it way better in 6 months or less without any bugs and shit.

I'm still not sure about the re-work of the Ghost platform, it feels way more opinionated and I liked the ability to pick and mix components. However the Ghost CLI is a step forward.

Read my quick test-drive and try out 1.0 in Docker in 5 minutes: https://blog.alexellis.io/try-ghost-1-0-in-docker/

Why is this markdown editor better than Medium's? It probably has a few more features but the design and UI looks like a clone of Medium.

LinkedIn also uses a similar WYSIWYG. This design has been around longer than any of these companies have been using it.

What separates this is that you won't just get a dump of HTML from the editor. You'll get the content split into JSON https://github.com/bustle/mobiledoc-kit/blob/master/MOBILEDO...

This is beneficial if you plan to use your content in more than one place. For example, maybe the content is used on multiple websites, pulled into an e-mail newsletter, displayed on digital signage, integrated into an app or news services outside of your control. If you're interested in this idea, I suggest searching for the terms COPE or decoupled CMS.

Headless CMS is also popular term

Is there way to automatically migrate a pre-Ghost 1.0 ? (like using APIs instead of clicking through a UI?)

on a side note, does anyone know how to get that text effect on the headline image (that says ghost 1.0)? Is there a common pattern?

Looks like a "paint" font on top of a filtered stock photo


I looked at it once last years and it is really easy to you and very nice designed. I like it.

still no auto upgrade??? :(

Sure, this release includes Ghost-CLI, which enables auto-updates for the first time. Details here: https://dev.ghost.org/ghost-1-0-0/

I love that nowhere in this post do they explain what Ghost is or who their customers are or any of that. At first I thought, I guess, IA Writer competitor? Then, maybe, 2017 Wordpress alternative? Super unclear.

I'll consider using this platform when they move away from monolithic Ember.

How does their choice in front end tech make a difference from a user perspective? If they'd built the same thing in Angular or React, it'd still function the same way.

It depends a whole lot if you are releasing the software as open source and want other developers to contribute to it. That is what they have done.

Yeah, that's why Ember is so great - any developer who is familiar to the stack can contribute as there are standards and patterns which are consistent across platforms, Ember is also the perfect fit for a large and long term project which is constantly evolving because of the backwards compatibility.

The other consideration is that Ember is a community driven project and isn't beholden to some large corporate monolith.

My bad, from your top comment I assumed you were commenting from a user perspective, not a contributor perspective.

I rather hack my own blog engine in PHP https://github.com/lucianmarin/instanote rather than using Ghost.

Your own site (https://notes.lucianmarin.com/) is terribly designed. Not in the visual aesthetics, but in function.

The subdomain "notes" and the tag on the project "Note keeping done in PHP 5.2 and JSON " allude to it being a note taking application. It is a blog, though.

And it's not just a blog, it is a linklog, yet literally nowhere, visually or otherwise is that indicated. I clicked on the title of a post expecting it to load to, well, a post, but instead I was redirected to another site completely. You commentary is at best bleak and doesn't really explain or comment on the subject you're linking.

So, in all honesty, I trust ghost more than your project. You hack away though, good sir.

Thank your for spaming HN with your project.

Why the snark? I see this happening everyday here. The only difference is that people also use "shameless plug", or something like that.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact