Ghost es una plataforma de publicación gratuita y de código abierto (open-source) creada en Node.js.

Esta plataforma sirve para manejar contenido (CMS) y se enfoca en la creación de blogs ya que no puedes crear campos personalizados o distintos tipos de posts (custom post types), sin embargo, eso no es malo necesariamente, ya que al ser especializado brinda una experiencia bastante buena para cualquiera que se enfoque en escribir artículos y nada más.

¿Usaste WordPress y te pareció muy complicado?

Si la respuesta es sí, entonces Ghost es para ti.

Puedes aprender más en Ghost.org.


Información Importante

En este tutorial voy a dar por sentado de que ya tienes un servidor en Runcloud, pero si quieres aprender a instalar Runcloud en uno puedes ver este tutorial:

1. Crear una aplicación web en Runcloud

En Runcloud puedes tener varias aplicaciones o sitios web en un servidor, así que puedes instalar Ghost CMS en el mismo servidor que en el que vas a tener tus blogs y sitios web, aunque estos sean accesibles desde diferentes dominios.

Incluso, puedes tener varias instalaciones de Ghost en el mismo servidor.

Para comenzar, vamos a ir al menú de Web Application dentro de tu servidor, haremos click en "Create Web App".

Selecciona "Custom Web Applications":

Asegúrate de seleccionar "Custom Web Applications":

En la sección de Web Application Stack tienes que elegir Native NGINX + Custom Config. Esto es indispensable.

Es una buena práctica tener un usuario de sistema único para cada aplicación ya que es más seguro, sin embargo, no es una obligación.

Para Domain Name puedes usar uno de prueba de Runcloud o el tuyo propio, pero si planeas utilizarlo en producción te aconsejo ponerlo en un dominio propio de una.

Información Importante

¿No sabes crear tu propio dominio/subdominio en Runcloud? Cliquea acá para ver ese tutorial

Ten en cuenta que si decides utilizar tu propio dominio o subdominio vas a tener que esperar que el DNS se propague y el tiempo de espera varía según el host del mismo.

2. Asegurar Ghost CMS con HTTPS

Una vez que tu dominio o subdominio se propagó completamente, puedes asegurarlo con HTTPS.

Runcloud cuenta con certificados de SSL gratuitos por medio de Let's Encrypt SSL/TLS, y además, puedes habilitar la opción HSTS.

3. Crear una base de datos

Para hacerlo tienes que ir a las opciones de tu servidor y hacer clic en Database:

Cliquea en el botón verde Create Database.

Luego, ve hasta abajo y cliquea en el botón que dice Create Database User.

Después, ve a la base de datos que creaste y cliquea en Grant User y selecciona el usuario que acabas de crear.

4. Privilegios de administrador

Información Importante

Para esta sección voy a dar un ejemplo enfocado en Amazon Lightsail, pero la información aplica para cualquier servidor.

Ya creamos una aplicación web y le asignamos un usuario del sistema, ahora, tenemos que darle privilegios de administrador a ese usuario para poder instalar y configurar Ghost CMS correctamente.

Lo primero es acceder a tu servidor como Root utilizando Terminal (Mac OSX / Linux) o Powershell / Putty (Windows), otra opción es Termius que es la que yo uso y sirve para los tres sistemas operativos, además, tiene aplicación móvil, lo mejor de todo es que la puedes conseguir gratis si eres un estudiante con Github for Education y su developer pack.

Para entrar como Root tienes que usar esto (cambiando <tudireccionip> por la IP de tu servidor):


ssh root@<tudireccionip>

Ahora que ya accediste a tu servidor, corre este comando:


usermod -aG sudo elsusuariodelaapp

Luego utiliza este para salir del servidor:


exit

Ejemplo para Amazon Lightsail

Entras a tu cuenta de Lightsail y cliqueas en este ícono del servidor donde instalaste la aplicación de Ghost CMS:

En la consola, corres el siguiente comando:


sudo -i

Luego, el siguiente:


usermod -aG sudo elsusuariodelaapp

Ya con eso le dimos privilegio de administrador al usuario de Ghost CMS.

Información Importante

