Installing Ghost CMS on Ubuntu 18.04 LTS
Updated by Linode Written by Linode
Ghost is an open source blogging platform that helps you easily create a professional-looking online blog. Ghost is a robust content management system (CMS) with a Markdown editor, an easy-to-use user interface, and beautiful themes. It is easy to install and update with Ghost-CLI.
In This Guide
In this guide, you’ll set up, deploy, and secure a Ghost v3.5.1 blog on a Linode running Ubuntu 18.04 LTS, using NGINX, MySQL, Node.js, NPM, Ghost-CLI, and Let’s Encrypt. For installation instructions for other distributions, click here.
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 username used in this guide isghostexample
.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 Prerequisites
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
Log into MySQL:
sudo mysql
Set a password for the root user with this command, replacing
password
with a strong password:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Exit MySQL:
quit
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_10.x | sudo -E bash -
sudo apt install nodejs
Install and Configure Ghost
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
Install Ghost
Install Ghost 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
is our username:sudo chown ghostexample:ghostexample /var/www/ghost sudo chmod 775 /var/www/ghost
Navigate to the Ghost root directory:
cd /var/www/ghost
Note
Installing Ghost in the/root
or/home/{user}
folder won’t work and results in a broken setup. Only use/var/www/{folder}
because it has the correct permissions.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: thePasswordYouEnteredForRoot ? Enter your Ghost database name: exampleGhost Configuring Ghost Setting up instance Setting up "ghost" system user ? Do you wish to set up "ghost" mysql user? yes ? 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 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:
Troubleshooting
Troubleshoot the system for any potential issues when installing or updating Ghost:
ghost doctor
Get help about Ghost:
ghost --help
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.