Respuesta directa: El hosting compartido no está diseñado para Node.js. Aunque algunos proveedores anuncian compatibilidad, en la práctica las restricciones de procesos, puertos y recursos hacen que desplegar una aplicación Node.js real sea muy difícil o imposible.
Si llegaste aquí porque tu app Node.js no arranca, te rechazaron el puerto o simplemente nadie te explica por qué no funciona, este artículo cubre exactamente eso.
¿Por qué el hosting compartido y Node.js no se llevan bien?
El hosting compartido fue construido para PHP. El modelo es simple: Apache o Nginx recibe una petición, ejecuta un script PHP, devuelve la respuesta y termina. Node.js funciona diferente: levanta un proceso persistente que escucha en un puerto TCP.
En un servidor compartido eso genera tres problemas inmediatos:
- Sin acceso a puertos personalizados: No puedes abrir el puerto 3000 (o cualquier otro) porque el firewall del servidor compartido solo expone los puertos 80 y 443, administrados por el proveedor.
- Sin acceso SSH real o limitado: Muchos planes compartidos ofrecen SSH restringido o directamente no lo incluyen, así que no puedes ejecutar
node server.jsde forma persistente. - Límites de procesos agresivos: Los planes compartidos limitan cuántos procesos puede tener tu usuario. Un proceso Node.js que permanece activo consume un slot todo el tiempo, chocando rápido con ese límite.
Errores frecuentes al intentar Node.js en hosting compartido
Estos son los mensajes que aparecen con más frecuencia cuando alguien intenta forzar Node.js en un plan compartido:
Error: EACCES permission denied (bind)
Node.js intenta escuchar en un puerto (por ejemplo :3000) y el sistema operativo lo rechaza porque ese rango de puertos no está permitido para tu usuario. En hosting compartido, los puertos por debajo de 1024 son solo para root, y los altos están filtrados de todas formas.
Process killed / Terminated
El servidor compartido detecta que tu proceso lleva demasiado tiempo activo o consume demasiada memoria y lo mata automáticamente. Es una consecuencia directa de los límites de recursos del plan.
La app corre pero nadie puede acceder
Corres node index.js sin error, pero cuando visitas tu dominio no aparece nada. El proceso escucha internamente en localhost:3000, pero no hay ningún proxy configurado que enrute el tráfico externo del puerto 80 hacia ese puerto. Configurar ese proxy requiere acceso a Apache/Nginx que el hosting compartido no te da.
Node.js no está instalado / versión incorrecta
Muchos servidores compartidos tienen una versión de Node.js muy antigua (a veces 12.x o 14.x) instalada para herramientas internas. Si tu app requiere Node 18+ o 20+, simplemente no arrancará.
Lo que algunos proveedores llaman "soporte Node.js"
Algunos hosts anuncian "Node.js incluido" en sus planes compartidos. Antes de comprar, verifica exactamente qué significa:
| Lo que dicen | Lo que suele significar en la práctica |
|---|---|
| Node.js incluido | Puedes ejecutar scripts cortos vía cron, no un servidor persistente |
| Soporte Node.js en cPanel | Módulo Passenger de cPanel: funciona para apps simples, muy limitado en configuración |
| Selector de versión Node.js | Cambia la versión para tu usuario, pero los límites de procesos y memoria siguen iguales |
El módulo Phusion Passenger de cPanel es la excepción más real: permite desplegar apps Node.js detrás de Apache sin abrir puertos manualmente. Funciona para proyectos pequeños con tráfico bajo, pero sigue sujeto a los límites de CPU y memoria del plan.
Alternativas reales para correr Node.js
Si tu proyecto es más que una prueba de concepto, estas son las opciones que sí funcionan:
VPS (Servidor Privado Virtual)
La alternativa más directa. Tienes acceso root, puedes instalar la versión de Node.js que necesites, configurar PM2 para mantener el proceso activo, y abrir los puertos que requieras. Un VPS de entrada con 1-2 GB de RAM es suficiente para la mayoría de proyectos medianos.
Plataformas PaaS (Platform as a Service)
Render, Railway, Fly.io y similares están diseñados para apps Node.js. Haces push de tu código y la plataforma gestiona el servidor, el proxy y la escalabilidad. Muchos tienen tier gratuito para proyectos pequeños.
Serverless Functions
Si tu app Node.js es una API o conjunto de endpoints, considera convertirla a funciones serverless (Vercel, Netlify Functions, Cloudflare Workers). Cada función ejecuta por petición, sin proceso persistente, sin problema de puertos.
Contenedores (Docker + hosting administrado)
Para proyectos con dependencias complejas, Docker garantiza que el entorno sea idéntico en cualquier servidor. Servicios como DigitalOcean App Platform o Google Cloud Run ejecutan contenedores sin que gestiones el servidor.
Para elegir bien entre estas opciones según el tamaño y presupuesto de tu proyecto, los especialistas de elenlace.com pueden ayudarte a hacer la transición desde hosting compartido sin interrupciones.
También puedes revisar más comparativas de infraestructura en nuestra sección de comparativas de hosting.
Conclusiones clave
- El hosting compartido no soporta procesos persistentes de Node.js en condiciones reales de producción.
- Los errores más comunes son de puertos bloqueados, procesos killed y falta de proxy reverso.
- Phusion Passenger en cPanel es la única excepción parcial, y solo para proyectos de tráfico muy bajo.
- Para producción real, la alternativa mínima viable es un VPS; para simplicidad, una plataforma PaaS.
- Serverless es ideal si tu app Node.js es principalmente una API sin estado.
Si ya tienes claro que necesitas salir del hosting compartido, agenda una consulta con elenlace.com para elegir el plan de VPS o nube que mejor se ajuste a tu proyecto y presupuesto.
Preguntas frecuentes
¿Puedo usar Node.js en hosting compartido de GoDaddy o Hostinger?
Hostinger ofrece Phusion Passenger en algunos planes, lo que permite desplegar apps Node.js básicas. GoDaddy no ofrece soporte práctico para Node.js en sus planes compartidos. En ambos casos, los límites de recursos del plan compartido aplican igualmente.
¿PM2 funciona en hosting compartido?
No de forma confiable. PM2 necesita mantener procesos activos en segundo plano, algo que los planes compartidos matan activamente para proteger los recursos del servidor compartido entre todos los usuarios.
¿Qué tan barato puede ser un VPS para Node.js?
Un VPS básico con 1 GB de RAM cuesta entre 4 y 8 USD al mes en proveedores como DigitalOcean, Linode o Vultr. Es suficiente para aplicaciones Node.js de tráfico moderado. Algunas plataformas PaaS tienen tiers gratuitos que cuestan incluso menos.
¿Mi app Express.js puede correr en hosting compartido?
Técnicamente, solo si el hosting ofrece Phusion Passenger y la versión de Node.js compatible con tu app. Fuera de ese caso, Express.js requiere un proceso persistente que el hosting compartido no puede sostener de manera estable.
Recursos útiles
Otros proveedores y guías que vale la pena comparar: