WordPress Killer? Welcome To Ghost (and How to Install it on a Raspberry Pi)
Keep blogging simple. Ghost is a new blogging platform built upon Node.js. Unlike WordPress, which has become a real behemoth of a CMS over the years and runs on outdated PHP/MySQL technology, Ghost promises to simplify things right back to where they began: pure, unadulterated blogging.
Ghost began as a Kickstarter last year – “it’s just a blogging platform”, they pitched. When £200,000 ($320,000) was raised for the open source project, they knew they were onto something.
Ghost is about simplicity. It’s not a full-fledged CMS: it doesn’t even include comment functionality. It won’t transform your site into a jobs board or eCommerce shop – it’s literally just a blogging platform. It’s a beautiful blogging platform, but that’s all it is. If you want something that can be mutated into any your heart can dream of, look elsewhere.
So what makes Ghost different?
- Preview pane and markdown editor. One of the most striking features of Ghost is the simple editing screen, consisting of two panels: one to edit in markdown, and one to preview the result. It feels like WordPress’ full-screen edit mode, if you’ve ever used that. Image uploading works by drag and drop, not complex upload dialogs.
- Responsive interface. Designed from the ground up to work responsively on tablets and mobile devices. And not just in a “we support mobile devices and touch events but doesn’t really work” kind of way, a la WordPress.
- * Beautiful dashboard. Ghost promises a whole lot of useful stats right there when you log in. WordPress promises this too, but woefully under-delivers.
That’s it. That’s the feature list. I’ve *ed that last one, because the Dashboard doesn’t actually exist yet: it’s planned for release around Christmas. So for now, you basically just get an editor, and the actual blog. Here’s a screenshot of the promised Dashboard to tide you over.
Hosted vs Self Hosted
Right now, Ghost is only available for testing in self hosted environments – i.e., “bring your own server”. Since it requires some complex server adjustments and root access, you can’t run this on shared hosting, either. At some point soon, they will begin to open up beta accounts for their hosted service – that is, a free blogging service much like WordPress.com . That’s not ready yet, however, meaning you’ll need a server of your own to try out Ghost.
I did initially plan to install this onto my Media Temple VPS production server, but so many things went wrong with that. This is understandable: both Node and Ghost are still in beta, after all, and my VPS runs an old version of CentOS. If you have a Raspberry Pi lying around, this is an ideal test platform to try out Ghost; alternatively, you can install Ghost on a free Amazon AWS instance, or just grab a ready-made BitNami virtual appliance.
You need to make an account at ghost.org before you can download the system. Go ahead and do so now. Once you’ve grabbed it, upload the complete ZIP file to your Pi via SFTP – I’m going to assume you know how to do that much.
Next, SSH to get started.
ssh email@example.com (or your RPi IP address) sudo su apt-get update apt-get upgrade
At the time of writing, 0.10.20 is the latest version of Node – it may have been updated, so do check. Adjust filenames and folders as necessary.
curl -O www.nodejs.org/dist/v0.10.20/node-v0.10.20.tar.gz tar -zxvf node-v0.10.20.tar.gz cd node-v0.10.20 ./configure make make install
Beware – that first make command will take at least a few hours.
apt-get install sqlite3 git clone git://github.com/isaacs/npm.git cd npm/scripts chmod +x install.sh ./install.sh
At this point you have an updated system with Node.js and the Node Package Manager installed.
unzip -d ghost ghost-[press tab]
By pressing tab, you’re asking Bash to fill out the rest of the details of the file name, saving you the effort.
cd ghost npm install
This will grab all the Node dependencies for Ghost. If you get errors about NPM not being found, try symlinking the binaries:
ln -s /usr/local/bin/npm /usr/bin/npm npm install
Now you’re ready to do some minor config changes.
cp config.example.js config.js nano config.js
In this file, your want to edit all instance of host: ‘127.0.0.1’ with your IP address, and port: ‘2368’ with 80. Hit CTRL-X, Y to exit and save.
to run Ghost. You can now access Ghost from any local network browser with the IP of your Pi.
You’ll know it’s working because if you’ll see resources being served from the RPi.
Though the initial user ID creation is extraordinarily slow – about a minute – the experience after that is blazingly fast. Behold the power of Node.js!
You’re thrown straight into a content overview, with a single post example to learn the basics of markdown. I wasn’t a big fan of markdown before using Ghost – I’d rather just type in plain text, then use the WordPress visual editor to jazz things up later. Once you’ve learnt the syntax it’s fairly simple, however, and I find appealing now. I especially love the ability to add screenshots later: just put a placeholder to remind yourself, then drag and drop into the editor at a later point. How long have we wished for drag and drop uploads in WordPress?
And that’s about it. You can view your blog removing the /ghost of the URL (or click the top left icon if you set the IP as the production URL). The default theme is pretty boring, but there’s already a marketplace to buy more.
I’m clearly sensationalising by saying Ghost is a WordPress killer: Node itself is still beta, as is Ghost, and the process of getting either installed on a production server is far from easy as of now. Still, Ghost does offer a compelling alternative for anyone who doesn’t want to deal with the complexity of WordPress for simple blogging. Such is the way with any popular system: as it grows, features are added, code complexity increases, the original mission is lost, and at some point a bright new competitor arrives offering something fresh. Ghost is that start up, and you should expect big things from it. For now, though, it certainly won’t be killing any WordPress.
If you’ve had a chance to try out Ghost, what do you think? Is it just a little too simple for you, or do you love that simplicity?