Skip to main content

Despliegue de Eventify

Eventify ofrece opciones de despliegue flexibles. Ya sea que busques una configuración rápida o una totalmente personalizada, esta guía te ayudará a ponerlo en marcha.

Nota

Para la mayoría de los usuarios, nuestro enfoque recomendado es usar Docker, que simplifica el despliegue y garantiza consistencia entre diferentes entornos.

Resumen

Eventify consta de dos componentes principales:

  • Frontend: Una aplicación React en Node.js que maneja la interfaz de usuario.

  • Backend: Una aplicación Nest en TypeScript que soporta la API y la lógica de negocio.

Puedes desplegar estos componentes de dos formas:

  • Juntos, usando nuestra imagen Docker todo-en-uno (enfoque más sencillo).

  • Por separado, para mayor escalabilidad y control (recomendado para producción).

Opciones de Despliegue

Despliegue con Docker (Recomendado)

Nuestras imágenes oficiales de Docker ofrecen una experiencia de despliegue confiable y consistente:

Imagen Todo-en-Uno

imagendeeventify
  • Contiene tanto el frontend como el backend en un solo contenedor

  • Perfecto para despliegues pequeños o medianos

  • Configuración y mantenimiento más sencillos

Imágenes de Servicios Separados (Recomendado para Producción)

imagenDeServicioSeparadoFront
imagenDeServicioSeparadoFront
  • Despliega y escala cada componente de forma independiente

  • Mejor asignación y optimización de recursos

  • Mayor flexibilidad para arquitecturas de despliegue complejas

  • Mejor resistencia y opciones de mantenimiento

Variables de Entorno

Para configurar correctamente tu despliegue de Hi.Events, necesitarás definir varias variables de entorno. Estas controlan todo, desde las conexiones a la base de datos hasta la configuración de envío de correos electrónicos.

Variables del Frontend

Nombre de la variableDescripciónEjemplo
VITE_FRONTEND_URLURL del frontendhttps://your-app.com
VITE_API_URL_CLIENTURL de la API para uso en el navegadorhttps://tu-app.com/api
VITE_API_URL_SERVERURL de la API para uso en el servidorSe utiliza para server-side rendering. Para la imagen todo-en-uno, normalmente es http://localhost:8000/api. Si estás hospedando frontend y backend por separado, este valor generalmente sería el mismo que VITE_API_URL_CLIENT.
VITE_STRIPE_PUBLISHABLE_KEYClave pública de Stripepk_test_51...

Variables del Backend

Configuracion de correo electronico

Puedes usar proveedores de correo como Postmark, SendGrid o AWS SES.

Nombre de la variableDescripciónEjemplo
MAIL_MAILERControlador de correosmtp
MAIL_HOSTServidor de correo (host)smtp.mailtrap.io.
MAIL_PORTPuerto del servidor de correo2525
MAIL_USERNAMEUsuario del servidor de correotu usuario
MAIL_PASSWORDContraseña del servidor de correotu contraseña
MAIL_FROM_ADDRESSDirección del remitenteme@mywebsite.com
MAIL_FROM_NAMENombre del remitenteNombre de tu aplicación

Para más detalles sobre la configuración del correo en NestJs, consulta la Documentación de NestJs Mail.

Configuracion de Stripe

Para más información sobre cómo obtener las claves API de Stripe, visita la Documentación de Claves API de Stripe.

Nombre de la variableDescripciónEjemplo
STRIPE_PUBLIC_KEYLlave publica de Stripepk_test_51...
STRIPE_SECRET_KEYLlave secreta de Stripesk_test_51...
STRIPE_WEBHOOK_SECRETClave secreta del webhook de Stripewhsec_...

Configuración del webhook de Stripe

Para que Stripe funcione correctamente, necesitas configurar el webhook en tu panel de Stripe:

  1. Ve a https://dashboard.stripe.com/webhooks
  2. Haz clic en “Add endpoint”
  3. Establece la URL del webhook en: https://tu-app.com/api/public/webhooks/stripe
  4. Debes escuchar los siguientes eventos:
  • payment_intent.succeeded
  • payment_intent.payment_failed
  • charge.refund.updated
  • account.update

Configuracion General

Nombre de la variableDescripciónEjemplo
APP_KEYClave de la aplicaciónbase64:...
APP_FRONTEND_URLURL del frontendhttps://tu-app.com
APP_CDN_URLURL del CDNhttps://cdn.tu-app.com
APP_DISABLE_REGISTRATIONDeshabilitar registroImpide que las personas se registren con nuevas cuentas. Sugerido para despliegues que no son SaaS.
FILESYSTEM_PUBLIC_DISKDisco de sistema de archivosPredeterminado: s3-public. public si usas almacenamiento en disco local.
FILESYSTEM_PRIVATE_DISKDisco de sistema de archivosPredeterminado: s3-private. local si usas almacenamiento en disco local.
JWT_SECRETClave secreta JWTbase64:...
LOG_CHANNELCanal de registrostderr
CORS_ALLOWED_ORIGINSLista separada por comas de orígenes permitidos para solicitudes CORS. Ingresa '*' para permitir todos los orígenes.https://tu-app.com, https://otro-origen.com

