> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.hodi.host/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Comment déployer une application Node.js à la main ?

Deux méthodes : depuis un dépôt Git avec Hodifly, ou à la main dans cPanel.

## Méthode recommandée : déployer avec Hodifly

[Hodifly](https://help.hodi.host/fr/article/quest-ce-que-hodifly-1x4tzo6/) déploie votre application Node.js depuis GitHub ou GitLab à chaque `git push`. Il crée l'application Passenger, installe les dépendances et met la nouvelle version en ligne : vous n'avez rien à configurer dans cPanel.

* **Détection automatique** : Hodifly reconnaît votre framework et pré-remplit la commande de build et le dossier de sortie (Express, Fastify, NestJS, Next.js, Nuxt, Astro, SvelteKit et Remix compris).
* **Fichier de démarrage** : `server.js` par défaut, modifiable dans les réglages du projet. Il doit écouter sur `process.env.PORT`.
* **Dépendances** : installées selon votre lockfile (npm, yarn, pnpm ou bun), gelées pour être reproductibles.
* **Versions immuables** : les 5 derniers déploiements sont conservés, le retour arrière est instantané et sans reconstruction.
* **Variables d'environnement** chiffrées, transmises au build et à l'application.

Ouvrez **cPanel > Hodifly**, connectez votre dépôt, choisissez la branche et le domaine, puis déployez. Détails complets dans [Que puis-je déployer sur Hodifly ?](https://help.hodi.host/fr/article/que-puis-je-deployer-sur-hodifly-1w02yb0/).

||| ⚠️ Attention : comme la méthode manuelle ci-dessous, une application Node.js tourne en permanence derrière Passenger et nécessite donc un hébergement **SITE PRO** ou supérieur.

## Méthode manuelle : « Setup Node.js App » dans cPanel

### Quelle est la différence entre “Setup Node.JS App” et la méthode “.bashrc” ?

* “**Setup Node.JS App**” : Cet outil sert uniquement à configurer une application Node.JS accessible via le web (comme une API ou un site en Express.js). Il configure automatiquement un environnement et gère l’exécution du serveur web.
* **Méthode “.bashrc**” : Elle vous donne un contrôle total sur Node.JS. Vous pouvez exécuter n’importe quel script Node.JS, que ce soit un [cron](https://help.hodi.host/fr/article/comment-ajouter-une-tache-planifiee-cron-1y07j6v/), un outil en ligne de commande ou un script de build. [Consultez la FAQ dédiée à ce sujet](https://help.hodi.host/fr/article/comment-utiliser-nodejs-en-ssh-ou-via-le-terminal-4ysoi0/).

### Comment déployer mon appli web Node.JS avec “Setup Node.JS App” ?

Nous vous permettons de déployer une application Node.JS directement sur votre hébergement, sans avoir à vous occuper de superviser votre process **node**. Techniquement, le déploiement est basé sur [Phusion Passenger](https://www.phusionpassenger.com/docs/tutorials/what_is_passenger/) (vous trouverez en bas de cette page plus d'informations techniques sur le principe de fonctionnement).

Par ailleurs, n'hésitez pas à consulter la [liste des questions fréquentes sur Node.JS](https://help.hodi.host/fr/article/comment-modifier-les-options-php-de-votre-hebergement-2rs47p/).

* [Connectez-vous à votre cPanel](https://help.hodi.host/fr/article/comment-acceder-a-cpanel-tcucor/)
* Dans la section "**Logiciels**", choisissez "**Setup Node.JS App**"
* Cliquez sur " **Create Application**"
* Renseignez les informations sur votre application :
  ![](https://hodi.host/images/kb/87_Screenshot-2023-05-07-at-10.03.35.png)
* `Create` : cliquez ici après avoir rempli le formulaire pour créer votre application

* `Node.js version` : choisissez la version de Node.JS à utiliser (s'il vous manque la version de votre choix, pas de panique notre [support technique](https://hodi.host/submitticket.php?step=2&deptid=2) l'installera pour vous)
* `Application mode` : choisissez entre le mode de développement et production, cela renseigne la variable d'environnement `NODE_ENV`.
* `Application root` : indiquez le dossier dans lequel se trouve le code de votre application (utilisez de préférence un dossier différent de celui du domaine où vous aller déployer votre application)
* `Application URL` : indiquez l'URL où vous désirez déployer votre application, le répertoire après le nom de domaine étant facultatif (cPanel va créer un fichier .htaccess à cet endroit)
* `Application startup file` : indiquez le nom du fichier JavaScript qui sert à démarrer votre application, il doit être présent das le dossier `Application Root` (il s'agit généralement de `server.js`)
* `Passenger log file` : indiquez l'endroit où vous désirez créer le fichier de log (facultatif mais utile pour débugger)
* `Environment variables - Add Variable` : ajoutez les variables d'environnement requises par votre application

* Même si vous pouvez installer les dépendances via cPanel, **nous conseillons de le faire en** [**SSH**](https://help.hodi.host/fr/article/comment-acceder-en-ssh-a-votre-hebergement-1de35jc/) **pour mieux voir les erreurs** le cas échéant.
* Pour cela, connectez-vous en SSH, copiez la ligne indiquée en haut de la page de votre application sur cPanel et lancez la une fois connecté en SSH:
![](https://hodi.host/images/kb/85_Screenshot-2023-05-07-at-09.19.53.png)
* Vous pouvez ensuite lancer `npm install` ou `yarn install`.
* Si vous avez une erreur "`RangeError: WebAssembly.instantiate(): Out of memory: wasm memory`", essayez de vous [connecter en SSH](https://help.hodi.host/fr/article/comment-acceder-en-ssh-a-votre-hebergement-1de35jc/) et non via l'application Terminal de cPanel, car ce dernier n'alloue pas assez de mémoire pour ces commandes.

#### Comment cela fonctionne techniquement ?

Phusion Passenger fonctionne différemment de ce dont vous pouvez avoir l'habitude (ex : `node server.js`), et vous n'avez pas eu à indiquer un port d'écoute pour votre application. En fait, Phusion Passenger s'occupe de tout cela de manière transparente, c'est l'outil Setup Node.JS App qui s'occupe de lancer votre application, et la relancer si elle s'arrête soudainement.

Pour cette raison, **vous ne devez pas lancer manuellement** votre application car elle écouterait sur le port 3000 (par exemple) qui n'est pas accessible de l'extérieur (bloqué par notre firewall).

Phusion Passenger lance votre application, et dès qu'il rencontre l'instruction `listen()`, il connecte un socket Unix dessus (à la place du port indiqué) et fait le lien avec le serveur web grâce à ce socket Unix. C'est ce qu'on appelle le [reverse-port binding](https://www.phusionpassenger.com/library/indepth/nodejs/reverse_port_binding.html).