Ghost es una plataforma de blogging desarrollada sobre NodeJS y Handlebars (y con sqlLite3 por defecto) que es totalmente de Código Abierto con una idea muy clara: hacer una cosa y hacerlo muy bien. De esta manera se centran exclusivamente a la creación de contenido y nada más (por eso es tan maravilloso crear contenido como veréis más adelante).

En el siguiente tutorial vamos ha explicar como configurar Ghost en un VPS con Ubuntu 20.04 utilizando Ghost-CLI, una serie de scripts que permiten gestionar e instalar Ghost de forma muy sencilla.

Pasos previos

Este tutorial lo haremos sobre Ubuntu 20.04, pero funciona también en versiones anteriores así como Debian. Es necesario tener instalado Nginx y certbot para generar certificado SSL posteriormente. También es necesario un dominio, 1GB de RAM como mínimo y tener instalado NodeJS:

Instalación de NodeJS en GNU/Linux [Debian, Ubuntu, CentOS]
En el siguiente tutorial os explicaremos la correcta instalación de NodeJS en GNU/Linux. Ya sea tu servidor un Ubuntu o Debian o CentOS aquí encontrarás las instrucciones correctas para su instalación.

Para la documentación oficial de Ghost, también requieren de un MySQL, pero en esta ocasión vamos a realizar la instalación con SQLite.

Instalación de Ghost CMS

Todo lo que se va a configurar a continuación garantiza que funcione correctamente luego la instalación con Ghost-CLI.

Creamos un usuario para ghost

Abre una terminal y conéctate al servidor por SSH y crea el usuario con el nombre que quieras excepto ghost ya que puede generar conflictos con Ghost-CLI, para este tutorial usaremos el usuario voidnull:

# adduser voidnull

Añade el usuario al grupo sudo:

# usermod -aG sudo voidnull

Inicia sesión con el usuario:

# su - voidnull

Actualizamos paquetes

Actualizamos los paquetes del servidor:

sudo apt update
sudo apt upgrade

Instalamos Nginx

Procedemos a instalar Nginx con el siguiente comando:

sudo apt install nginx

Instalamos Ghost-CLI

Ghost-CLI es una herramienta de línea de comandos que te ayudará a instalar y configurar Ghost para su uso, de forma rápida y sencilla.

sudo npm install ghost-cli@latest -g

Creamos el directorio

Ahora creamos el directorio donde tendremos los ficheros de Ghost, en este caso habrá que ejecutar lo siguiente:

sudo mkdir -p /var/www/html/midominio.com
sudo chown voidnull.voidnull /var/www/html/midominio.com
sudo chmod 755 /var/www/html/midominio.com
cd /var/www/html/midominio.com

Ejecutamos la instalación de Ghost

Tras toda esta configuración previa, procedemos a instalar Ghost con SQLite:

ghost install --db=sqlite3

La salida de este comando debería de ser algo similar a esto:

✔ Checking system Node.js version - found v14.18.1
✔ Checking logged in user
✔ Checking current folder permissions
✔ Checking system compatibility
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory
☴ Downloading and installing Ghost v4.24.0 > Installing dependencies > [3/5] Fetching packages...

Cuando finalice la instalación de los paquetes, nos pedía cual es el dominio para acceder a Ghost. Para este caso, dejaremos que la url del blog sea http://midominio.com para acceder luego a él con un Nginx Proxy que se configurará a continuación. Luego nos pedirá de configurar SystemD, le diremos que si. Y finalmente, iniciaremos Ghost.

✔ Finishing install process
? Enter your blog URL: http://midominio.com
✔ Configuring Ghost
+ sudo chown -R ghost:ghost /var/www/html/midominio.com/content
✔ Setting up "ghost" system user
ℹ Setting up "ghost" mysql user [skipped]
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/localhost/midominio.com.conf /etc/nginx/sites-available/midominio.com.conf
+ sudo ln -sf /etc/nginx/sites-available/midominio.com.conf /etc/nginx/sites-enabled/midominio.com.conf
+ sudo nginx -s reload
✔ Setting up Nginx
? Do you wish to set up SSL? Yes
? Enter your email (For SSL Certificate) mieamil@midominio.com
+ sudo mkdir -p /etc/letsencrypt
+ sudo ./acme.sh --install --home /etc/letsencrypt
+ sudo openssl dhparam -dsaparam -out /etc/nginx/snippets/dhparam.pem 2048
+ sudo mv /tmp/ssl-params.conf /etc/nginx/snippets/ssl-params.conf
+ sudo mv /tmp/localhost/midominio.com-ssl.conf /etc/nginx/sites-available/midominio.com-ssl.conf
+ sudo ln -sf /etc/nginx/sites-available/midominio.com-ssl.conf /etc/nginx/sites-enabled/gmidominio.com-ssl.conf
+ sudo nginx -s reload
✔ Setting up SSL
Systemd service has already been set up. Skipping Systemd setup
ℹ Setting up Systemd [skipped]
+ sudo systemctl is-active ghost_localhost
ℹ Starting Ghost [skipped]

Ghost uses direct mail by default. To set up an alternative email method read our docs at https://ghost.org/docs/config/#mail

------------------------------------------------------------------------------

Ghost was installed successfully! To complete setup of your publication, visit: 

    https://midominio.com/ghost/

Y listo, ya tenemos nuestro Ghost CMS instalado!

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación