# VirtManager (por C.Rey) Una API REST y interfaz web para gestionar máquinas virtuales en Ubuntu usando FastAPI, libvirt y noVNC para consola web. ## Características - **Gestión completa de VMs**: Crear, listar, iniciar, detener y eliminar máquinas virtuales. - **Configuración de arranque**: Cambiar el orden de arranque de las VMs (disco duro, CD-ROM, etc.). - **Subida de ISOs**: Sube imágenes ISO directamente desde la interfaz web para usar en la creación de VMs. - **Gestión de ISOs**: Lista y elimina ISOs subidas. - **Snapshots de VMs**: Crear, listar y eliminar snapshots para backup y recuperación. - **Interfaz Responsive**: Diseño moderno con sidebar que se adapta a dispositivos móviles, tablets y escritorio. - **Descarga de configuración**: Exporta la configuración XML de cualquier VM para backup o transferencia. ## Instalación ### Prerrequisitos del Sistema Asegúrate de que libvirt esté instalado y configurado: ```bash sudo apt update sudo apt install -y libvirt-daemon-system libvirt-dev pkg-config python3-libvirt novnc websockify sudo apt install python3-pip python3.12-venv ``` Crea el directorio para ISOs (opcional, se crea automáticamente): ```bash sudo mkdir -p /var/lib/libvirt/images/isos ``` ### Instalación del Proyecto 1. Clona o descarga el proyecto en `/home/creylopez/virtmanager` (o ajusta las rutas según corresponda). 2. Crea y activa un entorno virtual: ```bash python3 -m venv venv source venv/bin/activate pip install libvirt-python ``` 3. Instala las dependencias de Python: ```bash pip install -r requirements.txt ``` 4. Configura permisos para libvirt (opcional, si no usas sudo): ```bash sudo usermod -a -G libvirt $USER # Reinicia la sesión para aplicar cambios ``` 5. **Configurar permisos para crear discos virtuales:** VirtManager necesita crear discos en `/var/lib/libvirt/images/` con permisos correctos. Para esto, configura el script helper con permisos sudo: ```bash # El script ya está en el proyecto chmod +x create_disk.sh # Configura sudoers para permitir crear discos sin contraseña echo "creylopez ALL=(ALL) NOPASSWD: /home/creylopez/virtmanager/create_disk.sh" | sudo tee /etc/sudoers.d/virtmanager # Verifica que la configuración sea correcta sudo visudo -c -f /etc/sudoers.d/virtmanager ``` ### Configuración del Servicio Systemd (Auto-inicio) Para que VirtManager se inicie automáticamente con el sistema: 1. Crea el archivo de servicio: ```bash sudo tee /etc/systemd/system/virtmanager.service > /dev/null <1024px)**: Vista completa con sidebar de 300px - **Tablet (768px-1024px)**: Sidebar más compacto, fuentes ajustadas - **Móvil (<768px)**: Sidebar colapsable con botón hamburguesa, optimizado para toques - **Teléfonos pequeños (<480px)**: Ajuste máximo de espacios y tamaños de fuente ### Descargar Configuración XML Cada VM tiene un botón "Descargar XML" en la sección de acciones que permite: - Exportar la configuración completa en formato XML - Crear backups de la configuración - Transferir VMs a otros servidores con la misma configuración ## Contribución Siéntete libre de contribuir con mejoras o reportar issues. ## Licencia Este proyecto es de código abierto. Ajusta según tus necesidades. Vale