Ghost Project

Ghost is a fully open source platform for building and running a modern online publication. Ghost powers blogs, magazines and journalists from Zappos to Sky News.

Ghost is explicitly focused on doing one thing really well: Publishing. Everything revolves around your content:

The Ghost editor is designed solely around providing the best possible writing experience. Using the power of Markdown with a live-preview, you can format all of your posts on the fly with just a couple of extra keystrokes. This is significantly more powerful than a traditional, cumbersome WYSIWYG editor.

What’s the point in publishing if nobody reads your content?

Ghost has the best support for search engine optimisation and social sharing features of any blogging platform in the world. You don’t need any extra plugins or extensions, and you don’t need to write any extra code. It just works.

Ghost gets out of the way and allows you to focus on your writing.

Because Ghost is powered by a modern technology stack using Google’s Node.js – it’s fast. Really, really, really, ridiculously fast.

Independent tests have found Ghost to be up to 1,900% faster than WordPress. What does that mean? In the amount of time it takes WordPress to respond to 1 request, Ghost will have already responded to 19 of them. The speed of your blog impacts everything, from search engine rankings to mobile user engagement.

 Define and achieve the best possible Ghost installation

All of the installation instructions and tutorials for Ghost have become less useful with the Ghost 1.0 release that features multiple major re-writes and limited backward compatibility. Also, ever since (free) Let’s Encrypt SSL encryption was released last year, it has become a minimum requirement for a serious web project. A good content delivery network, like KeyCDN, has also become a minimum requirement for a serious web project. Google’s Brotli file compression algorithms and HTTP/2 protocols are incorporated in this model.  The end result will set you back around $15/month, or about the cost of a cheeseburger and a beer at your corner bar.

The instructions below are intended to tie everything together into a best case scenario for deploying the Ghost platform. Tutorials are usually unfocused in order to apply to as many alternatives as possible. This effort is aimed at a very specific model built on the current versions of: Ghost CRM, DigitalOcean, KeyCDN, Let’s Encrypt, and MariaDB, deployed on these preferred providers.

 

Project Goal

Create a Ghost blog template on an advanced SSL secured VPS cloud server. All static files are served via SSL secured CDN edge servers. Additional functionality in the child theme provides sliders, comment forum, newsletter subscriptions, site search, image gallery, footer section, featured (sticky) posts, post excerpts with images in the archive view, and gapless grid layouts.

The ultimate goal of this project is to develop an easily clonable snapshot that can quickly spin up a new Ghost website with everything pre-installed and working right out-of-the-box, ready for customizations and content.

Prerequisites

  • DigitalOcean account
  • KeyCDN account
  • Mailchimp account
  • Disqus account
  • Google Analytics account
  • MailGun account

Document “best practices” for end users

  • posts
  • images
  • tags (categories)
  • team (users)
  • navigation (menu)

Seek 3rd Party Feedback

When the project is complete, I will post the project to support pages seeking additions, refinements and revisions.

  • GitHub
  • keyCDN
  • DigitalOcean
  • Ghost
  • stackexchange
  • Let’s Encrypt

 

Server Configuration

  • install ghost blog on a DigitalOcean droplet
  • enable let’s encrypt SSL with auto renewals
  • migrate MySQL to MariaDB
  • confirm production environment domain/ghost/about/
  • enable unattended updates on the server
  • enable scheduled backups
  • enable email password reset
  • enable new user notifications
  • enable keyCDN
  • enable http/2
  • enable Brotli file compression
  • enable API reboot and purge cache commands
  • import sample data

Create Casper-Child Theme

  • add disqus
  • add mailchimp rss subscriptions
  • add search
  • add sidebar
  • add footer
  • add Google Analytics
  • add featured (sticky) posts
  • flickity support and demo
  • packery support and demo
  • images with posts in archive view
  • lightbox image gallery
  • redirect all traffic to the cdn

Clone a new site from a snapshot of this project

  • create a new DO droplet from the snapshot
  • update the database
  • update the site’s nginx config file
  • update the ghost config.js file
  • remove and replace SSL certificates