Add audit and reports page, and a change journal

ProxMenux modifies the host: it rewrites configuration files, installs packages, enables services. Until now nobody could say afterwards what had changed, and showing the script does not answer that question — a four-hundred-line function may alter two values, and the reader has no way to know which two. This adds the two halves of an answer.

The change journal records what ProxMenux does as it does it. Eleven bash primitives capture the previous state, apply the change and record it in the same step, writing to a spool that the Monitor reads back. One hundred and thirteen functions across twenty-five scripts are instrumented, covering post-install, shared storage, security tooling, container conversions, disk operations and the PVE 8 to 9 upgrade path. The page shows the difference — rotate 7 becoming rotate 14 — and never the script. Restore and backup scripts are deliberately left out: a restore puts the host back to a state some other script already recorded.

The Audit and reports page answers the other half: what state is this host in, regardless of who put it there. Forty-three checks across seven areas read the host and classify each result as critical, warning, observation, conformant, unverified or not applicable, with the evidence they read attached to each one. A declared policy lets the reader say what this particular host is expected to do — which guests must have a backup, which storages are essential — so the report judges the host against its own intent rather than a generic template. An inventory records the hardware, network and guest topology behind those readings, a comparison shows what moved between two runs, and six report profiles produce a printable document scoped to what the reader needs. Everything is available in the eight supported languages.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
MacRimi
2026-09-08 21:06:04 +02:00
co-authored by Claude Opus 5
parent ae75508eff
commit da8a480eff
102 changed files with 24118 additions and 1403 deletions
+43 -43
View File
@@ -347,7 +347,7 @@
"Backup created:": "Copia de seguridad creada:",
"Backup declares unused NICs that are not on this host:": "La copia de seguridad declara las NIC no utilizadas que no están en este host:",
"Backup destination is inside the backup": "el destino de la copia de seguridad está dentro de la copia de seguridad",
"Backup failed. See log:": "Error en la copia de seguridad.Ver registro:",
"Backup failed. See log:": "Error en la copia de seguridad. Ver registro:",
"Backup file appears corrupted, will reinstall packages": "El archivo de copia de seguridad parece dañado, reinstalará los paquetes",
"Backup host configuration": "Copia de seguridad de la configuración del host",
"Backup includes /etc/zfs/zpool.cache. Restore it (same host detected)?": "La copia de seguridad incluye /etc/zfs/zpool.cache.¿Restaurarlo (se detectó el mismo host)?",
@@ -367,7 +367,7 @@
"Backup to local archive (.tar.zst)": "Copia de seguridad en archivo local (.tar.zst)",
"Backup:": "Copia de seguridad:",
"Backups already on PBS were encrypted with the current key — downloading them will fail unless you first Download the current keyfile to keep a copy.": "Las copias de seguridad que ya están en PBS se cifraron con la clave actual; la descarga fallará a menos que primero descargue el archivo de clave actual para conservar una copia.",
"Backups already stored on PBS were encrypted with the current keyfile. After this action:": "las copias de seguridad ya almacenadas en PBS se cifraron con el archivo de claves actual.Después de esta acción:",
"Backups already stored on PBS were encrypted with the current keyfile. After this action:": "las copias de seguridad ya almacenadas en PBS se cifraron con el archivo de claves actual. Después de esta acción:",
"Bandwidth limit configured": "Límite de ancho de banda configurado",
"Bandwidth test (iperf3)": "Prueba de ancho de banda (iperf3)",
"Bandwidth test completed successfully": "La prueba de ancho de banda se completó con éxito",
@@ -456,7 +456,7 @@
"Cannot proceed with invalid export path.": "No se puede continuar con una ruta de exportación no válida.",
"Cannot proceed with invalid share name.": "No se puede continuar con un nombre compartido no válido.",
"Cannot reach Proxmox repositories": "No se puede acceder a los repositorios de Proxmox",
"Cannot reach download.proxmox.com. Check network, proxy or DNS.": "No se puede acceder a download.proxmox.com.Verifique la red, proxy o DNS.",
"Cannot reach download.proxmox.com. Check network, proxy or DNS.": "No se puede acceder a download.proxmox.com. Verifique la red, proxy o DNS.",
"Cannot reach portal:": "No se puede acceder al portal:",
"Cannot reach server": "No puede alcanzar el servidor",
"Cannot validate credentials - no shares available for testing.": "No se pueden validar las credenciales: no hay recursos compartidos disponibles para realizar pruebas.",
@@ -851,8 +851,8 @@
"Copy that file offsite yourself, or download it from the Monitor.": "copie ese archivo fuera del sitio usted mismo o descárguelo del Monitor.",
"Copy the correct keyfile to this host and rerun Restore — or pick an unencrypted backup.": "copie el archivo de claves correcto en este host y vuelva a ejecutar Restaurar, o elija una copia de seguridad sin cifrar.",
"Copy the keyfile to a path for offsite backup": "copie el archivo de claves a una ruta para realizar una copia de seguridad externa",
"Copy your PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "primero copie su archivo de clave PBS en este host (a través de scp, USB, sftp, etc.) e ingrese su ruta absoluta a continuación.El archivo se copiará a",
"Copy your existing PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "primero copie su archivo de claves PBS existente en este host (a través de scp, USB, sftp, etc.) e ingrese su ruta absoluta a continuación.El archivo se copiará a",
"Copy your PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "primero copie su archivo de clave PBS en este host (a través de scp, USB, sftp, etc.) e ingrese su ruta absoluta a continuación. El archivo se copiará a",
"Copy your existing PBS keyfile onto this host first (via scp, USB, sftp, etc.) and enter its absolute path below. The file will be copied to": "primero copie su archivo de claves PBS existente en este host (a través de scp, USB, sftp, etc.) e ingrese su ruta absoluta a continuación. El archivo se copiará a",
"Copying installer to container": "Copiando el instalador al contenedor",
"Copying sources to": "Copiar fuentes a",
"Coral APT repository ready.": "Repositorio Coral APT listo.",
@@ -886,9 +886,9 @@
"Could not change VM virtual display to vga: std": "No se pudo cambiar la pantalla virtual de VM a vga: estándar",
"Could not clone any gasket-driver repository. Check your internet connection and": "No se pudo clonar ningún repositorio de gasket-driver. Compruebe la conexión a Internet y",
"Could not configure IOMMU kernel parameters automatically. Configure manually and reboot.": "No se pudieron configurar los parámetros del kernel IOMMU automáticamente. Configure manualmente y reinicie.",
"Could not copy the PVE keyfile into place. Check permissions on:": "No se pudo copiar el archivo de claves PVE en su lugar.Verifique los permisos en:",
"Could not copy the PVE keyfile into place. Check permissions on:": "No se pudo copiar el archivo de claves PVE en su lugar. Verifique los permisos en:",
"Could not copy the keyfile into place.": "no se pudo copiar el archivo de claves en su lugar.",
"Could not copy the keyfile into place. Check permissions on:": "no se pudo copiar el archivo de claves en su lugar.Verifique los permisos en:",
"Could not copy the keyfile into place. Check permissions on:": "no se pudo copiar el archivo de claves en su lugar. Verifique los permisos en:",
"Could not create converter directory:": "No se pudo crear el directorio del convertidor:",
"Could not create destination directory:": "No se pudo crear el directorio de destino:",
"Could not create or access directory:": "No se pudo crear o acceder al directorio:",
@@ -898,7 +898,7 @@
"Could not detect the CIFS mount for this directory. Try accessing it manually.": "No se pudo detectar el montaje CIFS para este directorio. Intente acceder manualmente.",
"Could not determine a valid ISO storage directory.": "No se pudo determinar un directorio de almacenamiento ISO válido.",
"Could not determine disk path for:": "No se pudo determinar la ruta del disco para:",
"Could not determine filesystem signature types. Aborting.": "No se pudieron determinar los tipos de firma del sistema de archivos.Abortando.",
"Could not determine filesystem signature types. Aborting.": "No se pudieron determinar los tipos de firma del sistema de archivos. Se cancela.",
"Could not determine the IOMMU group for the selected GPU.": "No se pudo determinar el grupo IOMMU para la GPU seleccionada.",
"Could not download recovery blob from PBS.": "No se pudo descargar el blob de recuperación de PBS.",
"Could not download the installer.": "No se pudo descargar el instalador.",
@@ -920,9 +920,9 @@
"Could not mount": "No se pudo montar",
"Could not mount ISO on device": "No se pudo montar ISO en el dispositivo",
"Could not parse OVF file, or no disk image references found.": "No se pudo analizar el archivo OVF o no se encontraron referencias de imágenes de disco.",
"Could not prepare on-boot restore service. Nothing new was scheduled.": "No se pudo preparar el servicio de restauración al arrancar.No se programó nada nuevo.",
"Could not publish pending restore. Previous pending restore was kept.": "No se pudo publicar pendiente de restauración.Se mantuvo la restauración pendiente anterior.",
"Could not push the key. Check the password and that": "No se pudo presionar la tecla.Verifique la contraseña y eso",
"Could not prepare on-boot restore service. Nothing new was scheduled.": "No se pudo preparar el servicio de restauración en el arranque. No se ha programado nada nuevo.",
"Could not publish pending restore. Previous pending restore was kept.": "No se pudo publicar la restauración pendiente. Se mantiene la anterior.",
"Could not push the key. Check the password and that": "No se pudo presionar la tecla. Verifique la contraseña y eso",
"Could not read SMART data from": "No se pudieron leer los datos SMART de",
"Could not read VM configuration.": "No se pudo leer la configuración de la VM.",
"Could not remount automatically. Try manually or check credentials.": "No se pudo volver a montar automáticamente. Pruebe manualmente o verifique las credenciales.",
@@ -934,8 +934,8 @@
"Could not run NVIDIA patch script. Please verify repository and driver version.": "No se pudo ejecutar el script de parche de NVIDIA. Verifique el repositorio y la versión del controlador.",
"Could not set VM virtual display to vga: std": "No se pudo configurar la pantalla virtual de VM en vga: estándar",
"Could not set boot order for": "No se pudo establecer el orden de inicio para",
"Could not stage pending restore path:": "No se pudo preparar la ruta de restauración pendiente:",
"Could not stage pending restore. Nothing new was scheduled.": "No se pudo realizar la restauración pendiente.No se programó nada nuevo.",
"Could not stage pending restore path:": "No se pudo preparar la ruta de la restauración pendiente:",
"Could not stage pending restore. Nothing new was scheduled.": "No se pudo preparar la restauración pendiente. No se ha programado nada nuevo.",
"Could not stop LXC": "No se pudo detener LXC",
"Could not unload nouveau module (may be in use). The blacklist will take effect after reboot. Installation will continue but a reboot will be required.": "No se pudo descargar el módulo nouveau (puede estar en uso). La lista negra entrará en vigor después del reinicio. La instalación continuará pero será necesario reiniciar.",
"Could not unmount": "No se pudo desmontar",
@@ -1091,7 +1091,7 @@
"Deactivate ProxMenux Monitor": "Desactivar ProxMenux Monitor",
"Debian repositories missing; creating default source file": "Faltan repositorios de Debian; creando un archivo fuente predeterminado",
"Decompress backup manually": "Descomprimir la copia de seguridad manualmente",
"Decryption failed. The passphrase may be wrong, or the blob is corrupt. Try again?": "Falló el descifrado.La frase de contraseña puede ser incorrecta o el blob está dañado.¿Intentar otra vez?",
"Decryption failed. The passphrase may be wrong, or the blob is corrupt. Try again?": "Falló el descifrado. La frase de contraseña puede ser incorrecta o el blob está dañado.¿Intentar otra vez?",
"Default ACLs applied for group inheritance.": "ACL predeterminadas aplicadas para la herencia de grupo.",
"Default Credentials": "Credenciales predeterminadas",
"Default Gateway": "Puerta de enlace predeterminada",
@@ -1171,7 +1171,7 @@
"Device already present in target VM — existing hostpci entry reused": "Dispositivo ya presente en la máquina virtual de destino: se reutiliza la entrada hostpci existente",
"Device assignments will be written now and become active after reboot.": "Las asignaciones de dispositivos se escribirán ahora y se activarán después del reinicio.",
"Device hostname": "Nombre de host del dispositivo",
"Device path mismatch. Format cancelled.": "la ruta del dispositivo no coincide.Formato cancelado.",
"Device path mismatch. Format cancelled.": "la ruta del dispositivo no coincide. Formato cancelado.",
"Device:": "Dispositivo:",
"Devices to add to VM": "Dispositivos para agregar a VM",
"Diff: current system vs backup (--- system +++ backup)": "Diferencia: sistema actual vs copia de seguridad (--- sistema +++ copia de seguridad)",
@@ -1628,7 +1628,7 @@
"Failed to create directory on host:": "No se pudo crear el directorio en el host:",
"Failed to create directory:": "No se pudo crear el directorio:",
"Failed to create disk": "No se pudo crear el disco",
"Failed to create encryption key. Backup cancelled — fix the underlying issue and retry.": "no se pudo crear la clave de cifrado.Copia de seguridad cancelada: solucione el problema subyacente y vuelva a intentarlo.",
"Failed to create encryption key. Backup cancelled — fix the underlying issue and retry.": "no se pudo crear la clave de cifrado. Copia de seguridad cancelada: solucione el problema subyacente y vuelva a intentarlo.",
"Failed to create group:": "No se pudo crear el grupo:",
"Failed to create mount point.": "No se pudo crear el punto de montaje.",
"Failed to create mount point:": "No se pudo crear el punto de montaje:",
@@ -1910,7 +1910,7 @@
"Git installed": "git instalado",
"Global settings and SSH jail configured": "Configuración global y cárcel SSH configurada",
"Go to \"Manage custom paths\" and remove your custom entry that includes the destination": "vaya a \"Administrar rutas personalizadas\" y elimine la entrada personalizada que incluye el destino.",
"Google only ships an official libedgetpu APT repository for Debian/Ubuntu. Hardware passthrough is already written to": "Google solo envía un repositorio APT oficial de libedgetpu para Debian/Ubuntu.La transferencia de hardware ya está escrita en",
"Google only ships an official libedgetpu APT repository for Debian/Ubuntu. Hardware passthrough is already written to": "Google solo envía un repositorio APT oficial de libedgetpu para Debian/Ubuntu. La transferencia de hardware ya está escrita en",
"Graceful shutdown timed out.": "Se agotó el tiempo de cierre elegante.",
"Group": "Grupo",
"Group 'sharedfiles' already exists inside the CT": "El grupo 'archivos compartidos' ya existe dentro del CT",
@@ -2354,7 +2354,7 @@
"Kernel panic configuration removed": "Se eliminó la configuración de pánico del kernel",
"Kernel panic configuration updated and applied": "Configuración de pánico del kernel actualizada y aplicada",
"Kernel, modules and boot config": "Kernel, módulos y configuración de arranque",
"Kernel/boot-tied files (boot config, /etc/systemd/system, initramfs config, apt sources, ZFS state, ...) are NOT copied verbatim to keep the target's boot safe. The operator's own tuning inside them (IOMMU cmdline, VFIO IDs, custom quirks, GRUB timeout, ...) is merged into the target's fresh copies automatically via kernel-agnostic merge.": "Los archivos vinculados al kernel/arranque (configuración de arranque, /etc/systemd/system, configuración initramfs, fuentes apt, estado de ZFS, ...) NO se copian palabra por palabra para mantener seguro el arranque del destino.El propio ajuste del operador dentro de ellos (línea cmd de IOMMU, ID de VFIO, peculiaridades personalizadas, tiempo de espera de GRUB, ...) se fusiona automáticamente con las copias nuevas del objetivo mediante una fusión independiente del kernel.",
"Kernel/boot-tied files (boot config, /etc/systemd/system, initramfs config, apt sources, ZFS state, ...) are NOT copied verbatim to keep the target's boot safe. The operator's own tuning inside them (IOMMU cmdline, VFIO IDs, custom quirks, GRUB timeout, ...) is merged into the target's fresh copies automatically via kernel-agnostic merge.": "Los archivos vinculados al kernel/arranque (configuración de arranque, /etc/systemd/system, configuración initramfs, fuentes apt, estado de ZFS, ...) NO se copian palabra por palabra para mantener seguro el arranque del destino. El propio ajuste del operador dentro de ellos (línea cmd de IOMMU, ID de VFIO, peculiaridades personalizadas, tiempo de espera de GRUB, ...) se fusiona automáticamente con las copias nuevas del objetivo mediante una fusión independiente del kernel.",
"Keyfile copied": "archivo clave copiado",
"Keyfile copied to:": "archivo clave copiado a:",
"Keyfile passphrase": "frase de contraseña del archivo clave",
@@ -2860,7 +2860,7 @@
"No Shares Found": "No se encontraron acciones",
"No Storage Found": "No se encontró almacenamiento",
"No USB drives detected. Enter the mountpoint path manually:": "No se detectaron unidades USB.Ingrese la ruta del punto de montaje manualmente:",
"No USB drives mounted by ProxMenux yet. Mount one first to use it as a target.": "Aún no hay unidades USB montadas por ProxMenux.Monta uno primero para usarlo como objetivo.",
"No USB drives mounted by ProxMenux yet. Mount one first to use it as a target.": "Aún no hay unidades USB montadas por ProxMenux. Monta uno primero para usarlo como objetivo.",
"No UUP folder found.": "No se encontró ninguna carpeta UUP.",
"No VM was selected.": "No se seleccionó ninguna máquina virtual.",
"No VMID defined. Cannot apply guest agent config.": "No hay VMID definido. No se puede aplicar la configuración del agente invitado.",
@@ -2922,7 +2922,7 @@
"No duplicate repositories found": "No se encontraron repositorios duplicados",
"No eligible Controller/NVMe devices remain after SR-IOV filtering. Skipping.": "No quedan dispositivos de controlador/NVMe elegibles después del filtrado SR-IOV. Salto a la comba.",
"No eligible controllers remain after SR-IOV filtering.": "No quedan controladores elegibles después del filtrado SR-IOV.",
"No encryption key is stored on this host. Choose how to set one up:": "No se almacena ninguna clave de cifrado en este host.Elija cómo configurar uno:",
"No encryption key is stored on this host. Choose how to set one up:": "No se almacena ninguna clave de cifrado en este host. Elija cómo configurar uno:",
"No exportable VM disks were found (CD-ROM/cloud-init are excluded).": "No se encontraron discos de VM exportables (se excluyen CD-ROM/cloud-init).",
"No exportable disks": "No hay discos exportables",
"No exports configured.": "No hay exportaciones configuradas.",
@@ -3203,10 +3203,10 @@
"Paths:": "Rutas:",
"Pending restore ID:": "ID de restauración pendiente:",
"Pending restore dir:": "Directorio de restauración pendiente:",
"Pending restore prepared. A reboot is required to complete it.": "Restauración pendiente preparada.Es necesario reiniciar para completarlo.",
"Pending restore prepared. A reboot is required to complete it.": "Restauración pendiente preparada. Es necesario reiniciar para completarlo.",
"Pending restore prepared. It will run automatically at next boot.": "Pendiente de restauración preparada. Se ejecutará automáticamente en el próximo arranque.",
"Pending restore script not found or not executable:": "Script de restauración pendiente no encontrado o no ejecutable:",
"Pending restore source is missing:": "Falta la fuente de restauración pendiente:",
"Pending restore source is missing:": "Falta el origen de la restauración pendiente:",
"Pending upgrades detected on a clustered node.\n\nTo proceed safely, update this node to the latest Proxmox VE 8.x before switching to Trixie/PVE 9.\n\nSelect Yes for AUTOMATIC upgrade (recommended), or No for MANUAL instructions.": "Actualizaciones pendientes detectadas en un nodo agrupado.\n\nPara proceder de forma segura, actualice este nodo a la última versión de Proxmox VE 8.x antes de cambiar a Trixie/PVE 9.\n\nSeleccione Sí para actualización AUTOMÁTICA (recomendado) o No para instrucciones MANUALES.",
"Pending upgrades detected on a clustered node. Perform AUTOMATIC upgrade now? (y = automatic, n = manual):": "Actualizaciones pendientes detectadas en un nodo agrupado. ¿Realizar actualización AUTOMÁTICA ahora? (y = automático, n = manual):",
"Per official known issues; ensures proper boot after upgrade": "Según problemas oficiales conocidos; garantiza un arranque adecuado después de la actualización",
@@ -3353,7 +3353,7 @@
"ProxMenux logo applied": "Logotipo de ProxMenux aplicado",
"ProxMenux only acts as a launcher — once the script starts, control leaves ProxMenux.": "ProxMenux solo actúa como Lanzador del script.",
"ProxMenux saved it locally at:": "ProxMenux lo guardó localmente en:",
"ProxMenux-managed .link file(s). User-authored .link files were left in place.": "archivo(s) .link administrado por ProxMenux.Los archivos .link creados por el usuario se dejaron en su lugar.",
"ProxMenux-managed .link file(s). User-authored .link files were left in place.": "archivo(s) .link administrado por ProxMenux. Los archivos .link creados por el usuario se dejaron en su lugar.",
"Proxmology logo applied": "Logotipo de Proxmología aplicado.",
"Proxmox 9 system update allready": "Actualización del sistema Proxmox 9 ya",
"Proxmox APT repositories configured": "Repositorios Proxmox APT configurados",
@@ -4338,9 +4338,9 @@
"The active kernel driver is not vfio-pci, but the entry will rebind the GPU to vfio-pci on the next reboot, breaking the LXC passthrough about to be configured.": "El controlador del kernel activo no es vfio-pci, pero la entrada volverá a vincular la GPU a vfio-pci en el próximo reinicio, interrumpiendo el paso a través de LXC que está a punto de configurarse.",
"The active kernel driver is not vfio-pci, but the entry will rebind the GPU to vfio-pci on the next reboot.": "el controlador del kernel activo no es vfio-pci, pero la entrada volverá a vincular la GPU a vfio-pci en el próximo reinicio.",
"The archive could not be extracted.": "No se pudo extraer el archivo.",
"The archive destination directory is INSIDE one of the paths you are about to back up. Writing the archive there would copy the backup into itself — producing a corrupted archive, or growing without limit until the disk fills up.": "El directorio de destino del archivo está DENTRO de una de las rutas de las que está a punto de realizar una copia de seguridad.Escribir el archivo allí copiaría la copia de seguridad en sí mismo, lo que produciría un archivo corrupto o crecería sin límite hasta que el disco se llenara.",
"The backup metadata was compared against this host. The following items will be SKIPPED to keep the boot safe:": "los metadatos de la copia de seguridad se compararon con este host.Se SALTARÁN los siguientes elementos para mantener el arranque seguro:",
"The backup was taken on a different PVE or kernel major.minor. These paths will be SKIPPED to keep the boot safe:": "La copia de seguridad se realizó en un PVE o kernel mayor.menor diferente.Estas rutas se SALTARÁN para mantener el arranque seguro:",
"The archive destination directory is INSIDE one of the paths you are about to back up. Writing the archive there would copy the backup into itself — producing a corrupted archive, or growing without limit until the disk fills up.": "El directorio de destino del archivo está DENTRO de una de las rutas de las que está a punto de realizar una copia de seguridad. Escribir el archivo allí copiaría la copia de seguridad en sí mismo, lo que produciría un archivo corrupto o crecería sin límite hasta que el disco se llenara.",
"The backup metadata was compared against this host. The following items will be SKIPPED to keep the boot safe:": "los metadatos de la copia de seguridad se compararon con este host. Se SALTARÁN los siguientes elementos para mantener el arranque seguro:",
"The backup was taken on a different PVE or kernel major.minor. These paths will be SKIPPED to keep the boot safe:": "La copia de seguridad se realizó en un PVE o kernel mayor.menor diferente. Estas rutas se SALTARÁN para mantener el arranque seguro:",
"The compatibility check raised failures that may break the system after restore.": "La verificación de compatibilidad generó fallas que pueden dañar el sistema después de la restauración.",
"The container is currently stopped. Do you want to start it now to install the package?": "El contenedor se encuentra actualmente detenido. ¿Quieres iniciarlo ahora para instalar el paquete?",
"The container should now start as privileged": "El contenedor ahora debería comenzar como privilegiado.",
@@ -4353,12 +4353,12 @@
"The filesystem": "El sistema de archivos",
"The following DKMS-managed drivers will now be rebuilt against it so they keep working after reboot:": "Los siguientes controladores administrados por DKMS ahora se reconstruirán para que sigan funcionando después del reinicio:",
"The following LXC containers have NVIDIA passthrough configured:": "Los siguientes contenedores LXC tienen configurado el paso a través de NVIDIA:",
"The following backup paths are kernel-tied and are excluded from the picker to keep the target's boot safe. The operator's own tuning inside these paths (IOMMU cmdline, VFIO IDs, custom quirks) is merged back automatically via kernel-agnostic merge:": "las siguientes rutas de respaldo están vinculadas al kernel y se excluyen del selector para mantener seguro el arranque del destino.El propio ajuste del operador dentro de estas rutas (línea cmd de IOMMU, ID de VFIO, peculiaridades personalizadas) se fusiona automáticamente mediante una fusión independiente del kernel:",
"The following backup paths are kernel-tied and are excluded from the picker to keep the target's boot safe. The operator's own tuning inside these paths (IOMMU cmdline, VFIO IDs, custom quirks) is merged back automatically via kernel-agnostic merge:": "las siguientes rutas de respaldo están vinculadas al kernel y se excluyen del selector para mantener seguro el arranque del destino. El propio ajuste del operador dentro de estas rutas (línea cmd de IOMMU, ID de VFIO, peculiaridades personalizadas) se fusiona automáticamente mediante una fusión independiente del kernel:",
"The following changes will be applied": "Se aplicarán los siguientes cambios.",
"The following devices were excluded because they are part of an SR-IOV configuration:": "Se excluyeron los siguientes dispositivos porque forman parte de una configuración SR-IOV:",
"The following devices were excluded from Controller/NVMe passthrough because they are part of an SR-IOV configuration:": "Los siguientes dispositivos se excluyeron del paso directo de Controlador/NVMe porque forman parte de una configuración SR-IOV:",
"The following drivers could not be rebuilt for the new kernel — run their installer manually after reboot:": "Los siguientes controladores no se pudieron reconstruir para el nuevo kernel; ejecute su instalador manualmente después de reiniciar:",
"The following entries exist on the host but were NOT in the backup. To make the host EXACTLY match the backup state, they must be removed:": "Las siguientes entradas existen en el host pero NO estaban en la copia de seguridad.Para que el host coincida EXACTAMENTE con el estado de la copia de seguridad, se deben eliminar:",
"The following entries exist on the host but were NOT in the backup. To make the host EXACTLY match the backup state, they must be removed:": "Las siguientes entradas existen en el host pero NO estaban en la copia de seguridad. Para que el host coincida EXACTAMENTE con el estado de la copia de seguridad, se deben eliminar:",
"The following selected GPU(s) are currently in GPU -> VM mode (vfio-pci):": "Las siguientes GPU seleccionadas se encuentran actualmente en modo GPU -> VM (vfio-pci):",
"The following selected GPU(s) still have a VFIO passthrough entry in": "Las siguientes GPU seleccionadas todavía tienen una entrada de paso VFIO en",
"The following selected device(s) are Physical Functions with active Virtual Functions:": "Los siguientes dispositivos seleccionados son funciones físicas con funciones virtuales activas:",
@@ -4368,7 +4368,7 @@
"The host directory may not be accessible from an unprivileged container.": "Es posible que no se pueda acceder al directorio del host desde un contenedor sin privilegios.",
"The installation requires a server restart to apply changes. Do you want to restart now?": "La instalación requiere reiniciar el servidor para aplicar los cambios. ¿Quieres reiniciar ahora?",
"The installation/changes require a server restart to apply correctly. Do you want to reboot now?": "La instalación/los cambios requieren un reinicio del servidor para que se apliquen correctamente. ¿Quieres reiniciar ahora?",
"The local envelope is dropped and future backups do not upload anything. Uploaded envelopes already on PBS stay intact and remain recoverable with their original passphrase.": "El sobre local se elimina y las copias de seguridad futuras no cargan nada.Los sobres cargados que ya están en PBS permanecen intactos y recuperables con su frase de contraseña original.",
"The local envelope is dropped and future backups do not upload anything. Uploaded envelopes already on PBS stay intact and remain recoverable with their original passphrase.": "El sobre local se elimina y las copias de seguridad futuras no cargan nada. Los sobres cargados que ya están en PBS permanecen intactos y recuperables con su frase de contraseña original.",
"The long test runs directly on the disk hardware.": "La prueba larga se ejecuta directamente en el hardware del disco.",
"The new SSH key was installed and is now authorized on the server.\nKey file:": "La nueva clave SSH se instaló y ahora está autorizada en el servidor.\nArchivo clave:",
"The new SSH key was pushed to the LXC via 'pct exec' on": "La nueva clave SSH se envió al LXC a través de 'pct exec' en",
@@ -4470,7 +4470,7 @@
"This is unexpected since credentials were validated.": "Esto es inesperado ya que se validaron las credenciales.",
"This marks the container as unprivileged": "Esto marca el contenedor como sin privilegios.",
"This may be normal for a fresh installation": "Esto puede ser normal para una instalación nueva.",
"This may take a few minutes. Press OK to proceed.": "Esto puede tardar unos minutos.Presione Aceptar para continuar.",
"This may take a few minutes. Press OK to proceed.": "Esto puede tardar unos minutos. Presione Aceptar para continuar.",
"This may take a few seconds...": "Esto puede tardar unos segundos...",
"This may take several minutes...": "Esto puede tardar varios minutos...",
"This means Proxmox handles mount lifecycle natively (no manual /etc/fstab needed for NFS/CIFS host storages).": "Esto significa que Proxmox maneja el ciclo de vida del montaje de forma nativa (no se necesita /etc/fstab manual para almacenamientos de host NFS/CIFS).",
@@ -4492,8 +4492,8 @@
"This script must be run on a Proxmox host.": "Este script debe ejecutarse en un host Proxmox.",
"This script will apply the following optimizations and advanced adjustments to your Proxmox VE server": "Este script aplicará las siguientes optimizaciones y ajustes avanzados a su servidor Proxmox VE",
"This script will update your Proxmox VE system with advanced options:": "Este script actualizará su sistema Proxmox VE con opciones avanzadas:",
"This session is running in the Monitor terminal. Running it from here would cut the connection mid-install and leave the switch in a broken state.": "esta sesión se ejecuta en la terminal Monitor.Ejecutarlo desde aquí cortaría la conexión durante la instalación y dejaría el conmutador en un estado roto.",
"This session is running in the Monitor terminal. Updating from here would restart the Monitor service and cut the connection mid-install, leaving the update in a broken state.": "esta sesión se ejecuta en la terminal Monitor.La actualización desde aquí reiniciaría el servicio Monitor y cortaría la conexión durante la instalación, dejando la actualización en un estado roto.",
"This session is running in the Monitor terminal. Running it from here would cut the connection mid-install and leave the switch in a broken state.": "esta sesión se ejecuta en la terminal Monitor. Ejecutarlo desde aquí cortaría la conexión durante la instalación y dejaría el conmutador en un estado roto.",
"This session is running in the Monitor terminal. Updating from here would restart the Monitor service and cut the connection mid-install, leaving the update in a broken state.": "esta sesión se ejecuta en la terminal Monitor. La actualización desde aquí reiniciaría el servicio Monitor y cortaría la conexión durante la instalación, dejando la actualización en un estado roto.",
"This shows the storage type and disk identifier": "Esto muestra el tipo de almacenamiento y el identificador del disco.",
"This state has a high probability of VM startup/reset failures.": "Este estado tiene una alta probabilidad de que se produzcan errores de inicio/reinicio de la máquina virtual.",
"This state indicates a high risk of passthrough failure due to": "Este estado indica un alto riesgo de fallo de paso debido a",
@@ -4519,7 +4519,7 @@
"This will restart the network service and may cause a brief disconnection. Continue?": "Esto reiniciará el servicio de red y puede provocar una breve desconexión. ¿Continuar?",
"This will take time. Answer prompts carefully - see notes below.": "Esto llevará tiempo. Responda las indicaciones con atención; consulte las notas a continuación.",
"This will upgrade this node to Proxmox VE 9 on Debian Trixie.": "Esto actualizará este nodo a Proxmox VE 9 en Debian Trixie.",
"Tick the paths to include in this backup. Press \"Add custom path\" to add a folder or file of your own to the list.": "marque las rutas que desea incluir en esta copia de seguridad.Presione \"Agregar ruta personalizada\" para agregar una carpeta o archivo propio a la lista.",
"Tick the paths to include in this backup. Press \"Add custom path\" to add a folder or file of your own to the list.": "marque las rutas que desea incluir en esta copia de seguridad. Presione \"Agregar ruta personalizada\" para agregar una carpeta o archivo propio a la lista.",
"Tick the paths to remove (they will not be deleted from disk — only from this list):": "marque las rutas a eliminar (no se eliminarán del disco, solo de esta lista):",
"Time settings configured - Timezone:": "Configuración de hora configurada - Zona horaria:",
"Time synchronization reset to UTC": "Restablecimiento de la sincronización horaria a UTC",
@@ -4691,9 +4691,9 @@
"Upload an encrypted copy of the key to PBS so you can recover it on a reinstalled host with just a passphrase?": "¿Cargar una copia cifrada de la clave a PBS para poder recuperarla en un host reinstalado con solo una frase de contraseña?",
"Upload key to PBS?": "¿Subir clave a PBS?",
"Upload to PBS disabled.": "Subir a PBS deshabilitado.",
"Upload to PBS enabled. The envelope is uploaded on every encrypted backup.": "Subir a PBS habilitado.El sobre se carga en cada copia de seguridad cifrada.",
"Upload to PBS is currently: no. Pick an action:": "Subir a PBS es actualmente: no.Elige una acción:",
"Upload to PBS is currently: yes. Pick an action:": "Subir a PBS actualmente es: sí.Elige una acción:",
"Upload to PBS enabled. The envelope is uploaded on every encrypted backup.": "Subir a PBS habilitado. El sobre se carga en cada copia de seguridad cifrada.",
"Upload to PBS is currently: no. Pick an action:": "Subir a PBS es actualmente: no. Elige una acción:",
"Upload to PBS is currently: yes. Pick an action:": "Subir a PBS actualmente es: sí. Elige una acción:",
"Upload to PBS: enable, disable or rotate the recovery passphrase": "cargar en PBS: habilitar, deshabilitar o rotar la frase de contraseña de recuperación",
"Uptime and who is logged in": "Tiempo de actividad y quién ha iniciado sesión",
"Use \"Check test progress\" to see results.": "Utilice \"Verificar el progreso de la prueba\" para ver los resultados.",
@@ -4814,7 +4814,7 @@
"Verify installations": "Verificar instalaciones",
"Verify mount:": "Verificar montaje:",
"Verify the conversion:": "Verifique la conversión:",
"Verify the credentials. Switching to manual paste mode so you can finish the setup without re-typing the password.": "Verifique las credenciales.Cambiar al modo de pegado manual para que pueda finalizar la configuración sin volver a escribir la contraseña.",
"Verify the credentials. Switching to manual paste mode so you can finish the setup without re-typing the password.": "Verifique las credenciales. Cambiar al modo de pegado manual para que pueda finalizar la configuración sin volver a escribir la contraseña.",
"Verifying Ceph installation...": "Verificando la instalación de Ceph...",
"Verifying Ceph packages availability...": "Verificando la disponibilidad de los paquetes de Ceph...",
"Verifying all utilities status": "Comprobando el estado de todas las utilidades",
@@ -4824,7 +4824,7 @@
"Version info not available": "Información de versión no disponible",
"Version:": "Versión:",
"Version: Auto-negotiation (NFSv3/NFSv4)": "Versión: negociación automática (NFSv3/NFSv4)",
"Versions shown belong to maintained NVIDIA branches that list your GPU PCI ID. DKMS compilation is the final validation against the running kernel. The recommended version keeps the current branch, or uses the NVIDIA Production Branch on a fresh install.": "Las versiones mostradas pertenecen a ramas mantenidas de NVIDIA que enumeran su ID PCI de GPU.La compilación DKMS es la validación final contra el kernel en ejecución.La versión recomendada mantiene la rama actual o utiliza la rama de producción de NVIDIA en una instalación nueva.",
"Versions shown belong to maintained NVIDIA branches that list your GPU PCI ID. DKMS compilation is the final validation against the running kernel. The recommended version keeps the current branch, or uses the NVIDIA Production Branch on a fresh install.": "Las versiones mostradas pertenecen a ramas mantenidas de NVIDIA que enumeran su ID PCI de GPU.La compilación DKMS es la validación final contra el kernel en ejecución. La versión recomendada mantiene la rama actual o utiliza la rama de producción de NVIDIA en una instalación nueva.",
"View CIFS Mounts (pvesm + fstab)": "Ver montajes CIFS (pvesm + fstab)",
"View Current Exports": "Ver exportaciones actuales",
"View Current Mounts": "Ver montajes actuales",
@@ -4916,7 +4916,7 @@
"Without a usable reset path, passthrough reliability is poor and VM": "Sin una ruta de reinicio utilizable, la confiabilidad del paso a través es pobre y la VM",
"Working directory:": "Directorio de trabajo:",
"Works with LVM, ZFS, and BTRFS storage types": "Funciona con tipos de almacenamiento LVM, ZFS y BTRFS",
"Would you like to continue in passthrough-only mode? The libedgetpu APT install will be skipped, the Coral device will still be visible inside the container (e.g. /dev/apex_0), and you can install the runtime yourself or use an app container that bundles it (e.g. the Frigate Docker image).": "¿Le gustaría continuar en modo de solo paso?Se omitirá la instalación de libedgetpu APT, el dispositivo Coral seguirá siendo visible dentro del contenedor (por ejemplo, /dev/apex_0) y podrá instalar el tiempo de ejecución usted mismo o usar un contenedor de aplicaciones que lo incluya (por ejemplo, la imagen de Frigate Docker).",
"Would you like to continue in passthrough-only mode? The libedgetpu APT install will be skipped, the Coral device will still be visible inside the container (e.g. /dev/apex_0), and you can install the runtime yourself or use an app container that bundles it (e.g. the Frigate Docker image).": "¿Le gustaría continuar en modo de solo paso? Se omitirá la instalación de libedgetpu APT, el dispositivo Coral seguirá siendo visible dentro del contenedor (por ejemplo, /dev/apex_0) y podrá instalar el tiempo de ejecución usted mismo o usar un contenedor de aplicaciones que lo incluya (por ejemplo, la imagen de Frigate Docker).",
"Would you like to see the current": "¿Quieres ver la actualidad?",
"Write access confirmed for user:": "Acceso de escritura confirmado para el usuario:",
"Write access confirmed.": "Acceso de escritura confirmado.",
@@ -5018,7 +5018,7 @@
"blocking issue(s).": "problema(s) de bloqueo.",
"btrfs — Proxmox dir storage (snapshots, compression)": "btrfs: almacenamiento de directorios de Proxmox (instantáneas, compresión)",
"btrfs — snapshots and compression": "btrfs: instantáneas y compresión",
"but it does not match the one used to create the backup. Replace it with the correct keyfile from the source host and retry.": "pero no coincide con el utilizado para crear la copia de seguridad.Reemplácelo con el archivo de claves correcto del host de origen y vuelva a intentarlo.",
"but it does not match the one used to create the backup. Replace it with the correct keyfile from the source host and retry.": "pero no coincide con el utilizado para crear la copia de seguridad. Reemplácelo con el archivo de claves correcto del host de origen y vuelva a intentarlo.",
"bytes": "bytes",
"can write to": "puede escribir a",
"chmod 1777 + setfacl o::rwx (applied on the NFS share from this host)": "chmod 1777 + setfacl o::rwx (aplicado en el recurso compartido NFS de este host)",
@@ -5038,7 +5038,7 @@
"disks present": "discos presentes",
"dkms autoinstall did not activate:": "la instalación automática de dkms no se activó:",
"dkms.conf generated.": "dkms.conf generado.",
"does not exist on this host. Path not added.": "no existe en este host.Ruta no agregada.",
"does not exist on this host. Path not added.": "no existe en este host. Ruta no agregada.",
"does not exist. Exiting.": "no existe. Saliendo.",
"dpkg still reports unfinished package work; review": "dpkg todavía informa de tareas de paquetes sin finalizar; revise",
"driver:": "conductor:",
@@ -5198,7 +5198,7 @@
"older firmware may increase passthrough instability": "el firmware más antiguo puede aumentar la inestabilidad del paso",
"on SSD/NVMe pools that support discard": "en grupos de SSD/NVMe que admiten descarte",
"openssl encryption failed.": "falló el cifrado de openssl.",
"openssl is not installed — cannot create recovery copy. Install openssl and retry.": "openssl no está instalado; no se puede crear una copia de recuperación.Instale openssl y vuelva a intentarlo.",
"openssl is not installed — cannot create recovery copy. Install openssl and retry.": "openssl no está instalado; no se puede crear una copia de recuperación. Instale openssl y vuelva a intentarlo.",
"or format it manually using external tools.": "o formatéelo manualmente utilizando herramientas externas.",
"or use the ProxMenux LXC Mount Manager.": "o utilice el Administrador de montaje ProxMenux LXC.",
"orphan iface lines, no impact on restore": "líneas de iface huérfanas, sin impacto en la restauración",
@@ -5268,7 +5268,7 @@
"smbclient command not found after installation.": "El comando smbclient no se encuentra después de la instalación.",
"sources.list update skipped (no change)": "Actualización de fuentes.list omitida (sin cambios)",
"sources.list updated to Trixie": "fuentes.lista actualizada a Trixie",
"ssh-keygen failed. Cannot create a new SSH key.": "ssh-keygen falló.No se puede crear una nueva clave SSH.",
"ssh-keygen failed. Cannot create a new SSH key.": "ssh-keygen falló. No se puede crear una nueva clave SSH.",
"stale entry/entries for interfaces no longer present": "entrada obsoleta/entradas para interfaces que ya no están presentes",
"standard performance": "rendimiento estándar",
"start/restart failures and reset instability.": "fallos de inicio/reinicio y reinicio de inestabilidad.",