Genera la APP_KEY usando:

echo "base64:$(openssl rand -base64 32)"

Configuración SaaS

Nota

Estas variables solo son relevantes si estás usando la versión SaaS de Eventify.

Nombre de la variableDescripciónEjemplo
APP_SAAS_MODE_ENABLEDHabilitar modo SaaS (por defecto en false)true
APP_SAAS_STRIPE_APPLICATION_FEE_PERCENTPorcentaje de comisión de aplicación en Stripe. Solo relevante en modo SaaS1.5 para 1.5%.
APP_SAAS_STRIPE_APPLICATION_FEE_FIXEDComisión fija de aplicación en Stripe. Solo relevante en modo SaaS.40 para 40¢
OPEN_EXCHANGE_RATES_APP_IDApp ID de Open Exchange Rates para conversión de divisasyour-app-id

Las comisiones SaaS se utilizan para poblar la tabla account_configuration. Para ajustar las comisiones después del despliegue necesitas actualizar directamente la tabla account_configuration.

Configuración de AWS

Estas variables son necesarias si deseas usar AWS S3 para almacenamiento de archivos. También puedes usar otros servicios compatibles con s3, como DigitalOcean Spaces.

Nota de producción

Para evitar la pérdida de archivos durante actualizaciones o fallos del servidor, recomendamos ampliamente usar almacenamiento de archivos en la nube para despliegues en producción.

Nombre de la variableDescripciónEjemplo
AWS_ACCESS_KEY_IDID de la clave de acceso de AWSyour-access-key-id
AWS_SECRET_ACCESS_KEYClave secreta de acceso de AWSyour-secret-access-key
AWS_DEFAULT_REGIONRegión de AWSus-west-1
AWS_PUBLIC_BUCKETNombre del bucket público de AWSyour-public-bucket
AWS_PRIVATE_BUCKETNombre del bucket privado de AWSyour-private-bucket

Configuración de Base de Datos

Puedes establecer variables individuales de configuración de la base de datos o usar DATABASE_URL para simplificar la configuración.

Nombre de la variableDescripciónEjemplo
DB_CONNECTIONTipo de conexión a la base de datospgsql
DB_HOSTHost de la base de datosyour-database-host
DB_PORTPuerto de la base de datos5432
DB_DATABASENombre de la base de datosyour-database-name
DB_USERNAMEUsuario de la base de datosyour-database-username
DB_PASSWORDContraseña de la base de datosyour-database-password
DATABASE_URLURL de la base de datos (alternativa a los valores individuales)postgres://user:password@host:port/database

Configuración de Redis

Nombre de la variableDescripciónEjemplo
REDIS_HOSTHost de Redisyour-redis-host
REDIS_PASSWORDContraseña de Redisyour-redis-password
REDIS_USERUsuario de Redisyour-redis-username
REDIS_PORTPuerto de Redis6379
REDIS_URLURL de Redisredis://user:password@host:port

Configuración de Colas

Nombre de la variableDescripciónEjemplo
QUEUE_CONNECTIONTipo de conexión de la colaPredeterminado: sync. Configura en redis para despliegues en producción.
Nota de producción

Por conveniencia, QUEUE_CONNECTION está configurado en sync por defecto. Se recomienda ampliamente usar un sistema de colas como Redis para despliegues en producción.

Consideraciones importantes para el despliegue

Problemas comunes
  • La mala configuración de las variables de entorno es la causa más frecuente de problemas en el despliegue.

  • Los problemas de rendimiento suelen deberse a hardware insuficiente o a colas configuradas incorrectamente.

  • En la mayoría de los entornos en la nube, el sistema de archivos es efímero: los archivos subidos se perderán al redeploy a menos que uses almacenamiento en la nube.

Lista de verificación antes de poner en producción
  • Todas las variables de entorno están correctamente configuradas.

  • El sistema de colas está configurado según lo recomendado.

  • La solución de almacenamiento de archivos está configurada (local o en la nube).

  • Los certificados SSL están instalados y son válidos.

  • Las copias de seguridad están configuradas.

  • Se cuenta con monitoreo.

Si planeas organizar eventos que puedan experimentar picos repentinos de tráfico (como ventas de entradas populares o ventas flash), querrás tomar precauciones adicionales con tu despliegue:

Consejos para eventos con alto tráfico

Al esperar un alto volumen de tráfico:

  • Asegúrate de tener colas configuradas para el procesamiento en segundo plano. No configures QUEUE_CONNECTION en sync.

  • Usa una instancia de base de datos más potente, ya que normalmente es el cuello de botella.

  • Considera usar un CDN para los recursos estáticos.

  • Monitorea las métricas de tu infraestructura durante el evento.

  • Ten un plan para escalar los recursos si es necesario.

  • Considera usar un servicio de base de datos gestionado para mejorar la escalabilidad.

  • Utiliza un balanceador de carga para distribuir el tráfico.