Una solución OpenSource, Full Responsive, con CMS integrado, capacidad para varios editores, Newsletter y suscriptores.
primero lo primero
la musica correcta para la tarea. Sugerencia del chef:
1- Creamos una cuenta de AWS.
Vale, ahora que ya estamos en el mood, toca crearse una cuenta gratuita de AWS.
2- Creamos una Instancia EC2
En este ejemplo llamaremos a la instancia 'blog'. Erigiremos un Ubuntu Server 20.04 LTS (Free tier eligible)

En Instance type, vamos a elegir una t2.micro 1GiB Memory (Free tier elegible)

Key pair(login) crearemos una nueva llave para conectarnos a la consola por ssh.

Una vez creada la llave, se descargara {tuLlave}.pem. Si estas en iOS o Linux puedes saltar al siguiente paso. Si estas en Windows, tienes que copiar la llave al directorio c:/users/{tuUsuario}/.ssh/

Dejamos los Networks Settings tal cual vienen por defecto por ahora. En Configure Storage, Asigna 30gb de espacio y deja todo lo demás como está. Dale a Launch Instance

3- Conectarse por consola
Ahora entramos nuestra instancia, y le damos al botón de Connect. Una vez dentro, elegiremos SSH Client y seguiremos los pasos indicados en la imagen para conectarnos.

No te olvides de abrir la terminal desde el directorio de donde esta la llave que acabas de generar:
ssh -i "tuLlave.pem" ubuntu@tuPublicDns
Deberías de ver como te conectas a la consola de Ubuntu 🚀

ROUND 2
nginx, mysql & ghost
4- Crear usuario server
Tenemos que crear un usuario que tenga acceso de admin sobre nginx, mysql y ghost. Para ello, vamos a escribir:
# Creamos usuario 'server'
sudo adduser server
# Añadimos al usuario al grupo de superuser para tener los derechos de admin
sudo usermod -aG sudo server
# Ahora nos logueamos con el usuario server
sudo su - server
Al crear el usuario, puede que te pida ingresar una contraseña. Luego te pedirá datos como nombre, teléfono, fax, etc que puedes simplemente darle al enter y pasarlos.
Notaras como cambiaste de Ubuntu a server en la consola. Lo siguiente es actualizar antes de instalar lo que sigue.
sudo apt-get update
sudo apt-get upgrade
5- Instalar & Configurar Nginx
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
6- Instalar & Configurar MySQL
sudo apt-get install mysql-server
sudo mysql
Inserta la siguiente línea en el registro:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
quit
7- Instala Node 16
Ghost solo funciona con la versión de Node 16.x, así que vamos a asegurarnos de bajar solo esa.
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash
sudo apt-get install -y nodejs
8- Instalar Ghost
sudo npm install ghost-cli@latest -g
9- Crear directorio para Ghost
sudo mkdir -p /var/www/blog
sudo chown servidor:servidor /var/www/blog
sudo chmod 775 /var/www/blog
cd /var/www/blog
10- Instalamos Ghost
ghost install
🛑La instalación va a un tiempo, sobre todo dependiendo de la cantidad de memoria RAM que le hayamos asignado al principio. Si bien en la documentación oficial que con tan solo 1GiB es suficiente, en mi experiencia 2GiB es realmente lo mínimo que necesitas para que corra decentemente, la diferencia con el de 4GiB tampoco es tan grande y permite escalar en caso de tener un sistema varios editores y muchos visitantes.
Los valores a completar del config son:
- BlogUrl: Ingresa aqui tu dominio, si todavi no lo tiene, no te preocupes deja el valor por defecto luego vamos a cambiarlo
- MySQL hostname: localhost
- MySQL username: root
- MySQL password: la contraseña que elegiste en el paso 6
- Ghost database name: deja el valor por defecto
Luego de eso, dale Yes a todo. Deberias ver que ghost esta corriendo en verde.
ghost ls
11-IP Elástica y Dominio
Genial! Ahora solo tenemos que ir a Network & Security > Elastic IPs y le damos al botón de Allocate Elastic IP address. Una vez creada, entramos en ella y le damos a Associate Elastic IP address y seleccionamos nuestra instancia

Esta IP, es la que usaremos para dirigir nuestro Dominio de donde sea que lo tengamos alojado. Yo en mi caso uso Namecheap que creo que tiene un excelente servicio de soporte y precios muy competitivos.
Para redireccionar su dominio, lo único que tienen que hacer es agregar un record del tipo A apuntando hacia la IP recién creada.
12- Abrir los puertos
Network & Security > Security Groups: seleccionas tu grupo (que se creo automáticamente cuando hiciste la instancia) le das al botón de Edit inbound rules y copias estos valores:

13- Última configuración de Ghost 🛠
Ahora en al terminal, escribe lo siguiente. Si aun no tienes dominio puedes reemplazarlo por la IP del paso 11.
ghost config url https://{tuDominio}
ghost config nginx
ghost config ssl
ghost restart
Ahora si van a su dominio https://tuDominio.com/ghost podrás acceder a tu panel de admin y terminar la configuración. Puedes crear tu primer post de inmediato para ver como se ve.
