Comment déployer NestJS sur un hébergement mutualisé Namecheap

Déployer NestJS sur un hébergement mutualisé Namecheap ne revient pas à déployer un site statique ou une application PHP. Vous ne pouvez pas simplement uploader des fichiers et espérer que cela fonctionne.

Vous devez compiler le TypeScript en JavaScript, installer les dépendances de production et utiliser cPanel pour gérer le processus via Passenger.

J'ai été confronté à des dossiers vides, des fichiers de build manquants et des connexions Redis interrompues avant de trouver la bonne méthode. Voici le flux de travail éprouvé.

La logique de configuration La requête suit ce chemin : • Navigateur ou client API • Domaine et HTTPS • Apache / Passenger sur Namecheap • app.js (le pont) • dist/main.js (le code compilé) • Application NestJS

Prérequis essentiels • Un compte d'hébergement Namecheap prenant en charge Node.js • Accès à cPanel et SSH/Terminal • Un projet NestJS fonctionnel • Des identifiants de production pour votre base de données ou Redis

Étape 1 : Préparez votre code N'utilisez pas de port codé en dur. Dans votre src/main.ts, utilisez process.env.PORT :

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT || 4000);
}

Étape 2 : Organisez les dépendances Déplacez les packages d'exécution comme @nestjs/common et @nestjs/core vers la section dependencies de votre package.json. S'ils restent dans devDependencies, votre application plantera en production.

Étape 3 : Build et création du pont Namecheap exécute du JavaScript, pas du TypeScript. • Exécutez npm run build localement. • Vérifiez que dist/main.js existe. • Créez un fichier app.js à la racine de votre projet avec cette ligne : require('./dist/main');

Ce fichier app.js sert de point d'entrée pour Passenger.

Étape 4 : Stratégie de déploiement La méthode la plus sûre consiste à builder localement et à uploader les artefacts : • Uploader app.js • Uploader le dossier dist/ • Uploader package.json et package-lock.json • Sur Namecheap, exécutez : npm ci --omit=dev

N'uploadez jamais votre dossier node_modules local. Les modules natifs compilés sur votre ordinateur ne fonctionneront pas sur un serveur Linux.

Étape 5 : Configurez cPanel Allez dans "Setup Node.js App" dans cPanel : • Sélectionnez la version correcte de Node.js. • Réglez le mode sur "Production". • Définissez le "Application root" sur votre dossier. • Définissez le "Application startup file" sur app.js.

Étape 6 : Variables d'environnement Ajoutez vos secrets (comme DATABASE_URL ou des clés API) directement dans l'interface Node.js de cPanel. Vous pouvez également utiliser un fichier .env à la racine, mais assurez-vous qu'il ne se trouve pas à l'intérieur du dossier dist. Redémarrez l'application après avoir effectué des modifications.

Résolution des problèmes courants • EADDRINUSE : Vous avez probablement un processus manuel en cours d'exécution. Laissez Passenger gérer l'application. • Cannot find module : Votre build est manquant ou le chemin dans app.js est incorrect. • Redis connection failed : Vérifiez si Namecheap autorise les connexions sortantes sur votre port Redis. Vous devrez peut-être demander au support de Namecheap de l'ouvrir.

Source : https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45