Desplegar una web con Oracle Cloud paso a paso
Durante los últimos meses hemos estado programando un buscador centralizado de gasolineras en España, pudiendo filtrar por distancia, precios de combustibles, nombres de gasolinera, ubicación, ciudad, código postal.
Aprovecho para presentaros AhorroGasolina.com

Y claro, una vez programado, testeado, recontracomprobado todo, comprado incluso el dominio… surgió una duda. ¿Dónde narices desplegamos esto? Porque sí, la web funciona de maravilla, es realmente útil… pero tampoco quiero gastarme dinero en un proyecto que no va a recibir, al menos de momento, una retribución económica. Y un conocido presentó la solución, Oracle Cloud Always Free, la solución de hosting y despliegue 100% gratuita de Oracle para proyectos personales.
¿Es la más rápida? NO. ¿Es la mejor? NO. ¿Hay que pagar por ello? ROTUNDAMENTE NO. Y eso me parece algo maravilloso.
Así que para rematar toda la odisea que ha sido programar una web como AhorroGasolina.com, os dejo un tutorial sobre como desplegar una web en Oracle Cloud paso a paso.
Crear el entorno en Oracle Cloud
Requisitos previos
Para esta tarea, voy a partir de dos supuestos. El primero, que vuestra aplicación web está dockerizada para poder implementar Coolify, tanto el backend como el frontend.
El segundo supuesto, y aún más importante si cabe, que os habéis creado ya una cuenta en Oracle Cloud Always Free. Si no la tenéis aún, seguid este enlace para crearla.
A partir de ahora, ya podremos trabajar para levantar tranquilamente una máquina virtual en nuestra instancia de Oracle.
Crear VCN (Virtual Cloud Network)
Lo primero de todo, antes de crear cualquier instancia, va a ser comprobar que tenemos una VCN que sea capaz de suministrarnos posteriormente una IP pública a la que enlazaremos nuestro dominio web.
Para ello, nos vamos, en el menú lateral izquierdo, a Networking -> Virtual Cloud Networks.

Pulsamos en Actions -> Start VCN Wizard y elegimos Create VCN with Internet Connectivity. Esto creará automáticamente la VCN, una subnet pública y las tablas de enrutamiento necesarias


En los campos que nos aparezcan, simplemente configuramos nuestro nombre identificativode VCN, dejamos el resto por defecto y pulsamos next.

Pasaremos a una zona de Review and Create donde debemos comprobar que se ha generado todo correctamente y pulsamos sobre View VCN. Con esto ya tenemos generada nuestra VCN y podemos proseguir levantando la instancia de la máquina virtual.

Creación de instancia de máquina virtual
Para el segundo paso, que será crear una máquina virtual donde alojar nuestra aplicación dockerizada.
De nuevo en el menú lateral izquierdo, nos vamos a Compute -> Instances y seleccionamos Create instance.


Rellenamos la información básica, como su nombre y el compartimento donde crearlo, que será por defecto nuestro usuario root, y seleccionamos el dominio que nos aparezca disponible, sin modificarlo.

En la sección de Advanced Options elegimos On-demand capacity que, de nuevo, es la opción gratuita. Si quisieramos algo más serio esta configuración podría llegar a quedarsenos corta, según nuestro flujo de uso posterior.

Hecho esto, vamos a pasar a configurar la parte de requisitos de nuestra máquina virtual. Por defecto la imagen de SO es Oracle Linux pero, y esto es muy importante, si al igual que yo quieres desplegar con Docker y Coolify, debes cambiarlo a Ubuntu/Debian/CentOS, ya que Oracle Linux no se encuentra entre los sistemas soportados. Dicho lo cual, si te quieres lanzar con ese sistema operativo debes saber que tienes una herramienta equivalente llamada iptables-services.
En mi caso usaremos la imagen de Ubuntu en su versión 22.04 minimal aarch64. El motivo es sencillo, la versión Always Free de Oracle corre con una arquitecta de shape Ampere A1 y la versión minimal aarch64 es la única que lo soporta sin ningún tipo de incompatibilidad registrado.


