Desplegando una Tienda con MedusaJS 2.0 en un AWS EC2 Instancia

Si has decidido montar una tienda online y prefieres hacerlo por tu cuenta estás en el lugar correcto. En esta guía práctica repasaremos cómo desplegar un backend y un storefront de MedusaJS en una instancia Ubuntu alojada en AWS EC2. Al final tendrás una aplicación MedusaJS en funcionamiento accesible por dominio con Nginx como proxy inverso y frontend persistente gestionado por PM2. Además encontrarás recomendaciones para producción y escalado.
Sobre nosotros: Q2BSTUDIO es una empresa de desarrollo de software que ofrece aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. Si buscas desarrollar una solución personalizada podemos ayudarte con proyectos de desarrollo de aplicaciones a medida y migraciones a la nube con servicios cloud AWS y Azure.
Resumen del objetivo: desplegar MedusaJS con rutas separadas para admin API autenticación y storefront, persistencia del frontend con PM2 y Nginx configurado para manejar panel admin rutas por país y certificados SSL con Certbot.
Requisitos previos: una instancia Ubuntu en EC2 con grupo de seguridad que permita SSH 22 desde tu IP HTTP 80 y HTTPS 443 desde cualquier lugar; un dominio apuntando a la IP de la instancia; cuenta de Stripe para pagos y acceso a git para clonar repositorios.
Instalaciones básicas: actualiza el sistema e instala Docker Docker Compose Git Nginx Node.js PM2 Curl y Certbot. Activa el servicio Docker añade tu usuario al grupo docker y configura PM2 para reiniciar procesos en arranque. También crea y asegura el directorio donde vivirá el frontend por defecto por ejemplo /var/www/storefront y asigna permisos al usuario ubuntu.
Backend con Docker: clona el repositorio oficial de Medusa starter crea un docker compose con servicios para Postgres Redis y Medusa. El servicio Medusa expone el puerto 9000 y se conecta a la base de datos y a Redis mediante variables de entorno. En lugar de copiar cada línea de configuración aquí prepara un archivo .env con variables como DATABASE_URL REDIS_URL JWT_SECRET COOKIE_SECRET y CORS adecuados apuntando a tu dominio y a las direcciones locales de los servicios Docker.
Dockerfile y script de inicio: dentro del repositorio ajusta Dockerfile para instalar dependencias y copiar la aplicación y crea un start script que ejecute migraciones seed si aplica y arranque la aplicación. Construye y levanta con docker compose up --build -d y crea un usuario admin con npx medusa user desde el contenedor cuando el backend esté corriendo.
Configuración de Medusa: reemplaza medusa-config.ts para cargar variables de entorno y ajustar CORS y dominios permitidos. Asegúrate de incluir la URL de tu frontend en STORE_CORS y la del panel en ADMIN_CORS. Mantén los secretos fuera de repositorios públicos y usa archivos .env u otros mecanismos seguros para gestión de secretos.
Proxy inverso con Nginx: crea un bloque de servidor que escuche en 80 y dirija las rutas del storefront y del backend a los puertos locales 8000 y 9000 respectivamente. Añade reglas específicas para rutas por país como /dk /us /ng y proxies para /admin /store /auth y /app apuntando al backend. Habilita la configuración crea el enlace simbólico en sites-enabled elimina la configuración por defecto y prueba la sintaxis con nginx -t antes de recargar el servicio. Finalmente ejecuta Certbot para obtener certificados LetsEncrypt y habilitar HTTPS.
Frontend: clona el starter de Next.js para Medusa configura el archivo .env del frontend con MEDUSA_BACKEND_URL NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY NEXT_PUBLIC_BASE_URL NEXT_PUBLIC_DEFAULT_REGION NEXT_PUBLIC_STRIPE_KEY y REVALIDATE_SECRET. Para obtener la publishable key crea la clave desde el panel admin en /app/settings/publishable-api-keys o usa un túnel SSH temporal si está detrás de un firewall.
CI CD con GitHub Actions: recomendamos automatizar despliegues del frontend mediante GitHub Actions. Configura secrets en el repositorio como SSH_PRIVATE_KEY SERVER_HOST SERVER_USER APP_DIR y las variables públicas y claves de Stripe y Medusa. Crea un workflow que haga checkout instale Node compile y copie los archivos al servidor por SCP luego reinicie el proceso con PM2. Asegúrate de que en el servidor exista el directorio destino y los permisos adecuados para el usuario que ejecuta SSH.
Gestión de procesos: usa PM2 para arrancar y mantener el frontend en producción y opcionalmente para monitorizarlo. PM2 proporciona persistencia tras reinicios y facilita logs y restarts automáticos.
Depuración y recomendaciones: revisa logs de docker compose logs -f y de PM2 pm2 logs. Si surgen errores revisa variables de entorno CORS y que Redis y Postgres estén accesibles desde el contenedor Medusa. Para problemas con certificados revisa que el dominio apunte correctamente y que Nginx pueda contactar los puertos locales.
Buenas prácticas para producción: separa bases de datos en RDS o servicios gestionados usa Redis gestionado para caching y sesiones y emplea balanceadores y CDN como CloudFront para servir el storefront estático. Implementa copias de seguridad periódicas políticas de recuperación ante desastres y monitoreo con alertas. En una próxima entrega hablaremos sobre escalar Medusa con ECS RDS CloudFront y configurar alertas y métricas.
Servicios relacionados: si necesitas integrar módulos avanzados de pago o automatizar flujos de negocio podemos ayudarte con integración de Stripe y automatización de procesos. También ofrecemos servicios de ciberseguridad para auditoría y pentesting y consultoría en inteligencia artificial aplicada a ecommerce para crear agentes IA y mejoras en la conversión y personalización. Consulta nuestras soluciones de inteligencia artificial para empresas y proyectos de Business Intelligence y Power BI para análisis avanzado.
Palabras clave integradas: aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi.
Si quieres que despleguemos tu tienda o prefieres una solución gestionada contacta con Q2BSTUDIO para evaluar requisitos diseño y presupuesto y así obtener una plataforma robusta segura y escalable adaptada a tu negocio.
Próximos pasos sugeridos: revisar la configuración actual probar despliegue en staging automatizar backups y planear migración a servicios gestionados en AWS para alta disponibilidad y rendimiento. En futuros artículos mostraremos una guía detallada de migración a ECS y RDS y la integración con CloudFront y monitoreo.
Comentarios