How to Install Ghost CMS on Ubuntu 16.04
Updated by Linode Contributed by Blago Eres
Ghost is an open source blogging platform that helps you easily create a professional-looking online blog.
Ghost 1.0.0 is the first major, stable release of the Ghost content management system (CMS). Ghost 1.0.0 has a brand new Markdown editor, refreshed user interface, new default theme design, improved install and update process with Ghost-CLI, and more.
In this guide you’ll set up, deploy, and secure a Ghost 1.0.0 blog on a Linode running Ubuntu 16.04 LTS, using NGINX, MySQL, Node.js, NPM, Ghost-CLI, and Let’s Encrypt.
NoteThis guide is written for a non-root user. Commands that require elevated privileges are prefixed with
sudo
. If you’re not familiar with thesudo
command, consult our Users and Groups guide.Replace each instance of
example.com
in this guide with your site’s domain name.
Before you Begin
This guide assumes that you’ve followed the steps in our Getting Started and Securing Your Server guides and have created a new user for Ghost with elevated
sudo
privileges. The example in this guide usesghostexample
.Ensure that you have a valid domain name and properly configured DNS records for your domain.
Ensure that your system is up to date:
sudo apt update && sudo apt upgrade
Install
build-essential
:sudo apt install build-essential
Install NGINX
NGINX will be used as a reverse proxy for your Ghost application:
sudo apt install nginx
Install MySQL
Download and install MySQL:
sudo apt install mysql-server
Enter a strong password for the
root
user when prompted.Run the
mysql_secure_installation
script:sudo mysql_secure_installation
Install Node.js and NPM
Ghost is built on Node.js and follows Node’s Long Term Support (LTS) plan. Ghost only supports LTS versions of Node.js.
Download and install Node.js:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt install nodejs
Install Ghost-CLI
Ghost-CLI is a command line interface (CLI) tool that makes installing and updating Ghost easy. It sets up the database, configures NGINX as a reverse proxy, enables TLS/SSL security using Let’s Encrypt CA, automatically renews your SSL, and initializes Ghost as a systemd service.
Install Ghost-CLI:
sudo npm install -g ghost-cli@latest
Troubleshoot the system for any potential issues when installing or updating Ghost:
ghost doctor
Get help about
ghost
:ghost help
Install Ghost
Install Ghost 1.0.0 using the Ghost-CLI tool.
Create the document root directory:
sudo mkdir -p /var/www/ghost
Change ownership of the
/var/www/ghost
directory to the non-root user withsudo
privileges that you created. In this example,ghostexample
:sudo chown ghostexample:ghostexample /var/www/ghost
Navigate to the Ghost root directory:
cd /var/www/ghost
Ensure that the directory is empty to avoid file conflicts:
ls -a
Install Ghost in production mode:
ghost install
Answer each question as prompted. For more information about each question, visit the Ghost documentation:
? Enter your blog URL: https://example.com ? Enter your MySQL hostname: localhost ? Enter your MySQL username: root ? Enter your MySQL password: areallysecurepassword ? Enter your Ghost database name: exampleGhost ? Do you wish to set up Nginx? yes ? Do you wish to set up SSL? yes ? Enter your email (used for Let's Encrypt notifications) user@example.com ? Do you wish to set up "ghost" mysql user? yes ? Do you wish to set up Systemd? yes ? Do you want to start Ghost? yes
After installation is complete, run
ghost ls
to view running Ghost processes:ghost ls
In the future when a newer version of Ghost is released, run ghost update
from the /var/www/ghost
directory to update to the newest version.
Complete the Setup
To complete the setup process, navigate to the Ghost configuration page by appending /ghost
to the end of your blog’s URL or IP. This example uses https://example.com/ghost
.
On the welcome screen, click Create your account:
Enter your email, create a user, password, and blog title:
Invite additional members to your team. If you’d prefer to skip this step, click I’ll do this later, take me to my blog! at the bottom of the page.
Navigate the Ghost admin area to create your first post, change your site’s theme, or configure additional settings:
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
Join our Community
Find answers, ask questions, and help others.
This guide is published under a CC BY-ND 4.0 license.