{"id":4924,"date":"2018-06-18T17:45:59","date_gmt":"2018-06-18T13:45:59","guid":{"rendered":"https:\/\/www.howtoforge.com\/tutorial\/ubuntu-nginx-ghost-blog\/"},"modified":"2018-06-18T17:45:59","modified_gmt":"2018-06-18T13:45:59","slug":"how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts\/","title":{"rendered":"How to deploy Ghost Blog with Nginx on Ubuntu 18.04 LTS"},"content":{"rendered":"<p><strong>Ghost<\/strong>\u00a0<span>is a completely open source\u00a0<span>(MIT license)\u00a0<span>blogging platform,\u00a0<span>that is gaining popularity among developers and ordinary users since its 2013 release.\u00a0<span>Ghost source code is publicly available on GitHub.\u00a0<span>Ghost generally takes around<span>\u00a0<\/span><\/span><strong>~300MB<\/strong><span><span>\u00a0<\/span>of <strong>RAM<\/strong> to run well, so it can run on modest hardware. It puts focus on<span>\u00a0<\/span><\/span><em>content<\/em><span><span>\u00a0<\/span>and<span>\u00a0<\/span><\/span><em>blogging<\/em><span>. The most attractive thing about Ghost is its simple, clean, elegant and responsive design. You can write your blog posts from a mobile phone. Content for Ghost is written and formatted using the Markdown language.\u00a0<span>Ghost is a perfect fit for individuals or small groups of writers. Ghost also has built-in support for Accelerated Mobile Pages (<strong>AMP<\/strong>) project,<\/span><span><span>\u00a0<\/span>which will make loading of your blog lightning fast on mobile phones.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span><span><span><span><span><span><span><br \/>Recently, Ghost developers released\u00a0<span>the first major, stable release of the Ghost &#8211; 1.0.0. Ghost 1.0.0\u00a0introduced many new features and the most\u00a0notable\u00a0among them are:\u00a0<span>brand new Markdown editor,\u00a0<span>refreshed user interface (<\/span><strong>UI<\/strong><span>),\u00a0<span>new default theme design, new and\u00a0<span>improved installation and update process with <strong>Ghost-CLI<\/strong> tool.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span><span><span><span><span><span><span><span><span><span><span><span><a class=\"fancybox\" id=\"img-htdgou1804lts\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/htdgou1804lts.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts.png\" alt=\"Ghost Blog and CMS\" width=\"550\" height=\"290\" title=\"\"><\/a><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span><span><span><span><span><span><span><span><span><span><span><span><br \/>In this\u00a0tutorial, we are going to set up and deploy a secure Ghost blog with the help of Ghost&#8217;s <strong>Ghost-CLI<\/strong> tool on an <strong>Ubuntu 18.04 LTS<\/strong> server\u00a0<span>using <strong>Let&#8217;s Encrypt<\/strong>, <strong>Acme.sh<\/strong>, <strong>Node.js<\/strong>, <strong>npm<\/strong>, <strong>Yarn<\/strong>, <strong>NGINX<\/strong> and <strong>MySQL<\/strong>\/<strong>MariaDB<\/strong>.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<h2 id=\"requirements\">Requirements<\/h2>\n<ul>\n<li>Domain name. This tutorial will use\u00a0<span>example.com<\/span> domain.\u00a0<\/li>\n<li>A server running Ubuntu 18.04 LTS with 1GB or RAM.<\/li>\n<li>A non-root user with sudo privileges.<\/li>\n<\/ul>\n<h2 id=\"initial-steps\">Initial Steps<\/h2>\n<p><span>Check your Ubuntu version:<\/span><\/p>\n<p class=\"command\">lsb_release -ds <br \/><span class=\"pl-c\"><span class=\"pl-c\">#<\/span> Ubuntu 18.04 LTS<\/span><\/p>\n<p><span>Set up the timezone:<\/span><\/p>\n<p class=\"command\">timedatectl list-timezones<br \/>sudo timedatectl set-timezone &#8216;Region\/City&#8217;<\/p>\n<p><span>Update your operating system\u2019s packages:<\/span><\/p>\n<p class=\"command\">sudo apt update <span class=\"pl-k\">&amp;&amp;<\/span> sudo apt upgrade -y<\/p>\n<p><span>Install<span>\u00a0<\/span><\/span><code>build-essential<\/code><span><span>\u00a0<\/span>package:<\/span><\/p>\n<p class=\"command\"><span>sudo apt install -y build-essential<\/span><\/p>\n<h2 id=\"step-install-nodejs-and-npm\">Step 1 &#8211; Install Node.js and npm<\/h2>\n<p><em><strong>NOTE<\/strong>: Latest Ghost 1.0.0 currently supports Node.js versions<span>\u00a0<strong>8.9+<\/strong> and <strong>6.9+<\/strong><\/span><span>\u00a0<\/span>only.<\/em><\/p>\n<p><span>Ghost is built on<span>\u00a0Node.js<\/span><\/span><span>. We are going to install<span>\u00a0<\/span><\/span><strong>recommended<\/strong><span>\u00a0version for Ghost which is\u00a0<span face=\"monospace\"><b>v8 Carbon LTS<\/b><\/span><\/span><span><span>\u00a0<\/span>at the time of this writing tutorial. On Linux you have a few installation options: Linux Binaries (x86\/x64), Source Code or via Package Managers. We will use Package Manager method by utlilzing Nodesource repository.<\/span><\/p>\n<p><span><span>Download and install the latest Long-Term Support (<\/span><strong>LTS<\/strong><span>) version (release) of<span>\u00a0Node.js<\/span><\/span><span>:<\/span><\/span><\/p>\n<p class=\"command\">curl -sL https:\/\/deb.nodesource.com\/setup_8.x <span class=\"pl-k\">|<\/span> sudo -E bash &#8211;<br \/>sudo apt install -y nodejs<\/p>\n<p><em><strong>NOTE<\/strong>: npm is distributed with Node.js &#8211; which means that when you download Node.js, you automatically get npm installed on your computer.<\/em><\/p>\n<p><span><span>Check Node.js and<span>\u00a0npm<\/span><\/span><span><span>\u00a0<\/span>version:<\/span><\/span><\/p>\n<p class=\"command\">node -v <span class=\"pl-k\">&amp;&amp;<\/span> npm -v<br \/># v8.11.2<br \/># 5.6.0<\/p>\n<p><span>Npm is a separate project from Node.js, and tends to update more frequently. As a result, even if you\u2019ve just downloaded Node.js (and therefore npm), you\u2019ll probably need to update your npm. Luckily, npm knows how to update itself! To update your npm, type this into your terminal:<\/span><\/p>\n<p class=\"command\">sudo npm install -g <a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"0b657b664b676a7f6e787f\" target=\"_blank\" rel=\"noopener\">[email\u00a0protected]<\/a><\/p>\n<p><span>Recheck npm version, it should be latest version:<\/span><\/p>\n<p class=\"command\">npm -v<br \/># 6.1.0<\/p>\n<h2 id=\"stepnbsp-install-mariadb-server\">Step\u00a02 &#8211; Install MariaDB server<\/h2>\n<p><span>Ghost supports<span>\u00a0MySQL<\/span><\/span><span>\/MariaDB<\/span><span><span>\u00a0<\/span>and<span>\u00a0SQLite<\/span><\/span><span><span>\u00a0<\/span>databases. In this tutorial, however, we will be using the<span>\u00a0MariaDB<\/span><\/span><span><span>\u00a0<\/span>database. If you prefer, you can use<span>\u00a0MySQL instead of MariaDB<\/span><\/span><span>.<\/span><\/p>\n<p><span>Download and install the latest stable version of<span>\u00a0MariaDB server<\/span><\/span><span><span>\u00a0<\/span>from the<span>\u00a0MariaDB<\/span><\/span><span>\u00a0repository on your machine:<\/span><\/p>\n<p class=\"command\">sudo apt-get install software-properties-common<br \/><span>sudo apt-key adv &#8211;recv-keys &#8211;keyserver hkp:\/\/keyserver.ubuntu.com:80 0xF1656F24C74CD1D8<\/span><br \/><span>sudo add-apt-repository &#8216;deb [arch=amd64] <\/span>https:\/\/mirrors.nxthost.com\/mariadb\/repo\/10.3\/ubuntu<span> bionic main&#8217;<br \/><span>sudo apt update<\/span><br \/><span>sudo apt install -y mariadb-server<\/span><\/span><\/p>\n<p><span>During the MariaDB installation process, you will be promted to enter MariaDB<span>\u00a0<\/span><\/span><code>root<\/code><span><span>\u00a0<\/span>user password. You should enter strong password.<\/span><\/p>\n<p><span><a class=\"fancybox\" id=\"img-mariadb-pwd\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/mariadb-pwd.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-1.png\" alt=\"Install MariaDB database\" width=\"550\" height=\"309\" title=\"\"><\/a><\/span><\/p>\n<p>Check\u00a0MariaDB version:<\/p>\n<p class=\"command\">mysql &#8211;version <span class=\"pl-k\">&amp;&amp;<\/span> sudo mysqld &#8211;version<br \/>#\u00a0mysql\u00a0 Ver 15.1 Distrib 10.3.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2<br \/>#\u00a0mysqld\u00a0 Ver 10.3.7-MariaDB-1:10.3.7+maria~bionic-log for debian-linux-gnu on x86_64 (mariadb.org binary distribution)<\/p>\n<p><span>Check if\u00a0MariaDB daemon has started and is running:<\/span><\/p>\n<p class=\"command\">sudo systemctl status mysql.service<br \/>sudo systemctl is-enabled mysql.service<\/p>\n<p><span>Run the<span>\u00a0<\/span><\/span><code>mysql_secure_installation<\/code><span><span>\u00a0<\/span>utility (script) to improve the security of your\u00a0MariaDB installation:<\/span><\/p>\n<p class=\"command\">sudo mysql_secure_installation<\/p>\n<p>#\u00a0Enter current password for root (enter for none):<\/p>\n<p>#\u00a0Change the root password? [Y\/n] N<br \/>#\u00a0Remove anonymous users? [Y\/n] Y<br \/>#\u00a0Disallow root login remotely? [Y\/n] Y<br \/>#\u00a0Remove test database and access to it? [Y\/n] Y<br \/>#\u00a0Reload privilege tables now? [Y\/n] Y<br \/># Success.<\/p>\n<p>#\u00a0All done! If you&#8217;ve completed all of the above steps, your MariaDB<br \/>installation should now be secure.<\/p>\n<p>#\u00a0Thanks for using MariaDB!<\/p>\n<p><span>Login (connect) to the\u00a0MariaDB command line as the MariaDB<span>\u00a0<\/span><\/span><code>root<\/code><span><span>\u00a0<\/span>user:<\/span><\/p>\n<p class=\"command\">mysql -u root -p<\/p>\n<p><span>Create a new\u00a0MariaDB database and user for Ghost installation. This step is optional, because Ghost-CLI tool in a later step can create database for you, you just need to enter MariaDB root user credentials (username &amp; password) when asked by Ghost-CLI during the installation of Ghost:<\/span><\/p>\n<p class=\"command\">mysql<span class=\"pl-k\">&gt;<\/span> CREATE DATABASE dbname;<br \/>mysql<span class=\"pl-k\">&gt;<\/span> CREATE USER <span class=\"pl-s\"><span class=\"pl-pds\">&#8216;<\/span>username<span class=\"pl-pds\">&#8216;<\/span><\/span>@<span class=\"pl-s\"><span class=\"pl-pds\">&#8216;<\/span>localhost<span class=\"pl-pds\">&#8216;<\/span><\/span> IDENTIFIED BY <span class=\"pl-s\"><span class=\"pl-pds\">&#8216;<\/span>password<span class=\"pl-pds\">&#8216;<\/span><\/span>;<br \/>mysql<span class=\"pl-k\">&gt;<\/span> <span class=\"pl-k\">GRANT<\/span> ALL <span class=\"pl-k\">ON<\/span> dbname.<span class=\"pl-k\">*<\/span> TO <span class=\"pl-s\"><span class=\"pl-pds\">&#8216;<\/span>username<span class=\"pl-pds\">&#8216;<\/span><\/span>@<span class=\"pl-s\"><span class=\"pl-pds\">&#8216;<\/span>localhost<span class=\"pl-pds\">&#8216;<\/span><\/span>;<br \/>mysql<span class=\"pl-k\">&gt;<\/span> FLUSH PRIVILEGES;<\/p>\n<p><span>Exit (disconnect) from MariaDB:<\/span><\/p>\n<p class=\"command\"><span>mysql&gt;\u00a0EXIT;<\/span><\/p>\n<h2 id=\"stepnbsp-install-nginx\">Step\u00a03 &#8211; Install NGINX<\/h2>\n<p><span>NGINX\u00a0<\/span>(engine-x) is a high performance web server, load balancer, cache and proxy server that works well in all environments: Bare Metal, Public\/Private\/Hybrid Cloud and Containers. NGINX will be used as a reverse proxy for our Ghost application.<\/p>\n<p>NGINX can be installed differently, depending on the operating system. For<span>\u00a0Linux<\/span>, NGINX packages from<span>\u00a0<span>nginx.org<\/span>\u00a0<\/span>can be used.<\/p>\n<p><span>Download and install latest<span>\u00a0<\/span><\/span><em>mainline<\/em><span><span>\u00a0<\/span>(<\/span><strong>recommended for most deployments<\/strong><span>) release of NGINX and dynamically loadable modules directly from the<span>\u00a0official NGINX repository<\/span><\/span><span>:<br \/><\/span><\/p>\n<p class=\"command\">wget https:\/\/nginx.org\/keys\/nginx_signing.key<a href=\"https:\/\/nginx.org\/keys\/nginx_signing.key\" target=\"_blank\" rel=\"noopener\"><br \/><\/a>sudo apt-key add nginx_signing.key<br \/>rm nginx_signing.key<br \/>sudo -s<br \/>printf <span class=\"pl-s\"><span class=\"pl-pds\">&#8220;<\/span>deb https:\/\/nginx.org\/packages\/mainline\/ubuntu\/ <span class=\"pl-s\"><span class=\"pl-pds\">$(<\/span>lsb_release -sc<span class=\"pl-pds\">)<\/span><\/span> nginx\\ndeb-src https:\/\/nginx.org\/packages\/mainline\/ubuntu\/ <span class=\"pl-s\"><span class=\"pl-pds\">$(<\/span>lsb_release -sc<span class=\"pl-pds\">)<\/span><\/span> nginx\\n<span class=\"pl-pds\">&#8220;<\/span><\/span> <span class=\"pl-k\">&gt;&gt;<\/span> \/etc\/apt\/sources.list.d\/nginx_mainline.list<br \/>exit<br \/>sudo apt update<br \/>sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt<\/p>\n<p><span>Verify that NGINX is installed by checking\u00a0its version:<\/span><\/p>\n<p class=\"command\">sudo nginx -v <span class=\"pl-k\">&amp;&amp;<\/span> sudo nginx -V<br \/># nginx version: nginx\/1.15.0<br \/># nginx version: nginx\/1.15.0<\/p>\n<p>Start and enable NGINX:<\/p>\n<p class=\"command\">sudo systemctl start nginx.service<br \/>sudo systemctl enable nginx.service<\/p>\n<p><span>Create<span>\u00a0<\/span><\/span><code>\/etc\/nginx\/snippets, \/etc\/nginx\/ssl<\/code>,<span><span>\u00a0<\/span><\/span><code>\/etc\/nginx\/sites-available <\/code>and<span><span>\u00a0<\/span><\/span><code>\/etc\/nginx\/sites-enabled <\/code>directories. These directories are needed for Ghost-CLI tool to work correctly<code>:<\/code><\/p>\n<p class=\"command\">sudo mkdir -p \/etc\/nginx\/{snippets,ssl,sites-available,sites-enabled}<\/p>\n<p><span>Add to<span>\u00a0<\/span><\/span><code>include \/etc\/nginx\/sites-enabled\/*.conf;<\/code><span><span>\u00a0<\/span>directive\u00a0to<span>\u00a0<\/span><\/span><code>nginx.conf<\/code><span><span>\u00a0<\/span>file, run:<\/span><\/p>\n<p class=\"command\">sudo vim \/etc\/nginx\/nginx.conf<\/p>\n<p><a class=\"fancybox\" id=\"img-nginx-conf\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/nginx-conf.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-2.png\" alt=\"Install Nginx web server\" width=\"550\" height=\"268\" title=\"\"><\/a><\/p>\n<p>Save file and exit from Vim editor.<\/p>\n<h2 id=\"stepnbsp-install-yarn-optional\">Step\u00a04 &#8211; Install Yarn (optional)<\/h2>\n<p><span>Download and install<span>\u00a0Yarn<\/span><\/span><span><span>\u00a0<\/span>package manager on your system:<\/span><\/p>\n<p class=\"command\">curl -sS https:\/\/dl.yarnpkg.com\/debian\/pubkey.gpg <span class=\"pl-k\">|<\/span> sudo apt-key add &#8211;<br \/>echo <span class=\"pl-s\"><span class=\"pl-pds\">&#8220;<\/span>deb https:\/\/dl.yarnpkg.com\/debian\/ stable main<span class=\"pl-pds\">&#8220;<\/span><\/span> <span class=\"pl-k\">|<\/span> sudo tee \/etc\/apt\/sources.list.d\/yarn.list<br \/>sudo apt update <span class=\"pl-k\">&amp;&amp;<\/span> sudo apt install -y yarn<\/p>\n<p><span><span>Check Yarn version:<\/span><\/span><\/p>\n<p class=\"command\">yarn &#8211;version<br \/># 1.7.0<\/p>\n<h2 id=\"stepnbsp-installing-ghostcli\">Step\u00a05 &#8211; Installing Ghost-CLI<\/h2>\n<p><span><span>Ghost-CLI\u00a0<\/span>is a command line interface (CLI) tool that makes installing and updating Ghost easy. It sets up the database, configures\u00a0NGINX as a reverse proxy, enables TLS\/SSL security using Let\u2019s Encrypt CA, automatically renews your SSL, and initializes Ghost as a systemd service. Ghost-CLI is an npm module that can be installed via either<span>\u00a0<\/span><\/span><code>npm<\/code><span><span>\u00a0<\/span>or<span>\u00a0<\/span><\/span><code>yarn<\/code><span>.<\/span><\/p>\n<p><span><span>Download and install Ghost-CLI tool<\/span><span>:<\/span><\/span><\/p>\n<p class=\"command\">sudo npm install -g <a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"16717e7965623b757a7f567a7762736562\" target=\"_blank\" rel=\"noopener\">[email\u00a0protected]<\/a><br \/># or with Yarn<br \/>sudo yarn global add <a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"b0d7d8dfc3c49dd3dcd9f0dcd1c4d5c3c4\" target=\"_blank\" rel=\"noopener\">[email\u00a0protected]<\/a><a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection#b2d5daddc1c69fd1dedbf2ded3c6d7c1c6\" target=\"_blank\" rel=\"noopener\"><br \/><\/a><\/p>\n<p><span>Check<span>\u00a0Ghost-CLI<\/span><\/span><span><span>\u00a0<\/span>version:<\/span><\/p>\n<p class=\"command\">ghost version<br \/># Ghost-CLI version: 1.8.1<\/p>\n<p><span>Troubleshoot the system for any potential issues when installing or updating Ghost:<\/span><\/p>\n<p class=\"command\">ghost doctor install<\/p>\n<h2 id=\"stepnbsp-install-ghost\">Step\u00a06 &#8211; Install Ghost<\/h2>\n<p><span>Next, we will install Ghost using the Ghost-CLI tool.<\/span><\/p>\n<p><span>First, c<span>reate\u00a0an empty document root directory:<\/span><\/span><\/p>\n<p class=\"command\"><span><span>sudo mkdir -p \/var\/www\/example.com<\/span><\/span><\/p>\n<p><span>Change ownership of the<span>\u00a0<\/span><\/span><code>\/var\/www\/example.com<\/code><span><span>\u00a0<\/span>directory to the non-root user with<span>\u00a0<\/span><\/span><code>sudo<\/code><span>\u00a0privileges that you created. In this example,\u00a0<span face=\"monospace\">johndoe<\/span><\/span><span>:<\/span><\/p>\n<p class=\"command\">sudo chown johndoe:johndoe \/var\/www\/example.com<\/p>\n<p>Your installation folder must have the correct permissions:<\/p>\n<p class=\"command\">sudo chmod 755 \/var\/www\/example.com<\/p>\n<p><span>Navigate to the Ghost root directory:<\/span><\/p>\n<p class=\"command\"><span>cd \/var\/www\/example.com<\/span><\/p>\n<p><span>Ensure that the directory is empty to avoid file conflicts:<\/span><\/p>\n<p class=\"command\"><span>ls -a<\/span><\/p>\n<p><span><span>Install\u00a0Ghost in production mode by running:<\/span><\/span><\/p>\n<p class=\"command\"><span><span>ghost install<\/span><\/span><\/p>\n<p><span><span>Answer each question as prompted:<\/span><\/span><\/p>\n<pre class=\"file terminal\"><code>? Enter your blog URL: https:\/\/example.com&#13;\n? Enter your MySQL hostname: localhost&#13;\n? Enter your MySQL username: root&#13;\n? Enter your MySQL password: your_mysql_root_user_password_here&#13;\n? Enter your Ghost database name: database_name_for_ghost<br\/>? Do you wish to set up \"ghost\" mysql user? yes&#13;\n? Do you wish to set up Nginx? yes&#13;\n? Do you wish to set up SSL? yes&#13;\n? Enter your email (used for Let's Encrypt notifications) <a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"ccb9bfa9be8ca9b4ada1bca0a9e2afa3a1\" target=\"_blank\" rel=\"noopener\">[email\u00a0protected]<\/a>&#13;\n? Do you wish to set up Systemd? yes&#13;\n? Do you want to start Ghost? yes<\/code><\/pre>\n<p><span>After installation is complete, run<\/span><\/p>\n<p class=\"command\"><span>ghost ls<\/span><\/p>\n<p>to view running Ghost processes.<\/p>\n<p>In future, to update your Ghost blog when newer version is released, you just need to run<\/p>\n<p class=\"command\">ghost update<\/p>\n<p>command, from Ghost installation directory and Ghost-CLI will take care of everything for you.<\/p>\n<h2 id=\"stepnbsp-complete-ghost-setup\">Step\u00a07 &#8211; Complete Ghost setup<\/h2>\n<p><span>To complete the setup process, navigate to the Ghost configuration page by appending<span>\u00a0<\/span><\/span><code>\/ghost<\/code><span><span>\u00a0<\/span>to the end of your blog\u2019s URL or IP. This example uses<span>\u00a0<\/span><\/span><code>https:\/\/example.com\/ghost<\/code><span>.<\/span><\/p>\n<p><span>On the welcome screen, click<span>\u00a0<\/span><\/span><strong>Create your account<\/strong><span>:<\/span><\/p>\n<p><span><a class=\"fancybox\" id=\"img-welcome-to-ghost\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/welcome-to-ghost.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-3.png\" alt=\"Ghost web installer\" width=\"550\" height=\"328\" title=\"\"><\/a><\/span><\/p>\n<p><span><span>Enter your email, create a user, password, and blog title:<\/span><br \/><\/span><\/p>\n<p><span><span><a class=\"fancybox\" id=\"img-create-account\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/create-account.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-4.png\" alt=\"Create account in Ghost\" width=\"550\" height=\"328\" title=\"\"><\/a><\/span><\/span><\/p>\n<p><span>Invite additional members to your team. If you\u2019d prefer to skip this step, click<span>\u00a0<\/span><\/span><strong>I\u2019ll do this later, take me to my blog!<\/strong><span><span>\u00a0<\/span>at the bottom of the page.<\/span><\/p>\n<p><span><a class=\"fancybox\" id=\"img-invite-team\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/invite-team.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-5.png\" alt=\"Invite team members\" width=\"550\" height=\"328\" title=\"\"><\/a><\/span><\/p>\n<p><span>Navigate the Ghost admin area to create your first post, change your site\u2019s theme, or configure additional settings:<\/span><\/p>\n<p><span><a class=\"fancybox\" id=\"img-gh-admin\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_deploy_ghost_on_ubuntu_1804_lts\/big\/gh-admin.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-6.png\" alt=\"Ghost stories\" width=\"550\" height=\"328\" title=\"\"><\/a><\/span><\/p>\n<p><span>Congratulations! You have successfully installed and deployed\u00a0Ghost blogging platform\u00a0on Ubuntu 18.04 LTS server.<\/span><\/p>\n<div>\n<p><b>Share this page:<\/b><\/p>\n<p> <a href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fubuntu-nginx-ghost-blog%2F\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-7.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fubuntu-nginx-ghost-blog%2F&amp;text=How+to+deploy+Ghost+Blog+with+Nginx+on+Ubuntu+18.04+LTS&amp;via=howtoforgecom&amp;related=howtoforgecom\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-8.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/twitter.com\/howtoforgecom\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-9.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/plus.google.com\/share?url=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fubuntu-nginx-ghost-blog%2F\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/06\/how-to-deploy-ghost-blog-with-nginx-on-ubuntu-18-04-lts-10.png\" height=\"20\" alt=\"\" title=\"\"><\/a>\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ghost\u00a0is a completely open source\u00a0(MIT license)\u00a0blogging platform,\u00a0that is gaining popularity among developers and ordinary users since its 2013 release.\u00a0Ghost source code is publicly available on GitHub.\u00a0Ghost generally takes around\u00a0~300MB\u00a0of RAM to run well, so it can run on modest hardware. It puts focus on\u00a0content\u00a0and\u00a0blogging. The most attractive thing about Ghost is its simple, clean, elegant &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-4924","post","type-post","status-publish","format-standard","hentry","category-36"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/4924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=4924"}],"version-history":[{"count":0,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/4924\/revisions"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=4924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=4924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=4924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}