3 min read

Inicia tu blog de forma gratuita con Ghost, Umami y Oracle Cloud: mi aventura

Después de buscar la forma perfecta de establecer mi marca personal, decidí embarcarme en un proyecto emocionante: crear mi blog desde cero utilizando software de código abierto.
Inicia tu blog de forma gratuita con Ghost, Umami y Oracle Cloud: mi aventura
Photo by RetroSupply / Unsplash

En la búsqueda de compartir lo que voy aprendiendo sobre el uso de Docker y otras herramientas, emprendí la creación y gestión de un blog que solo requiere un recurso: mi tiempo. Así que inicié este proyecto utilizando herramientas gratuitas y de software libre para encaminar mi marca personal. Es así como decidí utilizar Ghost como plataforma de blogs, Umami como herramienta de análisis y Oracle Cloud como proveedor de infraestructura. ¡Vamos a darle!

Oracle Cloud: La nube que hace posible todo.

Elegí Oracle Cloud Always Free como servicio de infraestructura para alojar este proyecto, ya que ofrece un plan gratuito con características muy buenas, entre las cuales destacan:

  • 2 máquinas virtuales basadas en AMD con 1/8 OCPU** y 1 GB de memoria cada una.
  • Núcleos Ampere A1 basados en ARM y 24 GB de memoria utilizables, que se pueden configurar como 1 máquina virtual o hasta 4 máquinas virtuales con 3,000 horas de OCPU y 18,000 GB de horas al mes.
  • 10 GB de almacenamiento en archivo.
Los servicios Always Free forman parte de la capa gratuita de Oracle Cloud y están disponibles por tiempo ilimitado, aunque con algunas limitaciones. A medida que nuevos servicios Always Free estén disponibles, también podrás utilizarlos automáticamente.

La instancia configurada cuenta con las siguientes características:

  • Procesador: Ampere (basado en ARM)
  • OCPU: 2
  • Memoria RAM: 12 GB
  • Almacenamiento: 50 GB
Instancia Oracle Cloud Always Free
Almacenamiento

Servicios Docker.

Instalamos Docker en la instancia de Oracle Cloud Always Free para implementar los servicios que hacen posible el proyecto del blog. Los servicios configurados e instalados son los siguientes:

  • Ghost: Es una plataforma de código abierto para crear y gestionar blogs o sitios web de publicaciones. Se enfoca en ofrecer una experiencia sencilla y rápida, con herramientas para gestionar contenido, personalizar el diseño y realizar análisis de tráfico.
  • Nginx Proxy Manager: Es una interfaz gráfica de usuario para gestionar Nginx como proxy inverso. Permite configurar redirecciones, certificados SSL, y gestionar múltiples servicios web de manera fácil a través de una interfaz web, ideal para usuarios que no están familiarizados con la línea de comandos.
  • MySQL: Es un sistema de gestión de bases de datos relacional de código abierto. Utiliza el lenguaje SQL para gestionar y almacenar datos en tablas. Es muy popular en aplicaciones web debido a su rendimiento y fiabilidad.
  • DuckDNS: Es un servicio de DNS dinámico gratuito que permite asignar un nombre de dominio a una dirección IP dinámica, útil para acceder a servidores domésticos o redes locales a través de Internet, sin la necesidad de una IP estática.
  • Umami: Es una herramienta de análisis de tráfico web de código abierto. Es ligera, fácil de usar y respeta la privacidad del usuario, proporcionando información sobre el rendimiento del sitio web y su audiencia sin depender de servicios de terceros.

Instalación.

Las configuraciones para cada uno de los servicios implementados las dejo en mi repositorio de GitHub, denominado MiBlog. Podrás obtener una copia descargando el archivo docker-compose.yml con el siguiente comando de consola en Linux:

wget -c https://raw.githubusercontent.com/jkarlozm/mismicroservicios/refs/heads/main/miblog/docker-compose.yml
wget -c https://raw.githubusercontent.com/jkarlozm/mismicroservicios/refs/heads/main/miblog/.env

Una vez obtenido el archivo, la instalación de los servicios se realiza ejecutando el siguiente comando:

docker compose up -d

Mi recomendación es instalar los servicios por separado, para poder validar que cada uno se implementa de manera correcta. Esto lo puedes hacer con el siguiente comando:

docker compose up -d [nombre_servicio] && docker logs -f [nombre_servicio]

Conclusión.

La implementación del blog ha tenido su curva de aprendizaje. El siguiente reto al que me enfrentaré, y que me costará un poco de trabajo, será agregar contenido, lograr que los servicios se actualicen de manera automática y mantener el monitoreo de los servicios. Esto se facilitará con la implementación de Watchtower y Uptime Kuma, de los cuales espero escribir pronto.