Los privilegios de administrador son necesarios para permitir la instalación de Ghost-CLI. Puedes quitarlos una vez que termines de instalar todo, si es necesario.

5. Actualizar Node a la última versión

En mi experiencia, Runcloud tiene una versión vieja de Node lo cual nos puede traer problemas a la hora de instalar y configurar Ghost es por eso que actualizarlo a la última versión es lo primero que tenemos que hacer después de darle los permisos a nuestro usuario de Runcloud.

Esta vez accedemos al servidor por medio de SSH con nuestro usuario de Runcloud, si lo haces por medio de Termius es tan fácil como poner tu usuario y contraseña.

Después, corres este comando:


curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

Puedes ver la última versión accediendo al sitio de Node haciendo clic acá, una vez que lo sabes modificas la parte de setup_12.x de arriba, reemplazando 12 con la versión que deseas.

Con eso listo, ahora si podemos proceder a instalar Ghost CMS.

6. Instalar Ghost-CLI

Ghost-CLI es una herramienta de líneas de comando que te va a ayudar a instalar Ghost CM y configurarlo para tu uso de una manera rápida y fácil.

Lo primero es volver a acceder a tu servidor, sería algo así:


ssh mybloguser@<youripaddress>


Es lo mismo que hicimos antes.

Recuerda que desde Runcloud puedes cambiar la contraseña del usuario en caso de que la olvidaras:

CUIDADO

No accedas como ROOT para evitar problemas con los permisos de archivos y carpetas.

Accede al directorio de tu aplicación:


cd webapps/tuappdeghost

Elimina el archivo index.html del directorio, porque sino no vamos a poder inslatar Ghost ahí:


rm index.html

Ahora corre este comando para instalar Ghost-CLI:


sudo npm install ghost-cli@latest -g

Una vez instalado, puedes correr este comando para ver todos los disponibles:


ghost help

7. Instalar Ghost CMS

Ahora podemos correr este comando para empezar la instalación de Ghost:


ghost install

Deberías ver algo así:

  1. Enter your blog URL: acá pones el dominio que elegiste al crear la aplicación en Runcloud.

  2. Enter your MySQL hostname: localhost

  3. Enter your MySQL username: acá pones el usuario de la base de datos que creaste.

  4. Enter your MySQL password: acá pones la clave del usuario de la base de datos.

  5. Enter your Ghost database name: acá pones el nombre de la base de datos.

  6. Do you wish to set up NGINX: NO.

  7. Do you wish to set up Systemd: YES.

  8. Do you want to start Ghost: YES.

Listo, ya está instalado, ahora tenemos que hacer unas configuraciones especiales en NGINX para que podamos verlo en el dominio.

8. Configurar NGINX

Si intentas acceder a tu dominio vas a encontrarte con un eror 404, por eso, tenemos que configurar el servidor.

Pero antes de comenzar a hacerlo, tenemos que saber en qué puertos está corriendo Ghost, y para conocer esto hay que correr este comando:


ghost ls

Ahora ve a Runcloud, abre tu aplicación web, ve al menú de Nginx Config y cliquea en Create Config:

  • Para Type selecciona location.root

  • Para Config Name puedes poner ghost

  • Para Config Content, copia y pega lo siguiente:


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:XXXX;

Por favor, cambia XXXX con el número de puerto de Ghost.

Puedes hacer clic en Run and Debug para ver si hay algún problema con esta configuración.

Cliquea en Add Config para guardar y finalizar.

Ahora todo está configurado y listo para utilizar.

Accede a https://youdomain/ghost y deberías ver esto:

Si no ves eso significa que algo salió mal, en ese caso te recomiendo correr este comando:


ghost doctor

Lo cual corre unas revisiones y se debería ver así:


Resumen

Si quieres crear un blog headless, Ghost CMS es una gran opción que te brinda una experiencia moderna y minimalista, perfecta para escribir tus artículos de una manera sencilla y enfocada.

Instalarlo en Runcloud es bastante fácil y si sigues los pasos mencionados anteriormente no debería tener ningún inconveniente.

¿Estás pensando en usar Ghost? ¿Ya lo instalaste?

¡comparte tu experiencia abajo en los comentarios!