Ejecuta Ticketory en local
Pon en marcha tu paquete en tu equipo, con Docker.
Para el paquete Full Stack
Antes de empezar: instala y abre Docker Desktop, o Docker Engine con Compose.
Ver los requisitosDescarga tu plantilla
Abre Mis plantillas y descarga el ZIP de tu paquete.
Resultado esperado: En tus descargas hay un archivo con un nombre como
ticketory-full-stack-….zip.Descomprime y abre la carpeta
Abre una terminal donde esté el ZIP, extráelo y entra en la carpeta
ticketory-full-stack. En Windows, puedes extraerlo en el Explorador de archivos y luego abrir una terminal en la carpeta.Terminalunzip -q ticketory-full-stack-*.zip cd ticketory-full-stack lsResultado esperado: La carpeta contiene
¿Tienes problemas?admin-dashboard,back-end,storefrontydocker-compose.yml, junto aREADME.md,QUICKSTART.mdyLICENSE.md.Inicia las aplicaciones
Construye e inicia la API, el sitio web público y el panel del organizador. No hace falta configurar nada antes. El primer inicio construye tres imágenes y llena la base de datos con los organizadores de ejemplo y sus eventos, lo que tarda unos minutos; los siguientes inicios tardan segundos.
Terminalenticketory-full-stackdocker compose up --build¿Un puerto ya está en uso?
Si el inicio se detiene con
Un puerto ya está en usoports are not available,address already in useoport is already allocated, otro programa usa 3030, 3031 o 8000. Detén ese programa, o crea un archivo llamado.enven la carpetaticketory-full-stack, junto adocker-compose.yml, con el puerto que necesites, por ejemploADMIN_PORT=3041(SITE_PORTpara el sitio web,API_PORTpara la API). Vuelve a ejecutardocker compose up --buildy abre la aplicación en su nuevo puerto.Resultado esperado: Los tres servicios siguen en ejecución y el registro deja de desplazarse. Deja esta terminal abierta.
¿Tienes problemas?Abre el sitio web público
Abre localhost:3030Local. El inglés está en
/eny el árabe en/ar. Cualquiera puede comprar sin cuenta; para ver las entradas, los pedidos y los eventos guardados de un asistente, inicia sesión conattendee@example.testy la contraseñaDemoOnly!2026.Resultado esperado: El sitio web se abre en su página de inicio con los eventos de ejemplo y sus imágenes.
¿Tienes problemas?Inicia sesión en el panel del organizador
Abre localhost:3031Local. Inicia sesión con
owner@example.testy la contraseñaDemoOnly!2026. Todas las cuentas de ejemplo usan esa contraseña; cámbialas antes de que la pila sea accesible desde internet.Resultado esperado: El panel se abre en su resumen, con las ventas de entradas, la puerta en vivo y los próximos eventos.
¿Tienes problemas?
Haz un recorrido
Cómo se ven los organizadores de ejemplo cuando todo está en marcha.
| Cuenta | Correo electrónico | Dónde |
|---|---|---|
| Propietario: todo, incluidos los reembolsos, el equipo, los roles y los ajustes | owner@example.test | Panel |
| Gerente: eventos, recintos, control de acceso, informes, consultas, el estudio y el asistente; pedidos solo de lectura | manager@example.test | Panel |
| Finanzas: el resumen, los pedidos, los reembolsos, la reemisión y la anulación de entradas, y los informes | finance@example.test | Panel |
| Control de acceso: solo la puerta, para las sesiones que tenga asignadas | checkin@example.test | Panel |
| Asistente Taylor Morgan: ocho pedidos y cuatro eventos guardados | attendee@example.test | Sitio web |
Todas las cuentas inician sesión con la contraseña DemoOnly!2026. Son solo cuentas de demostración locales.
Los datos de ejemplo añaden cuatro organizadores, cada uno con su propio espacio de trabajo, entre los que el propietario cambia desde la barra superior del panel: Northline Events, Kiln & Co., Mill Street Talks y Meadow Days. Entre todos tienen 9 recintos, 36 eventos (22 en el sitio web, 3 de ellos en curso, 9 ya terminados, 1 cancelado y 4 borradores), 1.145 pedidos y 14 cuentas de personal, así que cada pantalla se abre llena.
Detén e inicia de nuevo
Pulsa Ctrl+C en la terminal para detener las aplicaciones, o ejecuta esto desde la carpeta ticketory-full-stack. Tus datos, la base de datos, las subidas y las exportaciones CSV, se conservan en el volumen ticketory-data.
ticketory-full-stackdocker compose downVuelve a iniciar con el mismo comando del paso 3. Sin --build, reutiliza las imágenes que ya construiste.
ticketory-full-stackdocker compose upConserva tus datos
docker compose down -v también borra el volumen de datos. El siguiente inicio crea una copia nueva de los organizadores de ejemplo, y todo lo que hayas creado desaparece.
Ejecuta el sitio web público
Este paquete es el sitio web público por sí solo. Lee todo de la API de Ticketory, así que inicia primero la API. Si no lo construyes con otra dirección, el sitio web espera la API en http://localhost:8000. La API es un paquete aparte y no está en esta descarga.
Descomprime y abre la carpeta
Terminalunzip -q ticketory-website-*.zip cd ticketory-website lsResultado esperado: La carpeta tiene un
¿Tienes problemas?Dockerfiley unpackage.json.Construye la imagen
Los valores
NEXT_PUBLIC_*se compilan en el JavaScript que carga el navegador, por eso son argumentos de construcción. Sin ninguno, el sitio web usa la API enhttp://localhost:8000/api, se llama a sí mismohttp://localhost:3030y envía a los organizadores al panel enhttp://localhost:3031. Para una API en otro lugar, pasa su dirección.Terminalenticketory-websitedocker build -t ticketory-website .Con tu propia API y tus dominios:
Terminalenticketory-websitedocker build -t ticketory-website --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_SITE_URL=https://www.your-domain.com --build-arg NEXT_PUBLIC_DASHBOARD_URL=https://dashboard.your-domain.com .¿Tienes problemas?Inícialo
Dentro del contenedor,
localhostes el propio contenedor, así queAPI_INTERNAL_URLle indica al servidor del sitio web dónde encontrar la API en tu equipo, para los títulos de las páginas de evento, el primer renderizado de las páginas de inicio, evento, recinto y organizador, y el mapa del sitio.--add-hosthace quehost.docker.internalfuncione en Linux; Docker Desktop ya lo tiene. Si el puerto3030está ocupado, cambia el número de la izquierda de-p, por ejemplo-p 3040:3030, abre ese puerto en su lugar, añadehttp://localhost:3040alCORS_ORIGINde la API y defínelo comoSTOREFRONT_URLde la API.Terminalenticketory-websitedocker run -p 3030:3030 -e API_INTERNAL_URL=http://host.docker.internal:8000/api --add-host=host.docker.internal:host-gateway ticketory-websiteResultado esperado: localhost:3030Local abre el sitio web con los eventos de tu API. El inglés está en
¿Tienes problemas?/en, el árabe en/ar.
Para que la API actualice las páginas de evento, recinto y organizador en cuanto cambien, añade -e REVALIDATE_SECRET= seguido del mismo valor que REVALIDATE_SECRET en el .env de la API. Sin esto, esas páginas se actualizan solas en el plazo de una hora.
Ejecuta el panel del organizador
Este paquete es el panel del organizador por sí solo. Cada pantalla lee la API de Ticketory, así que inicia primero la API. Si no lo construyes con otra dirección, el panel espera la API en http://localhost:8000. La API es un paquete aparte y no está en esta descarga.
Descomprime y abre la carpeta
Terminalunzip -q ticketory-dashboard-*.zip cd ticketory-dashboard lsResultado esperado: La carpeta tiene un
¿Tienes problemas?Dockerfiley unpackage.json.Construye la imagen
Sin argumentos de construcción, el panel usa la API en
http://localhost:8000/api. Para una API en otro lugar, pasa su dirección, su dirección sin/apipara las notificaciones en vivo, el host que sirve sus imágenes y la dirección del sitio web para el enlace "Ver sitio web".Terminalenticketory-dashboarddocker build -t ticketory-dashboard .Con tu propia API:
Terminalenticketory-dashboarddocker build -t ticketory-dashboard --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_WEBSOCKET_BASE_URL=https://api.your-domain.com --build-arg NEXT_PUBLIC_MEDIA_HOSTNAME=api.your-domain.com --build-arg NEXT_PUBLIC_SITE_URL=https://your-domain.com .¿Tienes problemas?Inícialo e inicia sesión
Si el puerto
3031está ocupado, cambia el número de la izquierda de-p, por ejemplo-p 3041:3031, abre ese puerto en su lugar, añadehttp://localhost:3041alCORS_ORIGINde la API y define suFRONTEND_URLcon él (la dirección desde la que se conectan las notificaciones en vivo), y luego reinicia la API.Terminalenticketory-dashboarddocker run -p 3031:3031 ticketory-dashboardResultado esperado: localhost:3031Local abre el formulario de inicio de sesión. Inicia sesión con
¿Tienes problemas?owner@example.testy la contraseñaDemoOnly!2026, que acepta una API con datos de ejemplo.
Ejecuta la API
Este paquete es la API NestJS por sí sola, sobre un archivo SQLite guardado en un volumen de Docker con las subidas y las exportaciones CSV. El sitio web público y el panel del organizador son paquetes aparte y no están en esta descarga.
Descomprime y abre la carpeta
Terminalunzip -q ticketory-backend-*.zip cd ticketory-backend lsResultado esperado: La carpeta tiene un
¿Tienes problemas?Dockerfile, undocker-entrypoint.shy unpackage.json.Inícialo con los datos de ejemplo
Un volumen nuevo tiene tablas vacías y ninguna cuenta, salvo que pidas los organizadores de ejemplo, así que conserva
-e SEED_DEMO_DATA=trueen el primer inicio. El volumenticketory-api-dataconserva la base de datos, las subidas y las exportaciones CSV entre ejecuciones. Si el puerto8000está ocupado, cambia el número de la izquierda de-p, por ejemplo-p 8010:8000, y añade-e PUBLIC_MEDIA_URL=http://localhost:8010/mediay-e PUBLIC_API_URL=http://localhost:8010para que las direcciones de las imágenes y los enlaces de descarga de las entradas también lo usen. Tus frontends deberán apuntar entonces ahttp://localhost:8010/api.Terminalenticketory-backenddocker run -p 8000:8000 -v ticketory-api-data:/data -e SEED_DEMO_DATA=true ticketory-apiResultado esperado: localhost:8000/
¿Tienes problemas?api/ healthLocal responde con "status":"ok"y"database":"up".
El contenedor acepta el sitio web en http://localhost:3030 y el panel en http://localhost:3031. En otras direcciones, define con -e CORS_ORIGIN (ambas, separadas por comas), FRONTEND_URL (el panel) y STOREFRONT_URL (el sitio web).
Para darle al contenedor tus propias claves (pagos, correo, IA, R2, MCP), crea .env a partir de .env.example con cp .env.example .env, rellénalo y añade --env-file .env -e NODE_ENV=production a docker run:
ticketory-backenddocker run -p 8000:8000 -v ticketory-api-data:/data -e SEED_DEMO_DATA=true --env-file .env -e NODE_ENV=production ticketory-apiUn valor dado con -e gana al mismo nombre del archivo, así que el contenedor se ejecuta en producción diga lo que diga .env, y mueve las rutas relativas del archivo (SQLITE_DATABASE, MEDIA_UPLOAD_DIR, EXPORT_DIR) al volumen. Sin un JWT_SECRET propio, o con el del ejemplo, el contenedor genera un secreto y lo guarda en el volumen, de modo que los inicios de sesión sobreviven a un reinicio.