Two weeks ago the Ghost blogging platform launched its first public
release, one week later version 0.3.3 was released. By now the project has
over 5k stargazers on Github, showing increasing popularity.
Several of our developers backed the project on kickstarter and we fully support
the idea behind the platform. Ghost runs on our service. However, files are not
persisted between deploys. This post explains how we solved that problem for
What is Ghost?
Ghost is a platform dedicated to one thing: Publishing. It's beautifully
designed, completely customizable and completely Open Source. Ghost allows
you to write and publish your own blog, giving you the tools to make it easy and
even fun to do. It's simple, elegant, and designed so that you can spend less time
messing with making your blog work - and more time blogging.
Ghost, by default, uses a sqlite database and stores images in the content
directory. Redeploying on our platform would destroy those files, undoing all
your hard work. To combat this problem we released a wrapper called
The wrapper persists all files in the
content directory to MongoDB GridFS.
Each change to watched files will trigger an upload to GridFS. On deploying
those uploaded files will be fetched before Ghost is started, thereby persisting
state between redeploys. True, this is not an optimal solution, however it was
our quickest solution. Our goal was to allow you to try Ghost as quickly as
possible without having to go through details.
I've already transferred my personal blog from Octopress to Ghost. During
the development of this wrapper. I redeployed my blog multiple times without
Getting started with Ghost on our platform just requires three very short steps.
Make sure you have the latest version of jitsu, v0.13.3
- Fetch the wrapper
jitsu install ghostand setup via prompt.
jitsu deployand acknowledge (if any) changes to package.json.
- Check the Ghost documentation to finalize ghost setup.
Note: These steps assume you already installed jitsu
[sudo] npm install jitsu -g
and that you signed up to our service via browser or command line
jitsu signup. For future reference also see the readme.md of persistent-ghost.
Obviously persisting files to dedicated services like Amazon S3 and storing
database documents directly to MongoDB or similar would be preferred. Ghost will
provide a plugin API soon, it's in active development/discussion. That plugin
system could perhaps open doors for a persisting plugin for files. An
integration with our pkgcloud comes to mind. Likewise database
storage in MongoDB, abstracted through knex would be a big plus.
We'll try to contribute as much as possible! However your welcome to join our
efforts in spreading the love called Ghost.