Cómo alojar una aplicación Node.js en producción
Desarrollaste tu app en Node.js y funciona en localhost. Ahora necesitás ponerla en producción de forma profesional, segura y escalable.
Elegir el servidor
Para Node.js en producción necesitás un VPS con al menos 1 GB de RAM (2 GB recomendado), acceso root, y Node.js instalado. Un Cloud VPS con NVMe es ideal. No uses hosting compartido — no tenés control sobre el entorno.
Instalar Node.js correctamente
Usá nvm (Node Version Manager) para instalar y gestionar versiones. Instalá la versión LTS actual. No uses la versión del repositorio del SO (suele estar desactualizada).
PM2: process manager
PM2 mantiene tu app corriendo 24/7, la reinicia si crashea, y permite zero-downtime reloads. Instalá con npm install -g pm2, ejecutá con pm2 start app.js, y configurá pm2 startup para que arranque con el servidor.
Nginx como reverse proxy
Nginx recibe las requests HTTP/HTTPS y las reenvía a tu app Node.js (que corre en un puerto interno como 3000). Esto te da: SSL termination, caching de estáticos, compresión, y la posibilidad de servir múltiples apps en el mismo servidor.
SSL con Let's Encrypt
Instalá certbot y obtené un certificado: certbot --nginx -d tudominio.com. Se renueva automáticamente. Nginx maneja el SSL y tu app Node.js solo recibe tráfico HTTP interno.
Variables de entorno
Nunca hardcodees secrets en el código. Usá un archivo .env (no commiteado a Git) con dotenv, o configurá variables en PM2 ecosystem.config.js. Para producción, considerá un secret manager.
Monitoreo y logs
PM2 tiene monitoreo integrado (pm2 monit). Configurá logs con pm2 logs y rotación con pm2-logrotate. Para métricas avanzadas, usá PM2 Plus o Prometheus + Grafana.
Deploy automatizado
Configurá un webhook o GitHub Action que haga: git pull, npm install, npm run build, pm2 reload app. Esto te da deploys en segundos sin downtime.