Cómo Instalar Ghost CMS en Digital Ocean

Logo Oficial de Ghost CMS en fondo negro y Logo de color blanco.
Logo Oficial de Ghost CMS.

¿Quieres instalar Ghost CMS en Digital Ocean pero no sabes por dónde empezar? En esta guía paso a paso aprenderás cómo instalar Ghost CMS en Digital Ocean listo para producción, configurar dominio, añadir llave SSH, obtener un SSL automático y tener el primer acceso al panel de Ghost.

Ghost CMS es una plataforma de blogging en constante crecimiento, construida y desarrollada con JavaScript, Node.js, HTML y CSS, mientras que Digital Ocean es un proveedor de servicios en la nube enfocado en ser simple, rápido y mas económico que otras plataformas (AWS, Google Cloud, Microsoft Azure). Gracias a la colaboración de estas dos empresas, ofrecen al público una solución sencilla y fácil de implementar, para instalar Ghost CMS en Digital Ocean de una vez listo para producción, y con muy pocos clicks.

Guía paso a paso para configurar Ghost CMS en producción

  1. Requisitos Previos
    1. Registrarse en Digital Ocean
    2. Comprar un Dominio
  2. Instalar Ghost CMS en Digital Ocean
    1. Iniciar Instalación
    2. Configurar SSH Key
    3. Crear Droplet de Ghost CMS.
  3. Configurar Dominio en Digital Ocean
    1. Iniciar Configuración
    2. Verificar Configuración
  4. Finalizar Setup de Ghost CMS
    1. Últimos Ajustes
    2. Probar el Blog

Requisitos Previos

Es necesario verificar y completar los requisitos previos de instalación, son muy importantes para que mas adelante no encuentres tropiezos y no pierdas las ganas de ensayar Ghost CMS. Yo me encargo de que lleguemos hasta el final de esta guía con éxito, tu te encargas de seguir el paso a paso; que sea un acuerdo entre nosotros.

Registrarse en Digital Ocean

Debes crear una cuenta en Digital Ocean, es muy sencillo y puedes hacerlo con tu correo electrónico y no demorarás mas de 5 minutos, para mi sorpresa, una vez inscritos nos regalan $200 dolares en créditos gratuitos para un periodo de 60 días (punto para Digital Ocean 😉). Es decir, tienes 2 meses para probar gratis lo que necesites sin que sobrepases el valor de los productos o servicios en $200 dolares, la verdad, es mas que suficiente.

Panel de Administración que muestra el plan gratis en DigitalOcean por 60 días.
DigitalOcean gratis por 60 días.

Pero hay un pequeño truco, debes registrar una tarjeta de crédito en DigitalOcean para confirmar tu identidad, cuando la registras se realiza un cobro simbólico de $1 dolar, que a los pocos minutos (o cuando DO confirme tu identidad) te los regresa a tu tarjeta de crédito como un mensaje de compra rechazada. Seguidamente el panel de administración te muestra el mensaje que tienes $200 créditos gratuitos (imagen anterior).

Puedes tener la confianza que si no superas los limites del plan gratis en DigitalOcean, no se te cobraran recargos a tu tarjeta, es decir, no debes superar los $200 dolares gratuitos en 60 días.

💡
Cuando registres tu tarjeta de crédito, cierra la sesión en DigitalOcean y vuelve a ingresar, por lo menos a mi me toco hacerlo así para que me desapareciera el mensaje que tenia configuración de pago pendiente.

Si el mensaje de Action Needed no desaparece, no vas a poder instalar ningún producto o servicio de DigitalOcean.

Panel de administración en DigitalOcean informando que falta configurar método de pago.
Pendiente configurar método de pago en DigitalOcean.

Comprar un Dominio

Es necesario que adquieras uno para que puedas configurar el dominio para Ghost CMS en Digital Ocean. Hay maneras de conseguir dominios gratuitos (lo revisaremos en otro artículo), también hay proveedores de pago, algunos son empresas grandes y de buena reputación como Hostinger, GoDaddy y el mismo DigitalOcean, también hay proveedores locales a tu país/región, y puedes elegir cualquiera que conozcas o te genere confianza.

Lo que hacen muchas personas (y me sumo a ese grupo) es comprar un dominio en Hostinger, en lo personal nunca he probado con otro proveedor 😅, pero por los años que llevo usándolo me parece bueno, de confianza y económico, de igual manera puedes elegir el que mas te guste.

Aquí lo importante es cómo apuntar dominio de Hostinger a Digital Ocean, o como hacerlo desde tu proveedor de preferencia, para mi situación, entre al panel de administración de Hostinger a la sección de Dominios y desde allí poder configurar los servidores DNS de DigitalOcean.

  • ns1.digitalocean.com
  • ns2.digitalocean.com
  • ns3.digitalocean.com
