Install, manage and configures multiple ghost blog instances




7,617 latest version

3.1 quality score

Version information

  • 1.1.0 (latest)
  • 1.0.5
  • 1.0.4
  • 1.0.3
  • 1.0.2
  • 1.0.1
released Jul 3rd 2019
This version is compatible with:
  • Puppet >=3.4.0 < 4.0.0
  • Archlinux,

Start using this module


justin8/ghost — version 1.1.0 Jul 3rd 2019

Puppet Forge Build Status


Table of Contents

  1. Overview
  2. Module Description
  3. Setup - The basics of getting started with ghost
  4. Usage - Configuration options and additional functionality
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module


This module installs, configures and manages instances of Ghost blog. It is originally written for Archlinux but will work on any systemd system.

Module Description

Ghost is a pure blogging platform based on NodeJS. This module provides a simplified way of creating configurations to manage any number of instances of Ghost.

This module is for any system with systemd OR docker. Everything is run in standard locations as per file-hierarchy and systemd standards. Any other dependencies (nodejs and optionally docker currently) are managed by upstream Puppet modules.


What ghost affects

This module can affect nodejs and optionally docker as it will install these as required.

Setup Requirements

Puppetlabs-nodejs can be included but is not necessary so long as npm is available on the system.

Garethr-docker is required for using the docker service_type.

Beginning with ghost

The most basic configuration is as follows:

include ghost

ghost::instance { 'test':
 url => ''



After including the parent ghost module on your node, you can create multiple instances of Ghost using ghost::instance. The options you can specify are below:

url The URL where this instance will be hosted. e.g. ''. (Required)

user The user which this instance will run as and which will own all files (Optional)

group The group which this instance will run as and which will own all files (Optional)

home The home in which all files will reside. (Optional)

service_type Can be either 'systemd' or 'docker'. Locations of data will remain the same for user data, However, if it is set to 'docker' the host IP will always be due to limitations in docker.

version The version of ghost to install. Specifying a new version will update installed instances to the new (or old) version. (Optional)

host Host IP to listen on. (Optional) Defaults to localhost. This is ignored when service_type = docker

port Default port to listen on. (Optional) Defaults to 2368.

transport Mail transport option. (Optional) See

from Mail from option. (Optional) See

mail_options Mail misc options. Accepts a hash of options. (Optional) See


By specifying a newer version of Ghost you can upgrade an instance. Copies of the new version are only downloaded once per host with systemd service type. Updates follow the release process outlined by the Ghost documentation.

If service type is set to docker then the specified image version will be pulled and used for the service.


This has been tested thoroughly on Archlinux but is designed to work on any machine using systemd or docker. The latest releases of most major distros should work without issue for the systemd service_type:

  • Archlinux
  • Fedora 18+
  • RedHat 7+ and derivatives
  • Debian 8+
  • Ubuntu 15.04+

Any distros supported by garethr/docker will work with service_type = docker.

Currently only basic mail servers are supported. Ghost itself supports things like mailgun and gmail directly. This module does not yet support that.


Licensed under the MIT license. Pull requests are more than welcome.