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.
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
- Configuracion Manual
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 variable | Descripción | Ejemplo |
|---|---|---|
VITE_FRONTEND_URL | URL del frontend | https://your-app.com |
VITE_API_URL_CLIENT | URL de la API para uso en el navegador | https://tu-app.com/api |
VITE_API_URL_SERVER | URL de la API para uso en el servidor | Se 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_KEY | Clave pública de Stripe | pk_test_51... |
Variables del Backend
Configuracion de correo electronico
Puedes usar proveedores de correo como Postmark, SendGrid o AWS SES.
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
MAIL_MAILER | Controlador de correo | smtp |
MAIL_HOST | Servidor de correo (host) | smtp.mailtrap.io. |
MAIL_PORT | Puerto del servidor de correo | 2525 |
MAIL_USERNAME | Usuario del servidor de correo | tu usuario |
MAIL_PASSWORD | Contraseña del servidor de correo | tu contraseña |
MAIL_FROM_ADDRESS | Dirección del remitente | me@mywebsite.com |
MAIL_FROM_NAME | Nombre del remitente | Nombre 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 variable | Descripción | Ejemplo |
|---|---|---|
STRIPE_PUBLIC_KEY | Llave publica de Stripe | pk_test_51... |
STRIPE_SECRET_KEY | Llave secreta de Stripe | sk_test_51... |
STRIPE_WEBHOOK_SECRET | Clave secreta del webhook de Stripe | whsec_... |
Configuración del webhook de Stripe
Para que Stripe funcione correctamente, necesitas configurar el webhook en tu panel de Stripe:
- Ve a https://dashboard.stripe.com/webhooks
- Haz clic en “Add endpoint”
- Establece la URL del webhook en:
https://tu-app.com/api/public/webhooks/stripe - Debes escuchar los siguientes eventos:
payment_intent.succeededpayment_intent.payment_failedcharge.refund.updatedaccount.update
Configuracion General
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
APP_KEY | Clave de la aplicación | base64:... |
APP_FRONTEND_URL | URL del frontend | https://tu-app.com |
APP_CDN_URL | URL del CDN | https://cdn.tu-app.com |
APP_DISABLE_REGISTRATION | Deshabilitar registro | Impide que las personas se registren con nuevas cuentas. Sugerido para despliegues que no son SaaS. |
FILESYSTEM_PUBLIC_DISK | Disco de sistema de archivos | Predeterminado: s3-public. public si usas almacenamiento en disco local. |
FILESYSTEM_PRIVATE_DISK | Disco de sistema de archivos | Predeterminado: s3-private. local si usas almacenamiento en disco local. |
JWT_SECRET | Clave secreta JWT | base64:... |
LOG_CHANNEL | Canal de registro | stderr |
CORS_ALLOWED_ORIGINS | Lista 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
Estas variables solo son relevantes si estás usando la versión SaaS de Eventify.
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
APP_SAAS_MODE_ENABLED | Habilitar modo SaaS (por defecto en false) | true |
APP_SAAS_STRIPE_APPLICATION_FEE_PERCENT | Porcentaje de comisión de aplicación en Stripe. Solo relevante en modo SaaS | 1.5 para 1.5%. |
APP_SAAS_STRIPE_APPLICATION_FEE_FIXED | Comisión fija de aplicación en Stripe. Solo relevante en modo SaaS | .40 para 40¢ |
OPEN_EXCHANGE_RATES_APP_ID | App ID de Open Exchange Rates para conversión de divisas | your-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.
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 variable | Descripción | Ejemplo |
|---|---|---|
AWS_ACCESS_KEY_ID | ID de la clave de acceso de AWS | your-access-key-id |
AWS_SECRET_ACCESS_KEY | Clave secreta de acceso de AWS | your-secret-access-key |
AWS_DEFAULT_REGION | Región de AWS | us-west-1 |
AWS_PUBLIC_BUCKET | Nombre del bucket público de AWS | your-public-bucket |
AWS_PRIVATE_BUCKET | Nombre del bucket privado de AWS | your-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 variable | Descripción | Ejemplo |
|---|---|---|
DB_CONNECTION | Tipo de conexión a la base de datos | pgsql |
DB_HOST | Host de la base de datos | your-database-host |
DB_PORT | Puerto de la base de datos | 5432 |
DB_DATABASE | Nombre de la base de datos | your-database-name |
DB_USERNAME | Usuario de la base de datos | your-database-username |
DB_PASSWORD | Contraseña de la base de datos | your-database-password |
DATABASE_URL | URL de la base de datos (alternativa a los valores individuales) | postgres://user:password@host:port/database |
Configuración de Redis
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
REDIS_HOST | Host de Redis | your-redis-host |
REDIS_PASSWORD | Contraseña de Redis | your-redis-password |
REDIS_USER | Usuario de Redis | your-redis-username |
REDIS_PORT | Puerto de Redis | 6379 |
REDIS_URL | URL de Redis | redis://user:password@host:port |
Configuración de Colas
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
QUEUE_CONNECTION | Tipo de conexión de la cola | Predeterminado: sync. Configura en redis para despliegues en 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.
Configuración Manual
Para tener control total sobre tu despliegue, puedes instalar Hi.Events directamente en tus propios servidores.
Requisitos del Sistema:
-
Node.js 20+ para el frontend
-
PHP 8.1+ para el backend
-
Base de datos PostgreSQL
-
Redis (recomendado para entornos de producción)
-
Almacenamiento compatible con S3 (recomendado para producción)
Sigue nuestra Guía No Oficial de Despliegue Manual para ver las instrucciones.
Variables de Entorno
Para configurar correctamente tu despliegue de Hi.Events, necesitarás establecer varias variables de entorno. Estas controlan todo, desde las conexiones a la base de datos hasta la configuración del envío de correos.
Variables del Frontend
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
VITE_FRONTEND_URL | URL del frontend | https://your-app.com |
VITE_API_URL_CLIENT | URL de la API para uso en el navegador | https://tu-app.com/api |
VITE_API_URL_SERVER | URL de la API para uso en el servidor | Se 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_KEY | Clave pública de Stripe | pk_test_51... |
Variables del Backend
Configuracion de correo electronico
Puedes usar proveedores de correo como Postmark, SendGrid o AWS SES.
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
MAIL_MAILER | Controlador de correo | smtp |
MAIL_HOST | Servidor de correo (host) | smtp.mailtrap.io. |
MAIL_PORT | Puerto del servidor de correo | 2525 |
MAIL_USERNAME | Usuario del servidor de correo | tu usuario |
MAIL_PASSWORD | Contraseña del servidor de correo | tu contraseña |
MAIL_FROM_ADDRESS | Dirección del remitente | me@mywebsite.com |
MAIL_FROM_NAME | Nombre del remitente | Nombre 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 variable | Descripción | Ejemplo |
|---|---|---|
STRIPE_PUBLIC_KEY | Llave publica de Stripe | pk_test_51... |
STRIPE_SECRET_KEY | Llave secreta de Stripe | sk_test_51... |
STRIPE_WEBHOOK_SECRET | Clave secreta del webhook de Stripe | whsec_... |
Configuración del webhook de Stripe
Para que Stripe funcione correctamente, necesitas configurar el webhook en tu panel de Stripe:
- Ve a https://dashboard.stripe.com/webhooks
- Haz clic en “Add endpoint”
- Establece la URL del webhook en:
https://tu-app.com/api/public/webhooks/stripe - Debes escuchar los siguientes eventos:
payment_intent.succeededpayment_intent.payment_failedcharge.refund.updatedaccount.update
Configuracion General
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
APP_KEY | Clave de la aplicación | base64:... |
APP_FRONTEND_URL | URL del frontend | https://tu-app.com |
APP_CDN_URL | URL del CDN | https://cdn.tu-app.com |
APP_DISABLE_REGISTRATION | Deshabilitar registro | Impide que las personas se registren con nuevas cuentas. Sugerido para despliegues que no son SaaS. |
FILESYSTEM_PUBLIC_DISK | Disco de sistema de archivos | Predeterminado: s3-public. public si usas almacenamiento en disco local. |
FILESYSTEM_PRIVATE_DISK | Disco de sistema de archivos | Predeterminado: s3-private. local si usas almacenamiento en disco local. |
JWT_SECRET | Clave secreta JWT | base64:... |
LOG_CHANNEL | Canal de registro | stderr |
CORS_ALLOWED_ORIGINS | Lista 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
Estas variables solo son relevantes si estás usando la versión SaaS de Eventify.
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
APP_SAAS_MODE_ENABLED | Habilitar modo SaaS (por defecto en false) | true |
APP_SAAS_STRIPE_APPLICATION_FEE_PERCENT | Porcentaje de comisión de aplicación en Stripe. Solo relevante en modo SaaS | 1.5 para 1.5%. |
APP_SAAS_STRIPE_APPLICATION_FEE_FIXED | Comisión fija de aplicación en Stripe. Solo relevante en modo SaaS | .40 para 40¢ |
OPEN_EXCHANGE_RATES_APP_ID | App ID de Open Exchange Rates para conversión de divisas | your-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.
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 variable | Descripción | Ejemplo |
|---|---|---|
AWS_ACCESS_KEY_ID | ID de la clave de acceso de AWS | your-access-key-id |
AWS_SECRET_ACCESS_KEY | Clave secreta de acceso de AWS | your-secret-access-key |
AWS_DEFAULT_REGION | Región de AWS | us-west-1 |
AWS_PUBLIC_BUCKET | Nombre del bucket público de AWS | your-public-bucket |
AWS_PRIVATE_BUCKET | Nombre del bucket privado de AWS | your-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 variable | Descripción | Ejemplo |
|---|---|---|
DB_CONNECTION | Tipo de conexión a la base de datos | pgsql |
DB_HOST | Host de la base de datos | your-database-host |
DB_PORT | Puerto de la base de datos | 5432 |
DB_DATABASE | Nombre de la base de datos | your-database-name |
DB_USERNAME | Usuario de la base de datos | your-database-username |
DB_PASSWORD | Contraseña de la base de datos | your-database-password |
DATABASE_URL | URL de la base de datos (alternativa a los valores individuales) | postgres://user:password@host:port/database |
Configuración de Redis
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
REDIS_HOST | Host de Redis | your-redis-host |
REDIS_PASSWORD | Contraseña de Redis | your-redis-password |
REDIS_USER | Usuario de Redis | your-redis-username |
REDIS_PORT | Puerto de Redis | 6379 |
REDIS_URL | URL de Redis | redis://user:password@host:port |
Configuración de Colas
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
QUEUE_CONNECTION | Tipo de conexión de la cola | Predeterminado: sync. Configura en redis para despliegues en 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
-
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.
-
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:
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.