NodeJS
Guía Completa: Despliegue de Node.js con PM2, Dploy y Mejores Prácticas de Seguridad en CloudPanel v2
Esta guía reúne la información de los siguientes enlaces oficiales de CloudPanel v2:
- Despliegue de Node.js con PM2
- Introducción a Dploy
- Instalación y configuración de Dploy
- Mejores prácticas de seguridad
1. Despliegue de Aplicaciones Node.js con PM2 en CloudPanel v2
CloudPanel permite desplegar fácilmente aplicaciones Node.js utilizando PM2 (Process Manager 2), un gestor de procesos que mantiene tu aplicación viva, la reinicia automáticamente y ofrece monitoreo.
Pasos principales
Instalar Node.js
En CloudPanel, selecciona la versión de Node.js que necesites (v14, v16, v18, v20, etc.) en la pestaña Node.js del sitio.
Instalar PM2
Conéctate por SSH como usuario del sitio y ejecuta:
npm install -g pm2
Iniciar tu aplicación con PM2
Ejemplo para una app Express en app.js:
pm2 start app.js --name "mi-app-node"
Guardar la configuración y hacer que PM2 se inicie al reiniciar el servidor:
pm2 save
pm2 startup
Comandos útiles de PM2:
- Ver lista de procesos:
pm2 list - Reiniciar:
pm2 restart mi-app-node - Ver logs:
pm2 logs mi-app-node - Monitoreo:
pm2 monit - Eliminar proceso:
pm2 delete mi-app-node
Configuración recomendada para producción
- Usa un archivo
ecosystem.config.jspara definir múltiples procesos o entornos. - Configura variables de entorno con
.envydotenv. - Asegúrate de que el puerto de la app sea el 8080 (o el que CloudPanel use por defecto para reverse proxy).
2. Introducción a Dploy
Dploy es una solución de despliegue de código potente y sencilla que automatiza la liberación de nuevas versiones de aplicaciones en CloudPanel.
Beneficios principales
- Despliegue con cero tiempo de inactividad (zero-downtime).
- Soporte para PHP, Node.js, Python y sitios estáticos.
- Despliegue continuo (continuous deployment).
- Configuración rápida (menos de 60 segundos).
- Open source bajo licencia MIT.
Dploy crea una estructura de releases con symlink current → la versión activa, carpetas releases/ y shared/ para archivos persistentes.
3. Instalación y Configuración de Dploy
Requisitos previos
- Acceso root al servidor.
- Usuario del sitio con permisos adecuados.
- Repositorio Git (URL SSH).
- Para PHP: recargar PHP-FPM.
Pasos de instalación
1. Descargar e instalar Dploy CLI:
curl -sS https://dploy.cloudpanel.io/dploy -o /usr/local/bin/dploy; \
echo "8809e9eb63483487f16b0a2e4075a8b18350a02470405e2f786bf82fd7e5fb53 /usr/local/bin/dploy" | \
sha256sum -c && chmod +x /usr/local/bin/dploy
2. Inicializar Dploy:
dploy init
- Ingresa la URL SSH del repositorio Git.
- Especifica el directorio de despliegue (ej.
~/htdocs/www.dominio.com).
Estructura creada:
~/.dploy/config.yml~/.dploy/overlays/(para archivos específicos como.env)current(symlink a la release activa)releases/shared/
3. Configurar sudoers (solo para PHP):
echo 'nombre-usuario ALL = NOPASSWD: /usr/bin/systemctl reload php*-fpm' >> /etc/sudoers.d/dploy
4. Clave SSH para repositorios privados:
ssh-keygen -f ~/.ssh/dploy-git
Añade la clave pública al proveedor Git y configura ~/.ssh/config.
5. Establecer el Root Directory del sitio en CloudPanel a current.
6. Desplegar:
dploy deploy main # rama
dploy deploy v1.0.0 # tag
Ejemplo de config.yml (para Node.js)
shared_dirs:
- node_modules
- logs
before_commands:
- npm ci
after_commands:
- pm2 reload ecosystem.config.js
4. Mejores Prácticas de Seguridad en CloudPanel v2
Firewall y acceso
- Usa el firewall integrado (UFW) y abre solo los puertos 22 (SSH) y 8443 (CloudPanel) para tus IPs.
- Si no tienes IP fija, usa VPN (ej. OpenVPN).
- Añade Basic Auth delante del panel de CloudPanel.
- Habilita Two-Factor Authentication (2FA) para todos los usuarios.
Actualizaciones
- Mantén CloudPanel, el sistema operativo y todo el software siempre actualizado.
- Actualiza regularmente los paquetes de seguridad.
Backups
- Implementa una estrategia sólida de copias de seguridad.
- Usa backups automáticos de CloudPanel y backups remotos (S3, Wasabi, Dropbox, SFTP, etc.).
- Prueba restauraciones regularmente.
- Mantén un entorno de staging actualizado.
Seguridad del servidor
- Usa contraseñas fuertes.
- Elimina software innecesario.
- Cifra la comunicación (HTTPS) y los datos.
Seguridad de sitios web
- Protege contra ataques comunes (DDoS, SQL Injection, XSS) con un Web Application Firewall.
- Recomendaciones: Cloudflare (integrado con CloudPanel), Sucuri o AWS WAF.
Permisos de archivos
- Usa permisos estrictos: 755 para carpetas, 644 para archivos.
- Nunca dejes permisos 777.
¡Con estas herramientas y prácticas tendrás aplicaciones Node.js y PHP desplegadas de forma profesional, automatizada y segura en CloudPanel!