De Claude Code ou Cursor à une appli déployée.
Claude Code et Cursor vous laissent une appli qui tourne sur votre portable : serveur de développement, .env local, souvent un fichier SQLite, parfois aucun fichier de verrouillage. Pour la déployer, gardez ce fichier, placez les secrets dans des variables d’environnement, faites lire PORT au serveur et donnez-lui une base de données. Puis lancez canner deploy ou passez par MCP.
Faits vérifiés le
Ce que l’agent vous laisse
Un agent vise « ça marche quand je le lance ici ». C’est le bon objectif pendant le développement, et il laisse presque toujours les mêmes éléments derrière lui :
- Une commande de développement, pas de démarrage.
npm run dev,next devouvitesurlocalhost:3000ou5173. - Des secrets dans un fichier local.
.envou.env.localavec de vraies clés. Parfois un.env.examplequi liste ce que l’appli attend, parfois rien. - Une base de données locale. Un fichier SQLite
dev.db, ou unDATABASE_URLqui pointe vers Postgres sur votre machine. - Un fichier de verrouillage absent ou périmé. L’agent a modifié
package.jsonsans relancer l’installation, ou le fichier n’a jamais été écrit. - Un port ou une URL écrits en dur.
app.listen(3000), ouhttp://localhost:3000comme adresse d’API dans l’interface. - Un adaptateur pour la plateforme d’un autre. Demandez « une appli SvelteKit » après un tutoriel Vercel et vous risquez d’obtenir
@sveltejs/adapter-vercel.
Les écarts à combler, et ce que dit le journal de compilation
Jusqu’au premier déploiement réussi d’un projet, Canner lit le téléversement avant de compiler et inscrit un avertissement pour chacun de ces cas dans le journal de compilation, précédé de [canner] ⚠. La colonne du milieu reprend ce texte, ou l’erreur sur laquelle la compilation s’arrête. Les messages sont en anglais. Corrigez-les avant le premier déploiement et vous évitez un aller-retour.
| Écart | Ce que dit le journal de compilation | Correctif |
|---|---|---|
| Aucun fichier de verrouillage | [canner] no lockfile found — installing with … La compilation continue, mais les dépendances ne sont pas figées. | Lancez npm install (ou pnpm, yarn, bun) et gardez le fichier de verrouillage produit. |
| Fichier de verrouillage périmé | L’erreur de npm : npm ci can only install packages when your package.json and package-lock.json … are in sync | Relancez l’installation localement et déployez le fichier mis à jour. |
Variables de .env.example non définies | Env vars RESEND_API_KEY are listed in .env.example but not set — add them in the project's Environment variables. | canner env set CLE=valeur --sensitive, ou collez votre .env dans l’éditeur en bloc de l’onglet des variables. |
| Clés Supabase absentes à la compilation | supabaseUrl is required. | Définissez VITE_SUPABASE_URL ou NEXT_PUBLIC_SUPABASE_URL et la clé anonyme avant de compiler : les variables destinées au navigateur sont intégrées à la compilation. |
| Port écrit en dur | app did not respond on / within 30s | Écoutez sur process.env.PORT. Canner le définit. |
| ORM sans base de données | Uses Prisma but the project has no database yet — create one on the project's Database page so DATABASE_URL is set at build and runtime. | canner db init. DATABASE_URL est injecté pour la compilation et pour l’appli en marche. |
| Adaptateur d’un fournisseur | @sveltejs/adapter-vercel only runs on that vendor's platform — switch to the Node adapter for your framework. | Utilisez @sveltejs/adapter-node (ou l’adaptateur Node de votre cadriciel). |
Déployer avec la CLI
La CLI est le chemin le plus court, et Claude Code ou Cursor peuvent la lancer dans leur propre terminal. Aucun dépôt Git n’est nécessaire : canner deploy emballe le dossier et l’envoie dans le même pipeline de compilation qu’une poussée.
npm install -g @canner-ca/cli # Node 20 ou plus récent
canner login # collez un jeton cnr_ (Identité → Clés d'API)
canner init # crée le projet, écrit canner.json
canner db init # seulement si l'appli utilise Postgres
canner env set OPENAI_API_KEY=sk-... --sensitive
canner deploy --follow # téléverse, compile, diffuse le journalGardez votre .env hors du téléversement
canner deploy exclut toujours node_modules, .git, .next, .nuxt, .turbo, .vercel et .svelte-kit. Il ne lit pas .gitignore : un .env local part donc avec le reste, sauf si vous l’excluez. Ajoutez un .cannerignore à côté de package.json :
Définissez plutôt les vraies valeurs comme variables d’environnement. --follow se termine avec 0 quand l’appli est en ligne et 1 quand la compilation échoue : un agent qui lance la commande voit l’échec et peut lire le journal. Le téléversement compressé est plafonné à 100 Mo sur Démarrage et à 500 Mo sur Live.
# .cannerignore (canner deploy ne lit pas .gitignore)
.env
.env.*
*.sqlite
coverage/Ou laissez l’agent déployer par MCP
Le serveur MCP de Canner donne à l’agent des outils plutôt que des commandes : canner_create_project, puis canner_save_app avec les fichiers, puis canner_get_deployment pour lire le journal de compilation. La suppression de projets, de bases, de domaines ou de jetons n’est pas exposée; un agent ne peut donc pas la déclencher par erreur.
- Consigne : « Crée un projet Canner pour cette appli, sauvegarde-la avec les outils Canner, définis les variables d’environnement de .env.example et donne-moi l’URL en ligne. Si la compilation échoue, lis le journal et corrige. »
- CLI ou MCP?
canner_save_appexige le contenu complet de chaque fichier, envoyé par la conversation, jusqu’à 2 000 fichiers. Ça va pour une petite appli, c’est lent pour une grosse. Pour un gros projet, faites lancer la CLI par l’agent. - Jetons : si vous avez déjà lancé
canner login, le serveur local lit ce jeton et vous pouvez omettreCANNER_TOKEN. Pour un jeton collé dans un outil tiers, choisissez le type « Connecteur MCP (déploiement seulement) ».
| Client | Comment ajouter Canner |
|---|---|
| Tout agent avec un terminal | Pas besoin de MCP : l’agent lance lui-même canner deploy --follow. |
| Claude Code, serveur local † | claude mcp add --env CANNER_TOKEN=cnr_… --transport stdio canner -- npx -y @canner-ca/mcp |
| Claude Code, serveur distant † | claude mcp add --transport http canner https://api.canner.ca/mcp --header "Authorization: Bearer cnr_…" |
| Cursor † | Ajoutez l’entrée canner de la documentation MCP à .cursor/mcp.json (ce projet) ou à ~/.cursor/mcp.json (tous les projets). |
† Les détails sur les concurrents proviennent des pages publiées par chaque fournisseur aux dates indiquées; les prix et forfaits changent, vérifiez auprès du fournisseur avant de décider. Claude Code, serveur local (2026-10-29) · Claude Code, serveur distant (2026-10-29) · Cursor (2026-10-29)
Après le premier déploiement
- Journaux :
canner logs --followdiffuse la sortie de l’appli en marche. L’agent peut faire de même avec les outils MCP d’erreurs et de journaux. - Migrations : placez
npx prisma migrate deploy(ou l’équivalent de votre outil) dans la commande de mise en production, sous Paramètres → Build, pas dans la commande de compilation. - Veille : les applis Démarrage se mettent en veille après 3 heures sans requête et se réveillent à la suivante. Live garde 2 projets toujours actifs et ajoute les domaines personnalisés.
- Tout le reste sur les applis créées par IA se trouve sur la page Héberger une appli créée par IA.
Questions
Claude Code peut-il déployer mon appli tout seul?
Oui. Il peut lancer canner deploy --follow dans son terminal et lire le journal de compilation, ou appeler les outils MCP de Canner pour créer un projet et sauvegarder l’appli. Les actions destructrices, comme supprimer un projet, ne lui sont pas offertes.
canner deploy téléverse-t-il mon fichier .env?
Oui, sauf si vous l’excluez. Il ignore node_modules, .git et les dossiers de compilation, mais il ne lit pas .gitignore. Ajoutez .env et .env.* à un .cannerignore et définissez les valeurs comme variables d’environnement.
Faut-il GitHub pour déployer?
Non. canner deploy et l’outil MCP canner_save_app téléversent les fichiers directement. Reliez GitHub plus tard si vous voulez un déploiement à chaque poussée et des URL d’aperçu pour les demandes de tirage.
Pourquoi la compilation échoue-t-elle avec « supabaseUrl is required »?
Le client Supabase est créé pendant la compilation et l’URL est vide. Les variables destinées au navigateur, comme VITE_* et NEXT_PUBLIC_*, sont intégrées à la compilation : définissez-les sur le projet et redéployez.
À lire aussi
- GuideRemplacer Supabase dans une appli Lovable
- GuideOù héberger votre appli Lovable
- GuideOù héberger votre appli Bolt.new
- GuideDéployez votre appli v0 sans Vercel
- GuideSortez votre appli de Replit Deployments
- BlogueL'API REST, la CLI et le serveur MCP de Canner pour agents IA
Déployez ce que votre agent a créé.
Démarrage est gratuit et ne demande aucune carte. Lancez canner deploy une fois et vous avez une URL HTTPS à Montréal.