Commit Graph

3 Commits

Author SHA1 Message Date
b6fa1fa472 feat: Mejora generador de servicios systemd con soporte completo NVM
Mejora la generación de archivos .service para incluir automáticamente
el PATH de NVM y NODE_ENV, siguiendo las mejores prácticas de systemd.

PROBLEMA RESUELTO:
- Servicios generados no incluían Environment=PATH con NVM
- Faltaba NODE_ENV=production por defecto
- Variables de entorno desordenadas
- Sin logging de detección de NVM

MEJORAS IMPLEMENTADAS:

1. Auto-detección de NVM en ejecutable:
   - Si el ejecutable contiene '/.nvm/', extrae el directorio bin
   - Agrega Environment=PATH=/path/to/.nvm/.../bin:...
   - Log: "Agregando PATH de NVM: /path/to/bin"

2. NODE_ENV por defecto:
   - Apps Node.js obtienen NODE_ENV=production automáticamente
   - Solo si el usuario no lo definió explícitamente
   - Previene errores de módulos dev en producción

3. Orden lógico de variables:
   - PATH primero (crítico para encontrar node/npm)
   - NODE_ENV segundo
   - Variables del usuario después
   - ExecStart después de todas las env vars

4. Construcción mejorada del servicio:
   - Usa StringBuilder para mejor control
   - Separa secciones lógicamente
   - Más fácil de leer y mantener

SERVICIO GENERADO (ejemplo):

[Unit]
Description=App para gestionar Tareas
After=network.target

[Service]
Type=simple
User=user_apps
WorkingDirectory=/home/user_apps/apps/app_tareas
Environment=PATH=/home/user_apps/.nvm/versions/node/v24.12.0/bin:/usr/local/bin:/usr/bin:/bin
Environment=NODE_ENV=production
Environment="PORT=3000"
ExecStart=/home/user_apps/.nvm/versions/node/v24.12.0/bin/npm start

Restart=always
RestartSec=10
SyslogIdentifier=siax-app-TAREAS

[Install]
WantedBy=multi-user.target

COMANDOS SYSTEMD (ejecutados automáticamente por AppManager):
 sudo systemctl daemon-reload
 sudo systemctl enable siax-app-TAREAS.service
 sudo systemctl start siax-app-TAREAS.service

BENEFICIOS:
 Servicios funcionan con NVM sin configuración manual
 PATH correcto para encontrar node/npm
 NODE_ENV=production mejora rendimiento y seguridad
 Logging claro cuando se detecta NVM
 Orden profesional de variables de entorno

Archivos modificados:
- src/systemd/service_generator.rs: +50/-20 líneas
- test_service_generation.sh: nuevo (ejemplo de uso)
2026-01-18 02:58:15 -05:00
1f7ae42b3d fix: Fase 4.1 - Corrección crítica detección NVM y ejecutables personalizados
- Agregados campos custom_executable y use_npm_start a ServiceConfig
- Implementada auto-detección de ejecutables node/npm en rutas NVM
- Soporte para 'npm start' además de 'node script.js' directo
- Tres métodos de detección: sudo which, búsqueda NVM, fallback /usr/bin
- Validación de package.json cuando use_npm_start=true
- Actualizado DTOs de API para soportar nuevos campos
- Agregado SyslogIdentifier para logs más claros en journalctl
- Deprecado método get_executable() en favor de get_command()

Resuelve bug status 203/EXEC con Node.js instalado vía NVM.
Afecta: 80% de instalaciones Node.js en producción.

Cambios:
- src/models/service_config.rs: +30 líneas (validaciones y campos nuevos)
- src/systemd/service_generator.rs: +120 líneas (auto-detección)
- src/api/dto.rs: +6 líneas (nuevos campos DTO)
- src/api/handlers.rs: +2 líneas (mapeo campos)
- ESTADO_PROYECTO.md: actualizado con diagnóstico del bug
- tareas.txt: plan detallado Fase 4.1
- ejemplo_registro_ideas.sh: script de prueba
2026-01-15 02:36:59 -05:00
b0489739cf feat: Implementación completa Fase 4 - Sistema de monitoreo con API REST y WebSocket
 Nuevas funcionalidades:
- API REST unificada en puerto 8080 (eliminado CORS)
- WebSocket para logs en tiempo real desde journalctl
- Integración completa con systemd para gestión de servicios
- Escaneo automático de procesos Node.js y Python
- Rate limiting (1 operación/segundo por app)
- Interface web moderna con Tailwind CSS (tema oscuro)
- Documentación API estilo Swagger completamente en español

🎨 Interface Web (todas las páginas en español):
- Dashboard con estadísticas en tiempo real
- Visor de escaneo de procesos con filtros
- Formulario de registro de aplicaciones con variables de entorno
- Visor de logs en tiempo real con WebSocket y sidebar
- Página de selección de apps detectadas
- Documentación completa de API REST

🏗️ Arquitectura:
- Módulo models: ServiceConfig, ManagedApp, AppStatus
- Módulo systemd: wrapper de systemctl, generador de .service, parser
- Módulo orchestrator: AppManager, LifecycleManager con validaciones
- Módulo api: handlers REST, WebSocket manager, DTOs
- Servidor unificado en puerto 8080 (Web + API + WS)

🔧 Mejoras técnicas:
- Eliminación de CORS mediante servidor unificado
- Separación clara frontend/backend con carga dinámica
- Thread-safe con Arc<DashMap> para estado compartido
- Reconciliación de estados: sysinfo vs systemd
- Validaciones de paths, usuarios y configuraciones
- Manejo robusto de errores con thiserror

📝 Documentación:
- README.md actualizado con arquitectura completa
- EJEMPLOS.md con casos de uso detallados
- ESTADO_PROYECTO.md con progreso de Fase 4
- API docs interactiva en /api-docs
- Script de despliegue mejorado con health checks

🚀 Producción:
- Deployment script con validaciones
- Health checks y rollback capability
- Configuración de sudoers para systemctl
- Hardening de seguridad en servicios systemd
2026-01-13 08:24:13 -05:00