En la sección de Shape, tal y como hemos comentado, vamos a elegir la opción de Ampere A1 Flex, que es la opción de Always-Free-eligible e incluye 1 core, 6GB de memoría y 1 Gbps de ancho de banda.

Configurado esto, pulsamos Next en la esquina inferior derecha y vamos a la sección de seguridad. Aquí vamos a dejar los valores por defecto, sin activar, ya que no tienen mucho sentido para nuestra página web, pero aún así me detengo brevemente a explicarte.
Tenemos dos opciones, la primera de Shield Instance se dedica a proteger contra malware a nivel de firmware/bootloader, y es demasiado excesiva para una aplicación como ésta. La segunda opción es un cifrado de memoria RAM pero que puede llegar a provocar incompatibilidades con Coolify y, en el caso de que eso suceda, habrá que volver a levantar desde cero toda la instancia ya que no se permite la edición de éstas configuraciones a posteriori una vez creada la VM.

Pasamos a la siguiente opción. Primary VNIC(virtual network interface card) es una instancia de la red privada donde vivirá nuestra máquina virtual. Digamos que sería el equivalente a una red local pero en el ecosistema de Oracle Cloud. De esta manera se consigue aislar los recursos del resto de clientes Oracle (aunque seguro que eso ya lo sabías si has llegado hasta aquí, pero quedan bonitas estas notas aclaratorias, ¿no te parece?).
¿Qué es lo que vamos a hacer nosotros aquí? Basicamente dejarlo todo en automático para intentar romper el menor número posible de cosas.
Como Primary Network vamos a elegir Select existing virutal cloud network y elegimos la VCN que creamos en pasos anteriores. Como subnet hacemos exactamente lo mismo.

Llegados a este punto sólo nos queda configurar las IPv4, tanto pública como privada. Vamos a dejar las opciones por defecto, en Private IPv4 address assignment nos aseguramos de que esté seleccionada la opción de Automatically assign private IPv4 address y en Public IPv4 address assignment nos aseguramos que esté marcado el check de Automatically assign public IPv4 address

Lo siguiente va a ser generar nuestras claves pública y privada para conectarnos con ssh a la máquina virtual. Nos aseguramos de tener marcada la opción de Generate a ket pair for me dentro de Add SSH keys y nos descargamos ambos ficheros, el de clave privada y el de pública, y pulsamos next. Nota importante: El fichero de clave privada sólo podrás descargarlo en esta pantalla, nunca más. ¡NO LO PIERDAS!

Vamos con la sección de Storage ahora. A no ser que tu proyecto necesite más de 46.6 GB que es el tamaño por defecto del volumen, puedes dejar la configuración por defecto. En mi caso el docker ocupa menos de 1GB, la base de datos pocos megas (y no tiene visos de crecer mucho más). Haciendo una estimación contando la imagen del sistema operativo, no voy a necesitar más de 15GB y eso siendo muy generoso.

Una vez finalizado todo, pasaremos a ver una pantalla de resumen y podremos pulsar Createpara generar nuestra instancia de máquina virtual.
Problemas a tener en cuenta
Es muy posible que, al terminar la configuración de la máquina virtual y tratar de crearla te de este error:
Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1. Create the instance in a different availability domain or try again later.If you specified a fault domain, try creating the instance without specifying a fault domain. If that doesn’t work, please try again later.Learn more about host capacity.
Es un error muy común en Oracle Free Tier. Las VMs ARM Ampere A1 son muy demandadas y la capacidad es limitada por zona. Aquí hay dos posibilidades:
- Cambiar de availability domain, que es lo más rápido. En la sección de
placementde la instancia, cambiar de AD-1 a AD-2 o AD-3 si tu región los tiene. - Reintenta más tarde. Oracle liberar capacidad de forma impredecible. Reintenta crear la máquina en otros momentos del día.
¡Salud y coding!
Comentarios