Introducción: ¿Por qué hacer deploy de una aplicación JavaScript en una VPS?
Desarrollar una aplicación web moderna en JavaScript (Node.js) es solo la mitad del trabajo. La segunda parte, igualmente importante, es el deploy, es decir, desplegar tu proyecto en un servidor real accesible en internet. Usar un Servidor Privado Virtual (VPS) te da control total sobre el entorno, a diferencia del hosting compartido. Puedes configurar el servidor según tus necesidades, instalar cualquier dependencia y garantizar un alto rendimiento.
En esta guía, desglosaremos paso a paso el proceso de deploy de una aplicación típica de JavaScript (Node.js) en una VPS. Cubriremos todas las etapas: desde la configuración inicial del servidor hasta la ejecución de la aplicación en modo producción utilizando el gestor de procesos PM2 y el servidor proxy inverso Nginx. El artículo está dirigido a desarrolladores que ya están familiarizados con los fundamentos de Node.js y la línea de comandos de Linux.
1. Preparación de la VPS y configuración inicial
El primer paso es alquilar una VPS de cualquier proveedor (DigitalOcean, Linode, Vultr o análogos rusos). Tarifa mínima recomendada: 1 vCPU, 1-2 GB de RAM. Sistema operativo: Ubuntu 22.04 LTS (o más reciente).
1.1. Conexión al servidor por SSH
Después de obtener la dirección IP y la contraseña de root, conéctate al servidor desde tu terminal:
ssh root@tu_IP_del_servidor
Si usas una clave SSH (recomendado), especifica la ruta a la clave privada:
ssh -i ~/.ssh/id_rsa root@tu_IP_del_servidor
1.2. Creación de usuario y seguridad básica
Nunca trabajes como root permanentemente. Crea un nuevo usuario y asígnale permisos sudo:
adduser myuserusermod -aG sudo myuser
Luego, configura la clave SSH para el nuevo usuario (copia la clave pública desde tu máquina local) y deshabilita el inicio de sesión por contraseña en el archivo /etc/ssh/sshd_config:
PasswordAuthentication no
Reinicia el servicio SSH: sudo systemctl restart sshd.
1.3. Instalación del software necesario
Actualiza el gestor de paquetes e instala Node.js (recomendamos la versión LTS a través de NodeSource), Git y Nginx:
sudo apt update && sudo apt upgrade -ycurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -sudo apt install -y nodejs git nginx
Verifica las versiones: node -v y npm -v.
2. Clonación del repositorio e instalación de dependencias
Ahora que el servidor está listo, transfiere el código de tu aplicación a él.
2.1. Clonación del proyecto
Ve al directorio home del usuario y clona el repositorio desde GitHub (u otro hosting de Git):
cd /home/myusergit clone https://github.com/tu_usuario/tu_repositorio.git myappcd myapp
2.2. Instalación de dependencias y ejecución de prueba
Instala todos los paquetes npm especificados en package.json:
npm install
Si el proyecto usa variables de entorno (por ejemplo, para la base de datos o claves de API), crea un archivo .env y complétalo:
nano .env
Ejemplo de contenido:
PORT=3000DATABASE_URL=mongodb://localhost:27017/mydbNODE_ENV=production
Ejecuta la aplicación manualmente para asegurarte de que funciona:
node app.js
Verifica la accesibilidad mediante curl http://localhost:3000 o abre en el navegador http://tu_IP:3000 (previamente permitiendo el puerto en el firewall). Si todo funciona, detén el proceso (Ctrl+C).
3. Configuración del gestor de procesos PM2
La aplicación iniciada con node app.js se detendrá en cuanto cierres la sesión SSH. Para un funcionamiento continuo se utiliza PM2, un gestor de procesos para Node.js que reinicia automáticamente la aplicación si falla y gestiona