Despliegue de una aplicación TypeScript en VPS: guía paso a paso
Has escrito una aplicación genial en TypeScript. Localmente funciona perfecto, pero es hora de mostrar el proyecto al mundo. El despliegue en un VPS (Virtual Private Server) es un paso lógico y flexible. A diferencia de las plataformas en la nube, un VPS te da control total sobre el entorno.
En este artículo, analizaremos el proceso paso a paso para desplegar una aplicación TypeScript en un VPS. Usaremos Node.js, PM2 para la gestión de procesos y Nginx como proxy inverso. Todos los ejemplos están en TypeScript.
Se asume que tienes conocimientos básicos de Linux y SSH.
1. Preparación del servidor y conexión
El primer paso es alquilar un VPS (DigitalOcean, Vultr, Timeweb, etc.) y conectarse por SSH.
ssh root@tu_ip_del_servidorActualicemos los paquetes e instalemos las utilidades necesarias de inmediato:
apt update && apt upgrade -yapt install curl git nginx -yInstalemos Node.js (recomendamos la versión LTS):
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -apt install -y nodejsVerifiquemos las versiones:
node -vnpm -v2. Clonar el repositorio y compilar TypeScript
Ahora clonamos tu proyecto. Para el ejemplo, usaremos una aplicación Express simple en TypeScript:
git clone https://github.com/tu_usuario/tu_repositorio.gitcd tu_repositorioInstalemos las dependencias:
npm installTypeScript debe compilarse a JavaScript. Normalmente esto se hace con el comando:
npm run buildEn el package.json debería estar definido así:
{ "scripts": { "build": "tsc", "start": "node dist/index.js" }}Verifica que en la carpeta dist aparezcan los archivos compilados.
3. Instalación y configuración de PM2
PM2 es un gestor de procesos para Node.js. Reinicia la aplicación si falla, mantiene registros y soporta clustering.
Instalemos PM2 de forma global:
npm install pm2 -gIniciemos la aplicación:
pm2 start dist/index.js --name "my-typescript-app"Guardemos la lista de procesos para que PM2 los restaure después de reiniciar el servidor:
pm2 savepm2 startupPM2 mostrará un comando que debes ejecutar (normalmente es systemctl enable pm2-root). Cópialo y ejecútalo.
Puedes verificar el estado con el comando:
pm2 status4. Configuración de Nginx como proxy inverso
Nginx recibirá las solicitudes en el puerto 80 (HTTP) y las redirigirá a tu aplicación (por ejemplo, en el puerto 3000).
Creemos el archivo de configuración:
nano /etc/nginx/sites-available/my-typescript-appInserta el siguiente código (cambia server_name por tu dominio o IP):
server { listen 80; server_name tu_dominio.es www.tu_dominio.es;
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; }}Activemos el sitio:
ln -s /etc/nginx/sites-available/my-typescript-app /etc/nginx/sites-enabled/nginx -tsystemctl restart nginxAhora tu aplicación está accesible a través de la IP o el dominio.
5. Configuración de HTTPS (SSL) con Certbot
Hoy en día no se puede prescindir de HTTPS. Usaremos Let's Encrypt y Certbot.
Instalemos Certbot:
apt install certbot python3-certbot-nginx -yEjecutemos la obtención del certificado:
certbot --nginx -d tu_dominio.es -d www.tu_dominio.es```