Panel de administración en Hostinger para gestión DNS.
Configurar dominio en Hostinger.
Administrador de Hostinger para Servidores DNS, ingresando valores para Digital Ocean.
Configurar servidores DNS de DigitalOcean en Hostinger.
💡
Por lo menos en Hostinger (no se si en otros proveedores), cuando doy click en guardar, me sale alguna ventana de advertencia informando que esos servidores DNS no pertenecen a Hostinger o incluso que son incorrectos, pero no importa!, debes continuar dando click en guardar, aquí lo importante es que estés seguro que los valores de los servidores DNS de Digital Ocean, sean los correctos.

Instalar Ghost CMS en Digital Ocean

Ahora si, hemos llegado al punto álgido y mas importante del proceso, la instalación, y para familiarizarnos con el entorno en DO debes aprender este concepto, ¿Qué es un Droplet en DigitalOcean? Es básicamente una máquina virtual o servidor en la nube que puedes instalar y administrar fácilmente, lo fascinante para nosotros, es que Digital Ocean tiene algunos droplets con software pre-instalado para facilitar las configuraciones, la comunidad también conoce esta metodología como One-Click App.

Iniciar Instalación

Te confirmo lo que estas pensando, Digital Ocean tiene un droplet pre-configurado para Ghost CMS, lo que nos reduce el proceso de instalación de manera significativa. Ve al panel de administración de DigitalOcean y en la izquierda busca la opción de droplets.

Encontrar menú droplets en panel de administración de DigitalOcean.
Menú droplets en panel de administración de DigitalOcean.
En panel de administración de DigitalOcean dar click en Create Droplet.
En la derecha seleccionar Create Droplet.
Ventana de droplets en DigitalOcean en la sección Marketplace para filtros de búsqueda.
Buscar Marketplace que es donde están los droplets pre-configurados.
Seleccionar Droplet de Ghost CMS en DigitalOcean en la sección de Marketplace.
Droplet de Ghost CMS en Digital Ocean.

Ahora puedes seleccionar las opciones de configuración del droplet que por defecto viene con Premium Intel para el tipo de almacenamiento de disco duro, pero es mas costoso, puedes seleccionar Regular que para nuestro objetivo es mas que suficiente y además de ser mas económico. También se habilitan características de hardware (CPU, cantidad de almacenamiento en disco duro y velocidad de transferencia de datos) y cuando yo seleccione Regular como tipo de disco, por defecto quedo seleccionado $24/mo, para mi esta bien y lo deje así, aunque puedes incluso seleccionar uno mas económico como $12/mo.

Ventada con selección de tipo de disco duro como Regular y precio de 24 dolares/mes.
Opciones de configuración de precio y hardware para el droplet.

Configurar SSH Key

Llegamos a un momento crítico, configuraciones de SSH para el droplet, por defecto viene seleccionado Password pero yo te recomiendo seleccionar SSH Key (ademas de ser como esta explicado en esta guía).

Sección para seleccionar SSH Key que se configurará en el droplet.
SSH Key para Droplet en DigitalOcean.
Botón para agregar configuración de SSH Key al droplet en Digital Ocean.
Click en Add SSH Key.

Nos aparece una ventana modal, y en la parte derecha nos muestra un pequeño paso a paso para poder crear o generar nuestros datos de autenticación por medio de SSH.

Ventana que muestra comando para crear llave SSH para conectarse por SSH a Digital Ocean
Copiamos el comando para ejecutarlo en una terminal o símbolo del sistema.

Abres el símbolo del sistema (cmd) en Windows de tu computadora, o la terminal de Linux y ejecutas el comando que nos recomienda DigitalOcean, seguido de esto, la terminal nos hará unas preguntas:

  1. Ingresar nombre del archivo donde se guardara la llave ssh: Puedes dejarlo vació y el script generará un nombre por defecto (así lo hice yo).
  2. Ingresar un llave secreta: Puedes escribir una frase, palabra, contraseña con la que se encriptarán las llaves SSH y adicional, cuando te vayas a conectar a tu droplet se te solicitara esta llave a modo de contraseña, también puedes dejarle vació (pero te recomiendo asignar un Passphrase).
  3. Finalmente se crean los archivos de llaves SSH, el script te muestra la ruta donde quedaron almacenados, en mi caso fue C:\Users\alex/.ssh/id_edxxx y C:\Users\alex/.ssh/id_edxxx.pub. De vital importancia este último que termina con extensión pub, lo utilizaremos en el panel de administración de Digital Ocean mas adelante.
> ssh-keygen
Símbolo del sistema, fondo negro con resultado de ejecución comando ssh-keygen.
Ejecutar el comando ssh-keygen en símbolo del sistema.
Directorio de Windows con archivos ssh generados, importante el de extensión pub.
Carpeta de Windows donde quedan guardadas las llaves ssh.

