═══════════════════════════════════════════════════════════════════════════════ INSTRUCCIONES DE DESPLIEGUE EN HOSTING SIN CONSOLA ═══════════════════════════════════════════════════════════════════════════════ Tu proyecto CV Dinámico está listo para subir a un hosting sin acceso a consola. 📋 REQUISITOS EN EL HOSTING: ═══════════════════════════════════════════════════════════════════════════════ ✓ Node.js habilitado (versión 14+ recomendada) ✓ Gestor de archivos o FTP ✓ Capacidad de crear archivos .js en la raíz ✓ Puerto 3000 disponible (o el que uses) 📁 ESTRUCTURA DE CARPETAS A SUBIR: ═══════════════════════════════════════════════════════════════════════════════ cv_dinamico/ ├── server.js (Archivo principal) ├── package.json (Dependencias) ├── .env (Configuración - IMPORTANTE) ├── node_modules/ (Dependencias instaladas) ├── views/ (Plantillas EJS) │ ├── layout.ejs │ ├── index.ejs │ ├── acerca_de_mi.ejs │ ├── experiencia.ejs │ ├── habilidades.ejs │ ├── proyectos.ejs │ ├── liderazgo.ejs │ ├── contacto.ejs │ └── cvData.js (Datos del CV) └── public/ (Archivos estáticos - CSS, JS, imágenes) └── styles/ └── scripts/ 🚀 PASOS DE DESPLIEGUE: ═══════════════════════════════════════════════════════════════════════════════ 1. COMPRIMIR EL PROYECTO: - Elimina la carpeta node_modules ANTES de comprimir (ocupa mucho) - Crea un ZIP con toda la estructura - Incluye el archivo .env con tus credenciales 2. SUBIR AL HOSTING: a) Por FTP/Gestor de archivos: - Sube el ZIP completo - Extrae en la raíz del hosting o en una carpeta - Ejemplo: /public_html/cv_dinamico/ b) Via SSH (si está disponible): ``` cd /public_html unzip cv_dinamico.zip cd cv_dinamico npm install npm start & ``` 3. INSTALAR DEPENDENCIAS (Sin Terminal): ⚠️ PROBLEMA: Sin consola, no puedes ejecutar "npm install" SOLUCIÓN 1 - Subir node_modules precompilados: ════════════════════════════════════════════════ - Ejecuta en tu PC: npm install - Comprime carpeta node_modules - Sube junto con los archivos (aumentará tamaño del ZIP) SOLUCIÓN 2 - Panel de Control del Hosting: ════════════════════════════════════════════ Algunos hostings incluyen: - cPanel con Terminal de comando (rara vez) - CloudLinux LVE Manager - Interfaz web para ejecutar npm commands SOLUCIÓN 3 - Script de Auto-instalación: ════════════════════════════════════════════ Usa el archivo: start-app.js (incluido) 4. INICIAR LA APLICACIÓN: OPCIÓN A - Si tu hosting tiene cPanel/Terminal: ``` cd /ruta/del/proyecto npm start ``` OPCIÓN B - Si usa Forever (instalado globalmente): ``` forever start server.js ``` OPCIÓN C - Si usa PM2 (instalado globalmente): ``` pm2 start server.js --name "cv-dinamico" pm2 startup pm2 save ``` OPCIÓN D - Script de iniciación automática: ``` node start-app.js ``` ⚙️ CONFIGURAR .env: ═══════════════════════════════════════════════════════════════════════════════ Edita el archivo .env en el hosting con tus credenciales reales: EMAIL_USER=greyes@lifesoftw.com EMAIL_PASSWORD=tu_contraseña_aquí EMAIL_HOST=mail.lifesoftw.com EMAIL_PORT=587 GMAIL_USER=guiditoreyes@gmail.com IMPORTANTE: - Usa credenciales reales, no contraseñas de ejemplo - El archivo .env debe estar en la raíz del proyecto - Debe contener exactamente estas 5 variables 🔍 VERIFICAR QUE FUNCIONE: ═══════════════════════════════════════════════════════════════════════════════ 1. Accede a tu dominio: http://tu-dominio.com (o puerto designado) 2. Si ves la página, ¡funciona! 3. Prueba la sección de Contacto → envía un mensaje 4. Verifica que lleguen los correos 🆘 SOLUCIÓN DE PROBLEMAS: ═══════════════════════════════════════════════════════════════════════════════ Problema: "Error: listen EADDRINUSE" Solución: El puerto 3000 está en uso. Cambia PORT en .env o server.js Problema: "Cannot find module 'express'" Solución: Ejecuta npm install o sube node_modules precompilado Problema: "ENOENT: no such file or directory, open '.env'" Solución: Crea el archivo .env en la raíz del proyecto Problema: Los correos no se envían Solución: Verifica credenciales en .env y que EMAIL_HOST sea accesible 📞 INFORMACIÓN DE HOSTING ESPECÍFICA: ═══════════════════════════════════════════════════════════════════════════════ Tipo de Hosting: ________________________________ Proveedor: ____________________________________ URL: ___________________________________________ Usuario: _______________________________________ Contraseña: ____________________________________ Puerto Node.js: _______________________________ Raíz del proyecto: _____________________________ Notas adicionales del proveedor: _____________________________________________________________________________ _____________________________________________________________________________ 💡 ALTERNATIVA: USAR PM2 (RECOMENDADO): ═══════════════════════════════════════════════════════════════════════════════ PM2 es un gestor de procesos que mantiene tu app activa: 1. Instala PM2 globalmente en el hosting: npm install -g pm2 2. Inicia tu app con PM2: pm2 start server.js --name "cv-dinamico" 3. Configura reinicio automático: pm2 startup pm2 save 4. Verifica estado: pm2 list pm2 logs cv-dinamico 5. Detener app: pm2 stop cv-dinamico 📊 ESPECIFICACIONES DEL PROYECTO: ═══════════════════════════════════════════════════════════════════════════════ Framework: Express.js 5.1.0 Motor de Templates: EJS Email: Nodemailer 7.0.11 Node.js mínimo: v14 Memoria RAM necesaria: ~50MB Espacio disco: ~200MB (sin node_modules) Puerto por defecto: 3000 ═══════════════════════════════════════════════════════════════════════════════