Tag Archives: Ghost

Ghost 0.4 Drops, Plugin API Slated for 0.5 Release

Ghost LogoVersion 0.4 of Ghost, the lightweight Node.js blogging platform, went live this month. Some of the more interesting features include support for static pages, a new way to quickly edit posts by appending /edit to the URL, support for date-based permalinks (e.g. /2014/01/25/example-post instead of /example-post), support for uploading SVG images, and the ability to put Ghost in a subdirectory.

With this update out of the way, we’re one closer to seeing the plugin API. That’s currently scheduled for version 0.5 (to be released sometime this spring).

The ability to extend Ghost is, in my opinion, what will make it a truly excellent platform. I really like the editor—which is reason enough to start using Ghost—but I can’t switch any of my sites over (not even my personal blog) until it’s possible for me to add in some features Ghost is missing. I do a bit of linkblogging on my personal blog (Daring Fireball style, with headlines that link to external sites), and Ghost doesn’t offer the ability to do that out of the box. I also have a couple posts on the blog that feature image galleries, originally with WordPress and later through my Jekyll plugin.

Installing Multiple Ghost Blogs Behind NGINX on Ubuntu 12.04

Ghost LogoLooking to set up a blog with Ghost? While it still has a few rough edges and missing features at the time of this writing, as it’s essentially in beta at this point (hence the “0.3” versioning), it definitely shows promise as a blogging platform.

If you’re reading this, you’re probably aware that you can’t just FTP Ghost to a dinky shared host and expect it to run like your average PHP script. Ghost is a Node.js application, which works differently, and has yet to be adopted by services that generally cater to newbies. You’re going to need a VPS and command line access. I’m also going to assume a rudimentary knowledge of Linux commands. (You can pick up the basics pretty easily at linuxcommand.org if need be.)

This tutorial aims to walk you through the process of installing one ore more instances of Ghost behind the NGINX server. NGINX is a fast and lightweight web server that, when configured in this manner, acts as a proxy, forwarding requests to the correct Ghost blog.


I’m a big fan of DigitalOcean. I’ve been hosting my various web sites with them since this June, and their service has been of excellent quality. In addition to their rock-bottom price, their virtual machines have performed well and their staff has been competent and helpful. (You can find my review of DigitalOcean here.)

$5/month will get you a “Droplet” with 512MB of RAM, 20GB of storage on a solid state drive and plenty of data transfer. (It’s a soft cap with reasonable overages. You’re very, very unlikely to ever reach it, though. Unless you’re a popular podcaster or something, in which case you should be looking into a CDN…)

The figure that’s the most important is the RAM. Just like with the computer you’re using to read this, active applications reside in the system’s memory, and the amount they use varies depending on what the app is doing. Ghost, in my informal tests, doesn’t seem to be too memory-intense. So a 512MB Droplet could probably host a few Ghost blogs at once, depending on their popularity and how the system is configured.

There are plenty of options for a VPS, though. If you’re not too keen on DigitalOcean, Linode, Rackspace, Amazon EC2 and RamNode are popular. If you want to give DigitalOcean a try, you can sign up with the promo code DIVEIN5 to get a $5 credit. You can also pay by the hour if you just want to fire up a VM for a few hours to experiment before making a decision.

Initial Setup

Once you’ve got your VPS, it’s time to start setting things up. For simplicity, I will assume you are running Ubuntu 12.04. You can follow along with any Linux distribution on any hosting provider, but some commands may be a little different.

First, if you haven’t already, use SSH to log in to your VM as root, using the password your host gave you. Take this opportunity to change your password to something different, and reasonably strong, for security. Just run the passwd command and follow the on-screen instructions.

Now let the system update its package index by running the following command:

apt-get update

While you’re at it, install the unzip tool so you can unpack the Ghost archive later on.

apt-get install unzip

Continue reading →

Solar Theme for Ghost Blogs

Need a stylish new design for your Ghost blog? Looking for something that puts your content first, with an emphasis on reducing eye strain? Allow me to introduce my new theme (which is technically a port of the one I made for Jekyll), based on the Solarized color palette. It includes stylesheets for the default light-on-dark version, and for the alternate dark-on-light one.

Solar Theme for Ghost

The theme is responsive, with a little bit of  JavaScript that collapses the left navigation into a <select> box on mobile-sized displays. It supports both uploadable logos (which replace them text-based heading at the top) and cover images, which appear at the very top of the page. Your author bio and profile picture appear in the sidebar when viewing a post page, as well.

Installing the Theme

  1. Download it here (or clone it on GitHub)
  2. Upload the solar directory to your Ghost blog’s content/themes folder.
  3. Go to the Settings page of the Ghost backend and select solar from the Theme dropdown. Save the settings.

Be sure to edit the default.hbs template to add or remove any links you want in the navigation list. You’ll probably want to insert the link to your own Twitter profile instead of leaving it as mine, and maybe add your other social networking profiles.

Export Your Markdown Posts from Jekyll to Ghost

Want to export your Markdown posts from Jekyll to a format that can be easily imported into Ghost, now that the new blogging platform has launched? By reverse-engineering the plugin the Ghost developers made for WordPress, I put together a Jekyll plugin that generates a JSON file that follows the same format. (This was all done in advance of the public release, so it’s untested super-beta software. Hopefully it will work for you without issue!)

  1. Clone the repo and drop the jekylltoghost.rb file into your Jekyll site’s _plugins directory.
  2. Run jekyll build.
  3. There should now be a ghost_export.json file in your _site directory, which you can copy and import into Ghost.

To import the JSON file, you just need to visit http://example.org/ghost/debug/ in your browser and look for the Import section.

Of course, this plugin is fairly limited. Both because of the simplistic nature of the original WordPress plugin I used as a guide, and because Ghost itself is brand-new and has many unimplemented features. This is pretty much just the posts, tags/categories and standard YAML front matter. Enough to get your words into Ghost, with the same permalinks and publication dates. Images will have to be dealt with manually, at least for the time being. (Basically, you just need to copy them from your Jekyll site to the appropriate folder in your Ghost installation and manually fix the paths in the posts.) But, hey, it’s open source. Fork it and hack away!

Jekyll-to-Ghost Exporter [GitHub]

Ghost: The New Blogging Platform, and Why it Matters

Ghost LogoGhost is a new blogging platform that aims to do one thing and do it well: blogging. Its developers want to recapture the spirit of blogging that was present in the earlier days, when it was all about writing and publishing long-form content. A return to the blog’s roots. Ghost has no complex content management features that add bloat, and no Tumblr-like microblogging tools that encourage the reposted image echo-chamber that Tumblr has become. Just a minimalist, distraction-free writing environment, where you write in Markdown, with a live preview. (It also features a slick dashboard that resembles a classier version of Windows 8’s Metro UI.)

Ghost is simultaneously an attempt to mesh blogging’s roots with the state of the art. Eschewing PHP, Ghost is a Node.js app built upon the Express framework. All of the blogs I’ve visited thus far that are running Ghost have been very speedy, a feat that is difficult to pull off with WordPress, in my experience.

Continue reading →