Cómo dejar de tener miedo y empezar a desplegar: su primer entorno de producción
\n\nHa escrito una aplicación JavaScript genial. Funciona localmente, las pruebas pasan y en la consola no hay ni un solo error. Pero cuando surge la pregunta «¿cómo ejecuto esto en un servidor real?», muchos entran en pánico. VPS, Docker, plataformas en la nube: suena a algo del ámbito de DevOps, no de frontend o backend con Node.js.
\n\nEn realidad, es más fácil de lo que parece. En este artículo, analizaremos tres enfoques principales para el despliegue de aplicaciones JavaScript: en VPS, en Docker y en la nube. Le mostraré ejemplos de código reales, explicaré los pros y los contras de cada método, y podrá elegir el que mejor se adapte a su proyecto.
\n\n¿Qué es el despliegue y por qué es necesario?
\n\nEl despliegue (deploy) es el proceso de implementar su aplicación en un servidor donde estará disponible para los usuarios las 24 horas del día, los 7 días de la semana. El desarrollo local es solo el primer paso. Sin el despliegue, su proyecto sigue siendo solo un conjunto de archivos en su computadora.
\n\nPara los desarrolladores de JavaScript, tres escenarios son especialmente relevantes:
\n\n- \n
- Despliegue en VPS — control total sobre el servidor. \n
- Despliegue en Docker — aislamiento y reproducibilidad del entorno. \n
- Despliegue en plataformas en la nube — mínima molestia con la infraestructura. \n
Analicemos cada opción en detalle.
\n\nDespliegue en VPS: gestión manual y control total
\n\nVPS (Virtual Private Server) es un servidor virtual en el que puede instalar cualquier sistema operativo y configurar todo manualmente. Es un clásico que ofrece la máxima flexibilidad.
\n\nPaso 1: Selección y configuración del servidor
\n\nPara empezar, alquilamos un VPS (por ejemplo, en DigitalOcean, Hetzner o Timeweb). La configuración mínima para Node.js es 1 vCPU y 1 GB de RAM. Elegimos Ubuntu 22.04 LTS.
\n\nDespués de obtener acceso por SSH, realizamos la configuración básica:
\n\nssh root@su_IP_del_servidor\n\n# Actualización de paquetes\napt update && apt upgrade -y\n\n# Instalación de Node.js 20.x\ncurl -fsSL https://deb.nodesource.com/setup_20.x | bash -\napt-get install -y nodejs\n\n# Verificación\nnode -v\nnpm -v\n\nPaso 2: Clonación del repositorio e instalación de dependencias
\n\nSupongamos que su aplicación está en GitHub. La clonamos en el servidor:
\n\ngit clone https://github.com/su_usuario/su_repositorio.git\ncd su_repositorio\nnpm install --production\n\nPaso 3: Configuración de variables de entorno
\n\nNunca guarde secretos en el código. Cree un archivo .env:
nano .env\n\n# Ejemplo de contenido\nPORT=3000\nDATABASE_URL=mongodb://localhost:27017/miapp\nJWT_SECRET=su_súper_secreto\n\nPaso 4: Ejecución con PM2
\n\nPM2 es un gestor de procesos para Node.js. Reinicia automáticamente la aplicación si falla y mantiene su funcionamiento:
\n\nnpm install -g pm2\npm2 start app.js --name "mi-app"\npm2 save\npm2 startup\n\n¡Listo! Su aplicación se ejecuta en el puerto 3000. Para hacerla accesible en el puerto 80, use Nginx como proxy inverso.
\n\napt install nginx -y\nnano /etc/nginx/sites-available/default\n\nDentro del archivo, escriba:
\n\nserver {\n listen 80;\n server_name su_dominio.com;\n\n location / {\n proxy_pass http://localhost:3000;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection 'upgrade';\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n }\n}\n\nReinicie Nginx:
\n\nnginx -t\nsystemctl restart nginx\n\nVentajas del VPS: control total, se puede configurar cualquier cosa, bajo costo.
\nDesventajas: debe encargarse usted mismo de la seguridad, las copias de seguridad y las actualizaciones.
\n\nDespliegue en Docker: contenerización para la reproducibilidad
\n\nD