Articulo de ayuda
Cómo Instalar y Ejecutar Node.js en tu VPS
Instala Node.js en tu VPS con NVM o desde repositorio, ejecuta tu app, configúrala como servicio con PM2 y publica con Nginx como proxy inverso.
Introducción
Node.js es un entorno que permite ejecutar aplicaciones escritas en JavaScript en el servidor. Es muy utilizado para APIs, aplicaciones en tiempo real (chats, notificaciones), aplicaciones con React, Vue o Angular, y microservicios.
Si has desarrollado una aplicación con Node.js y quieres publicarla, un VPS es el lugar ideal. En este artículo vas a ver cómo instalar Node.js, ejecutar tu app y mantenerla funcionando permanentemente.
Node.js no funciona igual que PHP. En PHP, el servidor web (Apache o Nginx) ejecuta los scripts. En Node.js, la aplicación es el servidor: se mantiene corriendo y escuchando peticiones.
Requisitos previos
Antes de empezar necesitas:
- Un VPS con Ubuntu, Debian, AlmaLinux o Rocky Linux.
- Acceso por SSH como root o un usuario con
sudo. - El sistema actualizado.
Método 1: Instalar Node.js con NVM (recomendado)
NVM (Node Version Manager) te permite instalar y cambiar entre varias versiones de Node.js. Es la opción más flexible.
Paso 1: Instalar NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
Recarga el terminal:
source ~/.bashrc
Paso 2: Instalar Node.js
La versión LTS (soporte a largo plazo) es la recomendada para producción:
nvm install --lts
Comprueba que está instalado:
node -v
npm -v
Ventaja de NVM
Si tu app necesita una versión concreta, instálala:
nvm install 20
nvm use 20
Método 2: Instalar Node.js desde repositorio
Si solo necesitas una versión y quieres algo más simple:
apt install nodejs npm -y
En AlmaLinux/Rocky:
dnf install nodejs npm -y
Comprueba la versión:
node -v
El paquete de los repositorios puede no ser la última versión. Si necesitas una versión concreta, usa NVM.
Ejecutar tu aplicación Node.js
Sube los archivos de tu app al servidor (por FTP, Git o rsync). Luego, entra en la carpeta e instala las dependencias:
cd /var/www/miapp
npm install
Arranca la aplicación:
node app.js
⚠️ Si cierras el terminal, la aplicación se para. Para que se mantenga corriendo necesitas PM2 o systemd (lo vemos a continuación).
Mantener la app corriendo con PM2
PM2 es un gestor de procesos para Node.js. Mantiene tu app corriendo aunque cierres el terminal y la reinicia si se cae.
Instalar PM2
npm install -g pm2
Arrancar tu app con PM2
cd /var/www/miapp
pm2 start app.js --name "miapp"
Guardar la configuración y arranque automático
pm2 startup
pm2 save
PM2 te mostrará un comando para ejecutar (cópialo y pégalo). Así tu app arrancará sola cuando se reinicie el servidor.
[Imagen sugerida: captura de PM2 mostrando el estado de la aplicación]
Comandos útiles de PM2
pm2 status # ver apps corriendo
pm2 logs miapp # ver los logs
pm2 restart miapp # reiniciar la app
pm2 stop miapp # parar la app
pm2 delete miapp # eliminar la app de PM2
Publicar con Nginx como proxy inverso
Tu app Node.js corre en un puerto interno (por ejemplo el 3000). Para que sea accesible por el puerto 80 o 443 (HTTP/HTTPS), configura Nginx como proxy inverso.
Paso 1: Instalar Nginx
apt install nginx -y
Paso 2: Crear la configuración del sitio
nano /etc/nginx/sites-available/miapp
server {
listen 80;
server_name tu-dominio.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Paso 3: Activar el sitio
ln -s /etc/nginx/sites-available/miapp /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Ahora tu app es accesible desde http://tu-dominio.com.
Paso 4: Activar SSL con Let’s Encrypt
apt install certbot python3-certbot-nginx -y
certbot --nginx -d tu-dominio.com
[Imagen sugerida: esquema de Nginx como proxy inverso hacia Node.js]
Consejos útiles
- Usa siempre la versión LTS en producción. Es la más estable.
- No ejecutes la app como root. Crea un usuario normal para mayor seguridad.
- Configura variables de entorno. Usa un archivo
.envpara claves y configuración. - Mantén Node.js actualizado. Las actualizaciones corrigen vulnerabilidades.
- Supervisa los logs. Con PM2 puedes verlos en tiempo real con
pm2 logs.
Problemas frecuentes
La app se cae al cerrar el terminal
Es normal. Necesitas PM2 o systemd para mantenerla corriendo como servicio.
No puedo acceder a la app desde el navegador
Comprueba que la app corre en localhost:3000 (o el puerto que sea), que Nginx está activo y que el firewall permite el puerto 80 y 443.
Error “Cannot find module”
Te falta instalar las dependencias. Entra en la carpeta de la app y ejecuta npm install.
El puerto 3000 está ocupado
Cambia el puerto en tu app o usa otro. Recuerda actualizar también la configuración de Nginx.
La app va lenta con muchas peticiones
Considera usar más de un proceso (cluster mode) con PM2:
pm2 start app.js -i max
Preguntas frecuentes
¿Node.js necesita Apache o Nginx?
No para funcionar (la propia app es el servidor), pero sí es muy recomendable poner Nginx delante como proxy inverso para servir HTTPS y equilibrar la carga.
¿Puedo tener varias apps Node.js en el mismo VPS?
Sí. Cada app corre en un puerto distinto y configuras un sitio Nginx por cada dominio.
¿Qué versión de Node.js debo usar?
La versión LTS (Long Term Support), que es la más estable para producción.
¿PM2 es gratuito?
Sí, PM2 es gratuito y de código abierto. Tiene una versión de pago (PM2 Plus) para monitorización avanzada.
¿Necesito saber programar para publicar una app Node.js?
Necesitas saber manejar tu app y configurar el servidor. No necesitas ser programador, pero sí tener conocimientos básicos de Linux.
Publica tu app Node.js con confianza
Node.js es una opción fantástica para aplicaciones modernas, y un VPS es el lugar ideal para publicarlas. Con NVM para gestionar versiones, PM2 para mantener la app corriendo y Nginx como proxy inverso, tienes una configuración profesional y estable.
Si prefieres no ocuparte de la instalación y configuración, en miHosting ofrecemos VPS administrados donde instalamos Node.js, configuramos PM2 y Nginx, y mantenemos el servidor por ti. Abre un ticket desde tu panel de cliente y te ayudamos.