La seule exigence : écouter sur $PORT
Canner assigne un port à votre application via la variable d’environnement PORT et vérifie son état sur / (répondre dans les 30 secondes suivant le démarrage). Se lier à 127.0.0.1 ou 0.0.0.0 fonctionne dans les deux cas.
import express from 'express';
const app = express();
app.get('/', (req, res) => res.send('ok'));
// Canner sets PORT — always read it from the environment.
app.listen(process.env.PORT || 3000);La détection trouve automatiquement votre point d’entrée serveur — le script start, le champ main, ou un balayage du fichier qui appelle .listen(). Un script build (p. ex. compilation TypeScript) s’exécute d’abord s’il existe.
Applications complètes (serveur + client compilé)
Une forme courante — surtout venue des outils de codage par IA comme Bolt, v0, Manus et Lovable — est un projet dont le serveur Express/Hono sert à la fois une API et un client Vite compilé. Canner détecte cette forme et exécute votre serveur avec node_modules conservés : le serveur sert le client exactement comme en local. Aucune configuration, pas besoin de scinder le projet en deux.
Bases de données : si l’application attend Postgres, provisionnez-en une et la DATABASE_URL qu’elle lit est injectée automatiquement. Les applications qui exigent MySQL ou des services externes doivent les recevoir en variables d’environnement.
De longue durée par nature
Votre application est un processus persistant, pas une fonction « serverless » : websockets, événements envoyés par le serveur, intervalles en arrière-plan et caches en mémoire fonctionnent. La mémoire est plafonnée par forfait (voir les limites) — un plantage par dépassement apparaît dans les journaux d’exécution.
Bon à savoir
- SvelteKit, Nuxt et Remix sont détectés comme cadriciels à part entière et s’exécutent avec leur serveur Node standard — mêmes règles, zéro configuration.
- Besoin de cron? Les tâches planifiées peuvent appeler un point de terminaison de votre application selon un horaire.
- Les fichiers de verrouillage npm, pnpm, yarn et bun sont tous pris en charge — committez-en un.