Is Ghost hard to install?

I guess in the developer world I could consider myself as a dual-wielding character. I do WordPress websites at my dayjob to the point where I'm uncovering bugs in core (not to mention some of the big plugins we're using), and I'm also a core dev on Ghost. That's two publishing platforms I have under my belt. Note that I have not used the term "CMS", because Ghost is not a CMS!"

I get to witness the migration of some people from WordPress to Ghost, and along the way, the frustrations of said people.

One of the things people who have failed like to point out is that Ghost is hard to install. It's not harder than WordPress however.

What makes WP easy?

You have MAMP. It's easy, it's a server that already has PHP, MySQL, apache, everything you need to run WordPress. All you have to do is create the database, copy some files, start MAMP, and off you go. However, have you tried to install and configure PHP, MySQL, apache by hand? On a Linux? Using a terminal? No. If you did, you'd know it's absolutely living hell to get it right. And once you have a version of PHP, updating that isn't straightforward either.

Other people have done the hard work of installing PHP, MySQL and apache for you. That's why it's easy! (h/t halfdan)

Node doesn't have its MAMP equivalent to my knowledge, so you do actually need to set that up manually in most cases.

There is a HUGE difference between using MAMP and copying WP files and filling out a bunch of fields vs having to install node (the correct version), making sure the same version is used on both root and non-root accounts, and configuring nginx.

That difficulty however does not, in any way, reflect on Ghost.

Once you do have node installed, Ghost is a question of copying a bunch of files, issuing npm install and npm start --production, and visiting http://localhost:2368. Note that you do not have to set up or supply any database info whatsoever (unless you want to and know what you're doing).

Also, while we'd (as in: the people who develop Ghost) love to help setting up your environment for Ghost, ultimately there are a million different variations on doing that, and we have no idea what yours is like and chances are we can't help. We can help with Ghost, but not the environment.

Also read: Don't get a VPS by Fabian Becker

*The environment

That said, here's the conceptual run-down of what you need on your Linux box:

  1. Have git and curl or wget
  2. Have a user account, that is not the root! bower is used for Ghost, and bower doesn't like being run as root. It's also a security risk. Have a non-root user first.
  3. Log in to your linux with the non-root user. We are going to use this user for everything.
  4. Install nvm. Trust me. It makes life easy. Instructions on how here: https://github.com/creationix/nvm. You can run the command on the home directory. To get to the home directory, just type cd and press enter. You should see this: $ ~. This is where you need to run the curl/wget lines (one of them, choose one! Usually the curl works). Restart the terminal. (log off and on again)
  5. Once that's done, and you've verified it works by running nvm. If it says command not found, something went wrong, try again.
  6. Next, install node: nvm install 0.10 and then make sure it's using the latest by default: nvm alias default 0.10.
  7. node -v should now give you the latest version of node. At the time of writing this post it's v0.10.31. Note that 0.11 does not work.

And from here, it's the usual install procedure, still as the non-root user. Configuring nginx / apache is up to you however.