Cómo desplegar NestJS en un hosting compartido de Namecheap
Desplegar NestJS en un hosting compartido de Namecheap no es como desplegar un sitio estático o una aplicación PHP. No basta con subir los archivos y esperar que funcione.
Debes compilar TypeScript a JavaScript, instalar las dependencias de producción y usar cPanel para gestionar el proceso a través de Passenger.
Me enfrenté a carpetas vacías, archivos de compilación faltantes y conexiones de Redis rotas antes de encontrar la forma correcta. Aquí tienes el flujo de trabajo comprobado.
La lógica de la configuración
La solicitud sigue esta ruta: • Navegador o cliente de API • Dominio y HTTPS • Apache / Passenger en Namecheap • app.js (el puente) • dist/main.js (el código compilado) • Aplicación NestJS
Requisitos clave
• Una cuenta de hosting de Namecheap con soporte para Node.js • Acceso a cPanel y SSH/Terminal • Un proyecto NestJS funcional • Credenciales de producción para tu base de datos o Redis
Paso 1: Prepara tu código
No utilices un puerto fijo (hard-coded). En tu src/main.ts, utiliza process.env.PORT:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT || 4000);
}
Paso 2: Organiza las dependencias
Mueve los paquetes de tiempo de ejecución (runtime) como @nestjs/common y @nestjs/core a la sección dependencies en package.json. Si permanecen en devDependencies, tu aplicación fallará en producción.
Paso 3: Compila y crea el puente
Namecheap ejecuta JavaScript, no TypeScript.
• Ejecuta npm run build localmente.
• Verifica que dist/main.js exista.
• Crea un archivo app.js en la raíz de tu proyecto con esta línea: require('./dist/main');
Este app.js actúa como el punto de entrada para Passenger.
Paso 4: Estrategia de despliegue
La forma más segura es compilar localmente y subir los artefactos:
• Sube app.js
• Sube la carpeta dist/
• Sube package.json y package-lock.json
• En Namecheap, ejecuta: npm ci --omit=dev
Nunca subas tu carpeta node_modules local. Los módulos nativos compilados en tu computadora no funcionarán en un servidor Linux.
Paso 5: Configura cPanel
Ve a "Setup Node.js App" en cPanel:
• Selecciona la versión correcta de Node.js.
• Establece el modo en "Production".
• Establece el "Application root" en tu carpeta.
• Establece el "Application startup file" como app.js.
Paso 6: Variables de entorno
Añade tus secretos (como DATABASE_URL o claves de API) directamente en la interfaz de Node.js de cPanel. También puedes usar un archivo .env en la raíz, pero asegúrate de que no esté dentro de la carpeta dist. Reinicia la aplicación después de realizar los cambios.
Solución de problemas comunes
• EADDRINUSE: Es probable que tengas un proceso manual en ejecución. Deja que Passenger gestione la aplicación.
• Cannot find module: Falta tu compilación o la ruta en app.js es incorrecta.
• Redis connection failed: Comprueba si Namecheap permite conexiones salientes en tu puerto de Redis. Es posible que debas pedir al soporte de Namecheap que lo abra.
Fuente: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