De regreso en el panel de administración de Digital Ocean, debes copiar el contenido del archivo que termina con extensión pub, lo puedes abrir con cualquier editor de texto, lo copias y lo pegas en la ventana modal de seguridad SSH en Digital Ocean. También puedes asignarle un nombre a esta llave SSH, porque si mas adelante creas mas droplets, puedes usar la misma llave y conectarte desde tu computadora sin inconvenientes.

Ventana de Digital Ocean para agregar llave pública SSH en formato texto.
Agregar la llave SSH pública a Digital Ocean.

Crear Droplet de Ghost CMS.

Finalmente podemos crear el droplet, esto tardará unos minutos y Digital Ocean instalará automáticamente por nosotros todo el software necesario para tener Ghost CMS en producción, aunque mas adelante vienen unas configuraciones adicionales, esta metodología evita instalaciones y configuraciones manuales de la base de datos Myql, Node.js, llaves SSH, firewall de Linux ufw, Nginx, etc. (esto es ser un poco trágicos 😅 porque Ghost tiene un script que también realiza una instalación automática por nosotros, pero es un digno tema para otro artículo).

Botón en Digital Ocean para crear o instalar el droplet de Ghost.
Click en Create Droplet para instalar Ghost CMS en Digital Ocean.
Ventana de Administración con Droplet Ghost CMS ejecutandose.
Verificar en consola de administración que el droplet esta ejecutándose.

Si te fijas en donde dice IPv4, es la dirección IP pública de tu droplet, tenerla presente porque es fundamental para lo que sigue mas adelante.


Configurar Dominio en Digital Ocean

Hasta aquí, ya hemos instalo Ghost CMS en Digital Ocean, aun faltan algunas configuraciones para que todo que funcionando, pero lo mas importarte ya lo hemos solucionado.

Iniciar Configuración

¿Cómo configurar un Dominio en Digital Ocean? Primero debemos relacionar nuestro dominio a la dirección IP pública que nos entrego el droplet. En el panel de administración puedes verla donde dice IPv4 (imagen anterior), confirma muy bien la dirección IP asignada a tu droplet. Seguidamente vamos al menú Networking para apuntar dominio de Hostinger a Digital Ocean.

Panel de DigitalOcean con selección de menú Networking y submenú Domains.
Menú Networking y seleccionar Domains
Ventada en Digital Ocean para agregar nuevo dominio.
Si no tienes dominios, se muestra una opción para agregar uno nuevo.

Escribimos nuestro dominio, y damos click en Add domain, recuerda escribirlo sin https, por ejemplo, podría ser algo así de acuerdo al dominio que hayas comprado.

noticiasdeldia.com
noticiasdeldia.blog
noticiasdeldia.io
Ventana emergente para conectar dominio Hostinger con Digital Ocean.
Configurar dominio Ghost CMS en Digital Ocean
En la ventana se selecciona Create record
Seguidamente seleccionar Create a record.

En esta ventana es donde realmente podemos conectar el dominio de Hostinger con Digital Ocean IP, yo comento Hostinger porque es el proveedor que yo elegí, pero tu puedes tener cualquier proveedor de tu preferencia. Es importante tener en cuenta lo siguiente, en la campo Hostname debes poner el símbolo @, esto relaciona directamente el dominio que configuraste en el paso anterior.

Y en Will direct to, debes seleccionar el nombre de tu droplet, esto automáticamente lo relacionara con la dirección IP pública de tu droplet.

Ventana para conectar dominio Hostinger con Digital Ocean
Conectar dominio Hostinger con Digital Ocean IP
Panel que muestra nuevo registro de dominio Tipo A y la dirección IP pública asociada.
Encontraras tu dominio con el registro Tipo A y la dirección IP de tu droplet.

Verificar Configuración

Después de haber realizado las configuraciones de los pasos anteriores y haber creado el registro de dominio tipo A, la propagación de la relación entre tu dominio con la dirección IP pública en la red de Internet puede tardar hasta 48 horas (es un recordatorio que nos hacen los proveedores), sin embargo y en mi experiencia, en la mayoría de los casos no tardan mas de 1 hora, incluso a los 5 minutos ya me ha funcionado, de todas maneras hay que tener presente ese recordatorio por si puede llegar a tardar las 48 horas.

Para que puedas confirmar definitivamente si ya esta asociado tu dominio con la dirección IP pública, puedes realizar un ping a tu dominio desde una terminal de Linux o símbolo del sistema de Windows, si recibes respuesta desde la dirección IP que esta asignada en tu droplet entonces ya todo esta correcto y configurado.

Símbolo del sistema, prueba de ping a dominio con respuesta de IP publica de DO.
Ping a tu dominio con respuesta desde IP pública asociada al droplet.

Finalizar Setup de Ghost CMS

