Ghost CMS con Cloudinary en Fly.io
2023-01-22 — 4 min.Desde Julio (más o menos) Fly.io ya no ofrece un "free tier" pero tampoco cobra a las cuentas que facturan menos de 5 dólares al mes. Si vas a usar este tutorial para un proyecto en producción ten precaución con los recursos que utilizarás para no llevarte una sorpresa en la factura a fin de mes.
En este post, te mostraré cómo instalar Ghost CMS en Fly.io con la integración para alojar imágenes en Cloudinary que Ghost recomienda. T̵o̵d̵o̵ ̵e̵s̵t̵o̵ ̵d̵e̵ ̵m̵a̵n̵e̵r̵a̵ ̵g̵r̵a̵t̵u̵i̵t̵a̵
Recorrí algunos blogs y foros buscando una solución (y hasta la publicación de este post no existía una guía que muestre el procedimiento completo con resultados exitosos), quizá el que más se aproxima es este post de Joris Berthelot que fue vital para lograrlo.
Antes de empezar
Si no te interesa la integración con Cloudinary puedes seguir este tutorial.
Este post asume que tienes ciertos conocimientos con la terminal o consola de comandos (aunque las instrucciones serán suficientes para hacer todo de principio a fin). Aunque si o si...
- Debes tener una cuenta gratuita de Cloudinary.
- Debes tener una cuenta en Fly.io
- Debes tener flyctl (Fly CLI) instalada en tu equipo.
Configuración
Como primer paso, vamos a clonar (o hacer fork) el repositorio que contiene los archivos necesarios.
Una vez clonado el repo, nos dirigimos al archivo docker-compose.yaml
y reemplazamos nuestra CLOUDINARY_URL
con la que nos entrega Cloudinary en "API Environment variable". (La URL que empieza con cloudinary://...)
CLOUDINARY_URL: cloudinary://...
En el archivo fly.toml
reemplazamos algunas variables de entorno:
app = "el-blog-de-messi"
[ENV]
url = "https://el-blog-de-messi.fly.dev"
CLOUDINARY_URL = (como archivo anterior),
storage__ghost-storage-cloudinary__auth__api_key = "TU_API_KEY"
storage__ghost-storage-cloudinary__auth__api_secret = "TU_API_SECRET"
storage__ghost-storage-cloudinary__auth__cloud_name = "TU_CLOUD_NAME"
...
storage__ghost-storage-cloudinary__upload__folder = "nombre_de_la_carpeta_donde_se_guardaran_las_imagenes"
La variable url
que ingresamos será la que Fly usará como dirección de nuestro sitio web y en este caso "el-blog-de-messi" vendrá a ser también el nombre de nuestra app
.
Lanzando la aplicación
Con los archivos configurados vamos a decirle a Fly que queremos lanzar la app y desplegarla.
Ejecutamos el comando fly launch --no-deploy
(muy importante pasarle el flag).
Nos preguntara si queremos copiar la configuración que se encuentra en nuestro archivo fly.toml
, ingresamos ‘y’ o ‘yes’
Would you like to copy its configuration to the new app? (y/N) y
Nos pedirá el nombre de la app. Aquí usamos el nombre que ingresamos en url, por ejemplo, si ingresamos https://el-blog-de-messi.fly.dev acá debemos ingresar el-blog-de-messi
Elegimos una región para el despliegue. Yo vivo en Chile, y como me interesan las visitas desde Chile elijo scl
Ahora creamos el volumen de alojamiento para nuestros datos:
fly volume create ghost_with_cloudinary_data --region scl --size 1
En mi caso le estoy pasando dos parámetros: --region
que en mi caso es 'scl' y size
'1' (1 GB) que es suficiente para comenzar de manera gratuita.
Haciendo el deploy
Finalmente hacemos el deploy y cruzamos los dedos para que todo funcione 🤞🏻: fly deploy
Y eso es todo, Ghost CMS estará ahora configurado con Cloudinary en Fly.io de manera gratuita y tu sitio web estará disponible en la url especificada en el archivo fly.toml
. Asegúrate de seguir las instrucciones cuidadosamente y si tienes alguna pregunta o problema, mi twitter es @dandelior. Disfruta tu nuevo sitio 🔥.
Siguiente
Anterior