WordPress powers almost 30% of the web; alongside Joomla and Drupal, it’s the world’s most-used CMS for creating websites (1). Free, easy to learn and install and extremely flexible, WordPress has many advantages. However, WordPress has become more cumbersome over time, so people are increasingly looking for credible free, independent alternatives to that product.

Ghost, an interesting alternative to WordPress for creating minimalist blogs

If you yearn to get back to a simple, uncluttered and responsive CMS that’s dedicated to the content of your blog, then you’re clearly in the target audience for Ghost.

Launched in 2013, Ghost is an open source CMS designed to create uncluttered blogs. Its minimalist admin interface is easy to use, and article writing is done in Markdown, an easy-to-learn text formatting language that saves a lot of time once you’ve got the hang of it.

Compared to WordPress, Ghost is faster, easier to use and focuses visitors’ attention on the content. On the other hand, Ghost is less flexible and complete than WordPress; it also requires some technical knowledge to install and web hosting that’s compatible with the Node.js software platform to work.

This is what Ghost’s admin interface looks like

Installing the Ghost CMS with Infomaniak

Two cloud solutions are available to you for using Ghost with Infomaniak: Jelastic Cloud or a cloud server.

Installing Ghost on Jelastic Cloud (recommended)

  1. Log in to the Jelastic admin area from your manager
  2. Open the Jelastic marketplace
  3. Enter Ghost in the search field
  4. Follow the wizard and wait for Ghost to be deployed

Try Jelastic Cloud for free

Installing Ghost on a managed cloud server

The following information is provided for information purposes only.

  1. Create a web hosting site on the managed cloud server
  2. Create a website on the web hosting site
  3. Install NVM using Fast Installer
  4. Create an FTP+SSH account
  5. Using SSH, connect to your hosting site
  6. Install NPM with the command  npm install -g npm@latest
  7. Retrieve the latest version of Ghost with the command npm i -g ghost-cli
  8. Run the command export GHOST_CLI_PRE_CHECKS=false which allows you to avoid the checks and to go to root access
  9. Check that the target directory of your website is empty and install Ghost with the command cd YOUR-WEBSITE-FOLDER && ghost install --db sqlite3 --no-setup-linux-user --no-setup-nginx --no-setup-ssl --no-start --process local (e.g.: for the default “web” directory: cd web && ghost install --db sqlite3 --no-setup-linux-user --no-setup-nginx --no-setup-ssl --no-start --process local)
  10. Enter the requested information:
    • System checks failed with message: ‘Linux version is not Ubuntu 16’
      Some features of Ghost-CLI may not work without additional configuration.
      For local installs we recommend using `ghost install local` instead.
      Continue anyway? (Y/N)
      Answer yes (=y)
    • Enter your blog URL: (http://localhost:2368) => enter the URL address from which your website will be accessible
  11. As Ghost runs on port 2368, it’s necessary to redirect the traffic via the website’s .htaccess file. At the root of the website, open or create the .htaccess file with the command nano .htaccess
  12. Insert the following directives in the .htaccess file:
    RewriteEngine On
    RewriteRule ^(.*)$ http://localhost:2368/$1 [L,P]
    DirectoryIndex
  13. Switch to the production environment with the command NODE_ENV=production node versions/2.26.0/core/index.js
  14. Check that your website’s working correctly. Use the command ghost restart if changing the configuration files.
  15. In order to ensure continuous operation of the site, install Forever with the command: npm install forever -g
  16. To run the script continuously, use the command: forever start --uid "NOM" versions/2.26.0/core/index.js

Congratulations, all that’s left to do is configure the database on MySQL and allow sending authenticated emails in SMTP. To do that, modify the config.production.json file based on the following information:

"mail": {
    "from": "my@domain.ch",
    "transport": "SMTP",
    "options": {
      "host": "mail.infomaniak.com",
      "port": 587,
      "auth": {
        "user": "my@mail.ch",
        "pass": "PASSWORD"
      }
    }
  },

"database": {
    "client": "mysql",
    "connection": {
      "host": "PREFIX.myd.infomaniak.com",
      "port": 3306,
      "user": "USER",
      "password": "PASSWORD",
      "database": "DB_NAME"
    }
  },

This procedure was updated on 20 November 2020.

Useful resources

(1) w3techs.com