Ghost 4.0 - Really Terrible for Personal Blog

I’ve been using Ghost since 2014. It’s been good all the way, until version 4.0.
The theme update breaks some custom code injections. OK, we can just use the 3.x theme to work around this.
The worst thing is all those “subscribe” buttons: please, we just want a place to write something. We are not running a commercial blog. I didn’t find an option to hide those things, even if I use a custom theme.
Luckily I’ve got a backup so I’m able to downgrade back to 3.x. Maybe I’ll reconsider upgrading to 4.0 if this option is offered.
I’ve been using Ghost for many years and this update really makes me feel bad. If necessary I may need to switch to other blogging platforms like Hexo. I understand that Ghost is profitable because of commercial customers, but please, give us an option. A clean, simple yet powerful blogging platform is what we personal bloggers want, not this commercial-looking thing.


Exactly. Ghost is targeting commercial side lately. It’s now becoming Wordpress alternative instead of a blogging platform. I’m sure you can sell products in future with ghost like woo-commerce in ghost. In short, it’s not a blogging platform anymore and it’s bloated.


How to rollback to v3.XX ? Just run ghost update --rollback? But I meet this message:

Debug Information:
    OS: CentOS Linux, v7
    Node Version: v12.18.2
    Ghost Version: 4.0.1
    Ghost-CLI Version: 1.16.0
    Environment: production
    Command: 'ghost update --rollback'
Message: The database migration in Ghost encountered an error.
Suggestion: ghost update --rollback
--------------- stderr ---------------

SyntaxError: Unexpected token ...
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/var/www/ghost/versions/4.0.1/node_modules/ghost-ignition/lib/logging/GhostLogger.js:8:12)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)

What should I do next?

Sorry but I can’t help you since I’m using Docker. The process when using Docker is fairly simple: pull the v3 image and restart. Maybe you could try export and import?

I’m so regrettable that I didn’t use docker to deploy the Ghost. :sob:

I have to agree! I chose Ghost because it is modern, easy to set up and looks great as a simple, public blog. I want anyone to be able to read it and I’m not looking for people to subscribe or to make money of my blog. Will stick with Ghost 4 for a couple of weeks to see if a member-toggle is brought back. Otherwise I’ll downgrade to 3.x.x


Did you encounter any issues when you downgraded? I’m assuming the database structure is different since it was migrated to v4…so not sure how it will fare when going back to v3 :thinking:

I used my backup when restoring, so not sure what would happen if downgrade directly

I try to downgraded to v3.x, but failed. The message says: “The database migration in Ghost encountered an error.” :sob:

If you don’t want subscribe buttons you can remove them from your theme quite easily. For Casper it’s a case of editing two files to remove some small parts:

After that you have your standard blog with no member-related functionality visible if you turn off the portal button in your admin settings.


I heard John O’Nolan say on a podcast the other day that the aim for 4.0 was “no code knowledge required.”
This is great as a temporary fix for those that can implement it, but longer-term it really needs to be a toggle that any user can easily switch.


Hi Kevin,
considering that the membership is an optional layer, can you just wrap it in a logic that disables any reference to subscriptions and accounts for the bloggers out there that are not interested in this feature? Just as you do in the portal settings by toggling the portal button on and off.

I think it makes a lot more sense from a product design prospective and it won’t disappoint users that are not comfortable in touching the code.

Anyway, keep up the good work, this release is impressive!


Related: Add toggle to turn off members feature.


It’s not too late…There’s a lot of other advantages too for running an application in a Docker container in general. Not least of which is the separation of your data from the application itself, which makes for easier backups, easier recovery/deployment to other servers, etc.

It’s on my to-do list as well, though I’ve been using a Ghost Docker container for about two years for theme development, my production Ghost server still sits on a native install.

Agreed with the main argument here. It is regrettable that Ghost is being developed having exclusively subscription-based blogging in mind. The disappearance of the {{@labs.members}} in themes because memberships is enabled by default (but cannot be disabled), as well as the non customizable “Publish with Ghost” overlay that appears in the bottom left corner when one clicks on “Sign Up” are the two main signs of this. But it’s not too late.

Suggestions: add two toggle options in the Settings:

  1. “Enable membership” enabled by default, with a corresponding new handler for theme developers
  2. “Promote independent publishing” enabled by default. Like in the Newsletter design customization window. Could be accompanied with the same text as in the screenshot below, which actually helps in justifying why one would want to keep it anyway. Ghost is developed with a for-profit purpose (or at least a for-profit drive to finance further development), but a lot of people benefit from the open-source setup <3



Adding my voice to the chorus here. The v4 Dashboard and Membership pages are meaningless to many of us. Another person on the forum brought up legitimate GDPR concerns.

I second @tmlmt’s suggestion above. A toggle switch would solve this.

(The bigger, and perhaps more worrying question, is why this direction is being so heavily pushed. You could forgive us for remembering when WordPress stopped being a blog platform, and seeing the parallels here).


I sort of agree. For those of us not into newsletters there wasn’t much new with v 4. Which doesn’t mean it’s bad in any way, and I’m not ignoring the massive work done by the developers, etc.

I think it would be a nice gesture towards the users and customers if there was a roadmap of some kind. So we knew where Ghost is heading. The way it works now is we wait for a new version about once a year, and then it bumps us in the head and we never knew what was coming.

I remember long ago on this forum, there were requests for a return of the roadmap (there was one once). And the reply from the developers was a bit…arrogant. “We have more important things to do than writing roadmaps”. Maybe that’s true, dunno -



It looks like you got it removed?? How did you do it? I’ve been searching this forum for an injection.

nice Website btw!

Does your solution also remove the “Subscribe to…” box at the bottom of every post?
I have updated to Ghost 4.0 and I am running a modified version of the Casper 3 theme.
The extra buttons at the top of the page and the subscribe box in each post are the only problems I’ve spotted.

1 Like