Flujo de Configuración Inicial ============================== Esta guía detalla el proceso completo y obligatorio para configurar NoxPanel desde cero hasta tener un entorno completamente funcional para la creación de máquinas virtuales. .. note:: **IMPORTANTE**: Este flujo debe seguirse en el orden exacto indicado. Saltarse pasos o cambiar el orden puede resultar en configuraciones incompletas o errores. Prerequisitos ------------- Antes de comenzar, asegúrate de tener: * **Proxmox VE** instalado y funcionando * **Credenciales de administrador** de Proxmox (usuario root@pam) * **Acceso de red** desde NoxPanel a los nodos Proxmox * **Permisos de administrador** en NoxPanel Fase 1: Configuración del Nodo Proxmox -------------------------------------- **Objetivo**: Conectar NoxPanel con tu infraestructura Proxmox **Paso 1.1: Agregar Nodo Proxmox** 1. Acceder al **Panel de Administración**: - URL: ``/admin/`` - Usuario: ``admin`` (superusuario) 2. Navegar a **VMS > Proxmox Nodes** 3. Hacer clic en **"Add Proxmox Node"** 4. Completar la configuración: .. code-block:: text Name: pve-cluster-01 Host: 192.168.1.10 Port: 8006 User: root@pam Password: tu_password_seguro Verify SSL: False (para desarrollo) Is Primary: True Priority: 1 5. Hacer clic en **"Save"** **Paso 1.2: Probar Conexión** 1. Seleccionar el nodo creado 2. Hacer clic en **"Test Connection"** 3. Verificar que aparezca **"✅ Conectado"** .. important:: **Sincronización Automática**: Al probar la conexión exitosamente, NoxPanel automáticamente: * Importa todos los **pools** existentes en Proxmox * Sincroniza las **VMs** existentes * Detecta los **storages** disponibles * Actualiza el estado de conexión **Resultado Esperado**: - Nodo Proxmox conectado y verificado - Pools de Proxmox importados automáticamente - VMs existentes sincronizadas Fase 2: Configuración de Pools ------------------------------- **Objetivo**: Organizar recursos y definir límites por pool **Paso 2.1: Revisar Pools Importados** 1. Navegar a **VMS > Pools** 2. Verificar que aparezcan los pools importados desde Proxmox 3. Revisar la configuración de cada pool: .. code-block:: text Pool ID: nombre-del-pool Name: Nombre Descriptivo Description: Descripción del pool Max VMs: 10 Max Cores: 32 Max Memory (GB): 64 Max Storage (GB): 500 **Paso 2.2: Configurar Límites de Recursos** Para cada pool, ajustar los límites según tus necesidades: 1. Editar el pool 2. Configurar límites apropiados: .. code-block:: text Max VMs: 20 # Máximo de VMs por pool Max Cores: 64 # Máximo de cores totales Max Memory (GB): 128 # Máximo de memoria en GB Max Storage (GB): 1000 # Máximo de almacenamiento 3. Guardar cambios .. note:: **Sincronización Bidireccional**: Los cambios en pools se sincronizan automáticamente con Proxmox mediante signals de Django. **Resultado Esperado**: - Pools configurados con límites apropiados - Sincronización bidireccional funcionando - Recursos organizados por pool Fase 3: Configuración de Permisos de Storage -------------------------------------------- **Objetivo**: Definir qué storages puede usar cada pool/usuario **Paso 3.1: Sincronizar Storages desde Proxmox** 1. Navegar a **VMS > Storage Permissions** 2. Hacer clic en **"Sync Storages from Proxmox"** 3. Verificar que aparezcan todos los storages disponibles **Paso 3.2: Configurar Permisos por Pool** Para cada pool, definir qué storages puede usar: 1. Hacer clic en **"Add Storage Permission"** 2. Configurar permisos: .. code-block:: text Storage Name: local-lvm Storage Type: lvm Pool: [Seleccionar pool específico] User: [Dejar vacío para aplicar a todo el pool] Is Allowed: True 3. Repetir para cada storage que el pool deba usar **Ejemplo de Configuración**: .. code-block:: text Pool "desarrollo": - local-lvm: ✅ Permitido - local: ✅ Permitido - nfs-storage: ❌ Denegado Pool "producción": - local-lvm: ✅ Permitido - nfs-storage: ✅ Permitido - local: ❌ Denegado **Resultado Esperado**: - Storages sincronizados desde Proxmox - Permisos configurados por pool - Control granular de acceso a almacenamiento Fase 4: Configuración de Redes (VLANs y IP Pools) -------------------------------------------------- **Objetivo**: Configurar segmentación de red y asignación de IPs **Paso 4.1: Crear VLANs** 1. Navegar a **VMS > VLANs** 2. Hacer clic en **"Add VLAN"** 3. Configurar VLAN: .. code-block:: text VLAN ID: 100 Name: Red Desarrollo Description: VLAN para VMs de desarrollo 4. Repetir para cada VLAN necesaria **Paso 4.2: Crear Pools de IP** 1. Navegar a **VMS > IP Pools** 2. Hacer clic en **"Add IP Pool"** 3. Configurar pool de IP: .. code-block:: text Name: Pool Desarrollo Network: 192.168.100.0/24 Gateway: 192.168.100.1 VLAN: Red Desarrollo Pool: [Seleccionar pool de recursos] DNS Servers: 8.8.8.8,8.8.4.4 4. Repetir para cada pool de IP necesario **Ejemplo de Configuración de Red**: .. code-block:: text VLAN 100 - Desarrollo: - Pool IP: 192.168.100.0/24 - Gateway: 192.168.100.1 - Asignado a: Pool "desarrollo" VLAN 200 - Producción: - Pool IP: 192.168.200.0/24 - Gateway: 192.168.200.1 - Asignado a: Pool "producción" **Resultado Esperado**: - VLANs configuradas - Pools de IP creados y asignados - Segmentación de red definida Fase 5: Gestión de Usuarios y Asignación a Pools ------------------------------------------------ **Objetivo**: Crear usuarios y asignarlos a pools con roles apropiados **Paso 5.1: Crear Usuarios** 1. Navegar a **Authentication and Authorization > Users** 2. Hacer clic en **"Add User"** 3. Configurar usuario: .. code-block:: text Username: juan.desarrollo Email: juan@empresa.com First Name: Juan Last Name: Pérez Is Active: True Is Staff: False Is Superuser: False 4. Establecer contraseña segura 5. Guardar usuario **Paso 5.2: Asignar Usuarios a Pools** 1. Navegar a **VMS > Pool Memberships** 2. Hacer clic en **"Add Pool Membership"** 3. Configurar membresía: .. code-block:: text User: juan.desarrollo Pool: desarrollo Role: user **Roles Disponibles**: * **Owner**: Control total del pool * **Admin**: Administración de VMs y configuración * **User**: Creación y gestión de VMs * **Read Only**: Solo visualización .. important:: **Sincronización Automática con Proxmox**: Al asignar un usuario a un pool: * Se crea automáticamente el usuario en Proxmox * Se asignan permisos ACL apropiados * Se configura acceso al pool específico **Ejemplo de Asignaciones**: .. code-block:: text Usuario: juan.desarrollo - Pool: desarrollo (Role: user) - Pool: testing (Role: admin) Usuario: maria.produccion - Pool: producción (Role: owner) **Resultado Esperado**: - Usuarios creados en NoxPanel - Usuarios sincronizados con Proxmox - Permisos asignados correctamente - Acceso controlado por roles Fase 6: Verificación y Pruebas ------------------------------- **Objetivo**: Verificar que todo el sistema funciona correctamente **Paso 6.1: Verificar Sincronización** 1. En el **Admin Panel**, verificar: * **Proxmox Nodes**: Estado "Conectado" * **Pools**: Todos los pools visibles * **VMs**: VMs existentes sincronizadas * **Storage Permissions**: Permisos configurados * **IP Pools**: Pools de IP creados **Paso 6.2: Probar Acceso de Usuario** 1. Cerrar sesión como admin 2. Iniciar sesión con un usuario normal 3. Verificar que: * Solo ve los pools asignados * Puede acceder al dashboard * Ve las VMs de sus pools * Tiene acceso a las funciones según su rol **Paso 6.3: Probar Creación de VM** 1. Como usuario normal, intentar crear una VM: * Seleccionar pool asignado * Elegir storage permitido * Seleccionar IP del pool asignado * Configurar recursos dentro de los límites 2. Verificar que la VM se crea correctamente 3. Verificar que aparece en Proxmox 4. Verificar que la IP se asigna correctamente **Resultado Esperado**: - Sistema completamente funcional - Usuarios pueden crear VMs - Recursos y permisos funcionando - Sincronización bidireccional operativa Comandos de Verificación ------------------------ **Desde Django Shell**: .. code-block:: python # Conectar a shell python manage.py shell # Verificar nodos from vms.models import ProxmoxNode nodes = ProxmoxNode.objects.filter(is_active=True) for node in nodes: print(f"Node: {node.name} - Status: {node.last_connection_status}") # Verificar pools from vms.models import Pool pools = Pool.objects.all() for pool in pools: print(f"Pool: {pool.name} - VMs: {pool.current_vms}") # Verificar permisos de storage from vms.models import StoragePermission permissions = StoragePermission.objects.filter(is_allowed=True) for perm in permissions: print(f"Storage: {perm.storage_name} - Pool: {perm.pool}") **Desde Admin Interface**: * **Test Connections**: Probar conexiones de nodos * **Sync Pools**: Sincronizar pools manualmente * **Sync Storage**: Sincronizar permisos de storage * **Clear Cache**: Limpiar caché del sistema Troubleshooting Común --------------------- **Problema**: Nodo no se conecta **Solución**: - Verificar credenciales - Comprobar conectividad de red - Revisar configuración SSL **Problema**: Pools no se sincronizan **Solución**: - Verificar permisos de API en Proxmox - Revisar logs de Proxmox - Comprobar configuración de pools **Problema**: Usuario no puede crear VMs **Solución**: - Verificar membresía en pool - Comprobar permisos de storage - Revisar límites de recursos **Problema**: IPs no se asignan **Solución**: - Verificar configuración de IP pools - Comprobar asignación de VLAN - Revisar configuración de red Próximos Pasos -------------- Una vez completado este flujo: * :doc:`Configurar monitoreo y alertas ` * :doc:`Implementar backups automáticos ` * :doc:`Configurar alta disponibilidad ` * :doc:`Optimizar rendimiento ` .. note:: **IMPORTANTE**: Este flujo debe completarse antes de permitir a usuarios finales crear VMs. Un sistema mal configurado puede resultar en problemas de seguridad, recursos o funcionalidad.