Ya tenemos todo listo para las configuraciones finales de nuestra instalación, es decir, vamos a informarle a Ghost cual es la URL o dirección web de nuestro dominio y también informarle nuestro correo electrónico para que el script automático de Digital Ocean con Ghost CMS ajusten la seguridad HTTPS con Nginx, Cerbot y Let's Encrypt (no te preocupes por como se hace, solo debemos saber que es un script automático).

Últimos Ajustes

En la sección de configuraciones de ssh establecimos nuestros archivos de seguridad, entonces vamos al símbolo de sistema de Windows o en la terminal de Linux y ejecutamos el siguiente comando, donde:

  • root es el usuario por defecto que asigna el droplet al sistema operativo.
  • x.x.x.x es la dirección IPv4 pública que el droplet asigno a la instalación de Ghost CMS, si no la recuerdas, puedes regresar aquí para que puedas identificarla.
> ssh root@x.x.x.x
Símbolo de sistema en fondo negro con conexión ssh al droplet de Ghost CMS.
Conectarse al droplet desde símbolo del sistema o terminal por medio de SSH.

Recuerda que si asignaste un Passphrase lo tienes que ingresar, si no lo creaste, no tienes que escribir nada y puedes dejar la pregunta en vació, esas configuraciones las hicimos unos pasos antes aquí en caso que no lo recuerdes.

Una ves te autenticas correctamente, el droplet de Ghost CMS instala las herramientas CLI, paquetes, librerías y muestra el mensaje que se realizarán unas preguntas para finalizar la configuración, presiona Enter, o si no pasa nada con Enter, presiona cualquier tecla y después Enter.

Símbolo de sistema de Windows con la ejecución de script automático para Ghost CMS.
Script automático de configuración del droplet de Ghost CMS.,

Seguidamente el script empieza a realizar las configuraciones automáticamente, y se te realizarán dos preguntas, ingresa tu dirección URL del blog (Enter your blog URL), y debes ingresarla con https, ejemplo, si el dominio que compraste es noticiasdeldia.com entonces colocas:

https://noticiasdeldia.com

Y para la pregunta de ingresa tu email (Enter your email), colocas tu correo personal (por lo menos así lo hice yo). Esto es necesario para la configuración de SSL en Digital Ocean para Ghost CMS.

Símbolo del sistema para configurar dominio de Ghost CMS y correo para SSL.
Configurar Dominio Ghost CMS en Digital Ocean

Después de unos minutos, el proceso para como instalar Ghost CMS en Digital Ocean finalmente termina, el script nos avisa por un mensaje en la consola que todo fue exitosamente (ojala así haya sido para también 🙌) y nos muestra la URL del panel de administración de tu blog.

Símbolo del sistema que muestra el final de la instalación de Ghost CMS.
Ghost CMS con Base de Datos, Nginx, SSL y HTTPS en Digital Ocean.

Acá tenemos que hacer unos comentarios importantes, el script automático configura Ghost CMS con una base de datos en Digital Ocean todo internamente en el droplet para el funcionamiento del blog, también queda configurado Ghost CMS con Nginx y con SSL para la conexión segura por medio del protocolo HTTPS, lo que da a nuestro nuevo sistema de blog todos los ajustes mínimos para ser un entorno eficiente, veloz y seguro. Solo nos faltaría revisar su funcionamiento y su interfaz gráfica que es realmente fabulosa, minimalista y se ajusta a los requerimientos profesionales para un sitio o blog de publicaciones, espero lo disfrutes y le encuentres un propósito así como lo he hecho yo 😉.

Probar el Blog

Ya puedes entrar a la URL de tu blog, recuerda utilizar https, y deberías ver la página de entrada, home o index con las configuraciones por defecto.

Google Chrome que carga el sitio web de tipo Blog que se instalo con Ghost CMS.
Página de bienvenida de tu blog.

En el navegador si agregas a la dirección principal de tu blog lo siguiente: /ghost, al ser la primera vez que intentas entrar al panel de administración, se te abrirá un formulario para que te registres con tus datos, y siguiendo el ejemplo que venimos trabajando, seria algo así:

https://noticiasdeldia.com/ghost
Formulario para registro, primera vez en Ghost CMS.
Formulario para registro, primera vez en Ghost CMS.
Vista del panel de administración de Ghost CMS.
Vista del panel de administración de Ghost CMS.

Ya que llegaste hasta aquí, te felicito, y deseo que todo de haya funcionado correctamente para que puedas disfrutar de esta magnifica plataforma. ¿Que sigue? Empezar a aprender la estructura general de Ghost CMS para que puedas publicar tus propios artículos, como también como realizar las primeras personalizaciones.

Si tuviste problemas, quédate un poco mas, tengo una sección de errores frecuentes que puede ayudarte, y si no es así, no dudes en contactarme.