Introducción: ¿Por qué VPS es la solución ideal para tu aplicación Node.js?
\nHas escrito una aplicación genial en JavaScript (Node.js), la has probado localmente, y ahora quieres que esté disponible en internet 24/7. El hosting compartido a menudo no es adecuado para Node.js debido a sus limitaciones, y los servicios en la nube (Heroku, Railway) pueden ser caros o impredecibles en términos de rendimiento. Un Servidor Privado Virtual (VPS) es el punto medio ideal: control total, alto rendimiento y precio asequible.
\nEn esta guía paso a paso, desglosaremos el proceso de despliegue de una aplicación JavaScript (Node.js) en un VPS desde cero. Aprenderás cómo configurar el servidor, instalar el software necesario, ejecutar la aplicación de forma segura y hacerla accesible a través de un dominio. Todos los ejemplos de código son funcionales y probados.
\n\n1. Preparación del servidor: configuración inicial del VPS
\nPara empezar, necesitarás alquilar un VPS de cualquier proveedor (DigitalOcean, Vultr, Timeweb, Selectel). Características mínimas: 1 vCPU, 1-2 GB de RAM, 20-30 GB SSD. Sistema operativo: Ubuntu 22.04 LTS (la versión más estable).
\n\n1.1. Conexión al servidor por SSH
\nDespués de obtener la dirección IP y la contraseña, nos conectamos al servidor a través de la terminal (Mac/Linux) o PuTTY (Windows):
\nssh root@tu_IP_del_servidor\nCambiamos la contraseña inmediatamente y creamos un nuevo usuario (trabajar como root es una mala práctica):
\nadduser deploy_user\nusermod -aG sudo deploy_user\nsu - deploy_user\n\n1.2. Actualización del sistema e instalación de paquetes básicos
\nsudo apt update && sudo apt upgrade -y\nsudo apt install -y curl git ufw build-essential\nConfiguramos el cortafuegos básico UFW (dejamos solo SSH y los puertos que usaremos):
\nsudo ufw allow OpenSSH\nsudo ufw allow 80/tcp\nsudo ufw allow 443/tcp\nsudo ufw enable\n\n2. Instalación de Node.js y del gestor de procesos PM2
\nPara que la aplicación JavaScript funcione en el servidor, necesitaremos Node.js. Usamos el gestor de versiones oficial NodeSource para instalar la versión LTS más reciente:
\n\n2.1. Instalación de Node.js (v20 LTS)
\ncurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\nsudo apt install -y nodejs\nVerificamos la instalación:
\nnode -v # v20.x.x\nnpm -v # 10.x.x\n\n2.2. Instalación y configuración de PM2
\nPM2 es un gestor de procesos avanzado para Node.js. Reinicia automáticamente la aplicación si falla, gestiona los registros y permite ejecutar múltiples instancias (clustering).
\nsudo npm install -g pm2\nConfiguramos el inicio automático de PM2 al reiniciar el servidor:
\npm2 startup systemd\nsudo env PATH=$PATH:/usr/bin pm2 startup systemd -u deploy_user --hp /home/deploy_user\n\n3. Despliegue de la aplicación y ejecución con PM2
\nAhora estamos listos para transferir tu aplicación JavaScript al servidor. Hay dos métodos populares: a través de Git (recomendado) o mediante SCP/FileZilla.
\n\n3.1. Clonación del repositorio (Git)
\ncd /home/deploy_user\ngit clone https://github.com/tu_usuario/tu_repositorio.git myapp\ncd myapp\nInstalamos las dependencias y compilamos el proyecto (si es necesario):
\nnpm install\n# Si hay un script de compilación: npm run build\n\n3.2. Creación del archivo de configuración .env
\nNunca guardes secretos en el código. Crea un archivo .env en la carpeta del proyecto:
\nnano .env\nEjemplo de contenido:
\nPORT=3000\nNODE_ENV=production\nDATABASE_URL=mongodb://localhost:27017/myapp\nJWT_SECRET=tu_súper_secreto\n\n3.3. Ejecución de la aplicación con PM2
\nSupongamos que el punto de entrada de tu aplicación es app.js o server.js. Lo ejecutamos:
pm2 start app.js --name "myapp"\nVerificamos el estado:
\npm2 status\npm2 logs myapp