Lancer Ticketory en local
Lancez votre pack sur votre ordinateur, avec Docker.
Pour le pack Full Stack
Avant de commencer : installez et ouvrez Docker Desktop, ou Docker Engine avec Compose.
Voir la configuration requiseTéléchargez votre template
Ouvrez Mes templates et téléchargez le ZIP correspondant à votre pack.
Résultat attendu: Un fichier nommé comme
ticketory-full-stack-….zipse trouve dans vos téléchargements.Décompressez et ouvrez le dossier
Ouvrez un terminal là où se trouve le ZIP, extrayez-le et placez-vous dans le dossier
ticketory-full-stack. Sous Windows, vous pouvez l'extraire dans l'Explorateur de fichiers, puis ouvrir un terminal dans le dossier.Terminalunzip -q ticketory-full-stack-*.zip cd ticketory-full-stack lsRésultat attendu: Le dossier contient
Un problème ?admin-dashboard,back-end,storefrontetdocker-compose.yml, à côté deREADME.md,QUICKSTART.mdetLICENSE.md.Démarrez les applications
Construisez et démarrez l'API, le site public et le tableau de bord organisateur. Rien n'est à configurer au préalable. Le premier démarrage construit trois images et remplit la base avec les organisateurs d'exemple et leurs événements, ce qui prend quelques minutes ; les démarrages suivants prennent quelques secondes.
Terminaldansticketory-full-stackdocker compose up --buildUn port est déjà utilisé ?
Si le démarrage s'arrête avec
Un port est déjà utiliséports are not available,address already in useouport is already allocated, un autre programme utilise 3030, 3031 ou 8000. Arrêtez-le, ou créez un fichier nommé.envdans le dossierticketory-full-stack, à côté dedocker-compose.yml, avec le port voulu, par exempleADMIN_PORT=3041(SITE_PORTpour le site,API_PORTpour l'API). Relancezdocker compose up --buildet ouvrez l'application sur son nouveau port.Résultat attendu: Les trois services restent actifs et le journal cesse de défiler. Laissez ce terminal ouvert.
Un problème ?Ouvrez le site public
Ouvrez localhost:3030Local. L'anglais est sur
/enet l'arabe sur/ar. Tout le monde peut acheter sans compte ; pour voir les billets, commandes et événements enregistrés d'un participant, connectez-vous avecattendee@example.testet le mot de passeDemoOnly!2026.Résultat attendu: Le site s'ouvre sur sa page d'accueil, avec les événements d'exemple et leurs images.
Un problème ?Connectez-vous au tableau de bord organisateur
Ouvrez localhost:3031Local. Connectez-vous avec
owner@example.testet le mot de passeDemoOnly!2026. Tous les comptes d'exemple utilisent ce mot de passe ; changez-les avant que l'ensemble soit accessible depuis Internet.Résultat attendu: Le tableau de bord s'ouvre sur sa vue d'ensemble, avec les ventes de billets, l'entrée en direct et les prochains événements.
Un problème ?
Faites le tour
À quoi ressemblent les organisateurs d'exemple une fois que tout tourne.
| Compte | Emplacement | |
|---|---|---|
| Propriétaire : tout, y compris les remboursements, l'équipe, les rôles et les paramètres | owner@example.test | Tableau de bord |
| Gestionnaire : événements, lieux, contrôle des billets, rapports, demandes, le studio et l'assistant ; commandes en lecture seule | manager@example.test | Tableau de bord |
| Finance : la vue d'ensemble, les commandes, les remboursements, la réémission et l'annulation de billets, et les rapports | finance@example.test | Tableau de bord |
| Contrôle des billets : uniquement l'entrée, pour les sessions qui lui sont attribuées | checkin@example.test | Tableau de bord |
| Participante Taylor Morgan : huit commandes et quatre événements enregistrés | attendee@example.test | Site |
Chaque compte se connecte avec le mot de passe DemoOnly!2026. Ce sont uniquement des comptes de démonstration locaux.
Les données d'exemple ajoutent quatre organisateurs, chacun avec son propre espace de travail, entre lesquels le propriétaire bascule depuis la barre du haut du tableau de bord : Northline Events, Kiln & Co., Mill Street Talks et Meadow Days. À eux quatre, ils ont 9 lieux, 36 événements (22 sur le site, dont 3 en cours, 9 déjà terminés, 1 annulé et 4 brouillons), 1 145 commandes et 14 comptes d'équipe, si bien que chaque écran s'ouvre bien rempli.
Arrêter et redémarrer
Appuyez sur Ctrl+C dans le terminal pour arrêter les applications, ou lancez cette commande depuis le dossier ticketory-full-stack. Vos données, c'est-à-dire la base, les fichiers envoyés et les exports CSV, sont conservées dans le volume ticketory-data.
ticketory-full-stackdocker compose downRedémarrez avec la même commande qu'à l'étape 3. Sans --build, elle réutilise les images déjà construites.
ticketory-full-stackdocker compose upConserver vos données
docker compose down -v supprime aussi le volume de données. Le démarrage suivant recrée une copie neuve des organisateurs d'exemple, et tout ce que vous avez créé a disparu.
Lancer le site public
Ce pack est le site public seul. Il lit tout depuis l'API Ticketory, démarrez donc l'API en premier. Sauf si vous le construisez avec une autre adresse, le site attend l'API sur http://localhost:8000. L'API est un pack séparé et n'est pas dans ce téléchargement.
Téléchargez votre template
Ouvrez Mes templates et téléchargez le ZIP Ticketing Website.
Décompressez et ouvrez le dossier
Terminalunzip -q ticketory-website-*.zip cd ticketory-website lsRésultat attendu: Le dossier contient un
Un problème ?Dockerfileet unpackage.json.Construisez l'image
Les valeurs
NEXT_PUBLIC_*sont compilées dans le JavaScript que charge le navigateur : ce sont donc des arguments de build. Sans aucun, le site utilise l'API surhttp://localhost:8000/api, se désigne parhttp://localhost:3030et envoie les organisateurs vers le tableau de bord surhttp://localhost:3031. Pour une API ailleurs, indiquez son adresse.Terminaldansticketory-websitedocker build -t ticketory-website .Avec votre propre API et vos domaines :
Terminaldansticketory-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 .Un problème ?Démarrez l'application
Dans le conteneur,
localhostdésigne le conteneur lui-même :API_INTERNAL_URLindique donc au serveur du site où joindre l'API sur votre ordinateur, pour les titres des pages d'événement, le premier rendu des pages d'accueil, d'événement, de lieu et d'organisateur, et le sitemap.--add-hostfait fonctionnerhost.docker.internalsous Linux ; Docker Desktop l'a déjà. Si le port3030est pris, changez le nombre à gauche de-p, par exemple-p 3040:3030, ouvrez ce port à la place, ajoutezhttp://localhost:3040auCORS_ORIGINde l'API et définissez-le commeSTOREFRONT_URLde l'API.Terminaldansticketory-websitedocker run -p 3030:3030 -e API_INTERNAL_URL=http://host.docker.internal:8000/api --add-host=host.docker.internal:host-gateway ticketory-websiteRésultat attendu: localhost:3030Local ouvre le site avec les événements de votre API. L'anglais est sur
Un problème ?/en, l'arabe sur/ar.
Pour que l'API actualise les pages d'événement, de lieu et d'organisateur dès qu'elles changent, ajoutez -e REVALIDATE_SECRET= suivi de la même valeur que REVALIDATE_SECRET dans le .env de l'API. Sans cela, ces pages s'actualisent d'elles-mêmes en moins d'une heure.
Lancer le tableau de bord organisateur
Ce pack est le tableau de bord organisateur seul. Chaque écran lit l'API Ticketory, démarrez donc l'API en premier. Sauf si vous le construisez avec une autre adresse, le tableau de bord attend l'API sur http://localhost:8000. L'API est un pack séparé et n'est pas dans ce téléchargement.
Téléchargez votre template
Ouvrez Mes templates et téléchargez le ZIP Organiser Dashboard.
Décompressez et ouvrez le dossier
Terminalunzip -q ticketory-dashboard-*.zip cd ticketory-dashboard lsRésultat attendu: Le dossier contient un
Un problème ?Dockerfileet unpackage.json.Construisez l'image
Sans arguments de build, le tableau de bord utilise l'API sur
http://localhost:8000/api. Pour une API ailleurs, indiquez son adresse, son adresse sans/apipour les notifications en direct, l'hôte qui sert ses images, et l'adresse du site pour le lien « View website ».Terminaldansticketory-dashboarddocker build -t ticketory-dashboard .Avec votre propre API :
Terminaldansticketory-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 .Un problème ?Démarrez-le et connectez-vous
Si le port
3031est pris, changez le nombre à gauche de-p, par exemple-p 3041:3031, ouvrez ce port à la place, ajoutezhttp://localhost:3041auCORS_ORIGINde l'API et définissez sonFRONTEND_URLavec cette adresse (celle d'où se connectent les notifications en direct), puis redémarrez l'API.Terminaldansticketory-dashboarddocker run -p 3031:3031 ticketory-dashboardRésultat attendu: localhost:3031Local ouvre le formulaire de connexion. Connectez-vous avec
Un problème ?owner@example.testet le mot de passeDemoOnly!2026, qu'accepte une API remplie avec les données d'exemple.
Lancer l'API
Ce pack est l'API NestJS seule, sur un fichier SQLite conservé dans un volume Docker avec les fichiers envoyés et les exports CSV. Le site public et le tableau de bord organisateur sont des packs séparés et ne sont pas dans ce téléchargement.
Décompressez et ouvrez le dossier
Terminalunzip -q ticketory-backend-*.zip cd ticketory-backend lsRésultat attendu: Le dossier contient un
Un problème ?Dockerfile, undocker-entrypoint.shet unpackage.json.Démarrez-la avec les données d'exemple
Un nouveau volume reçoit des tables vides et aucun compte, sauf si vous demandez les organisateurs d'exemple : gardez donc
-e SEED_DEMO_DATA=truepour un premier démarrage. Le volumeticketory-api-dataconserve la base, les fichiers envoyés et les exports CSV entre deux lancements. Si le port8000est pris, changez le nombre à gauche de-p, par exemple-p 8010:8000, et ajoutez-e PUBLIC_MEDIA_URL=http://localhost:8010/mediaet-e PUBLIC_API_URL=http://localhost:8010pour que les adresses des images et les liens de téléchargement des billets l'utilisent aussi. Vos frontends doivent alors pointer vershttp://localhost:8010/api.Terminaldansticketory-backenddocker run -p 8000:8000 -v ticketory-api-data:/data -e SEED_DEMO_DATA=true ticketory-apiRésultat attendu: localhost:8000/
Un problème ?api/ healthLocal répond avec "status":"ok"et"database":"up".
Le conteneur accepte le site sur http://localhost:3030 et le tableau de bord sur http://localhost:3031. Sur d'autres adresses, définissez CORS_ORIGIN (les deux, séparées par une virgule), FRONTEND_URL (le tableau de bord) et STOREFRONT_URL (le site) avec -e.
Pour donner vos propres clés au conteneur (paiements, e-mail, IA, R2, MCP), créez .env à partir de .env.example avec cp .env.example .env, remplissez-le, et ajoutez --env-file .env -e NODE_ENV=production à 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-apiUne valeur donnée avec -e l'emporte sur le même nom dans le fichier : le conteneur tourne donc en production quoi que dise .env, et il déplace les chemins relatifs du fichier (SQLITE_DATABASE, MEDIA_UPLOAD_DIR, EXPORT_DIR) dans le volume. Sans JWT_SECRET à vous, ou avec celui de l'exemple, le conteneur génère un secret et le garde dans le volume, si bien que les connexions survivent à un redémarrage.