docs: review utility documentation in all seven translations

This commit is contained in:
Jonatan
2026-10-17 15:08:54 +02:00
parent ce1a3de719
commit 9f6296501a
58 changed files with 8588 additions and 224 deletions
+15 -15
View File
@@ -1,8 +1,8 @@
{
"meta": {
"title": "Exportar VM a OVA / OVF | ProxMenux Documentation",
"title": "Exportar VM a OVA / OVF | Documentación de ProxMenux",
"description": "Exporta una VM de Proxmox a un archivo OVA portable o un directorio OVF usando el esquema estándar DMTF. Discos VMDK en formato streamOptimized, manifiesto SHA1. Importable en VMware ESXi / Workstation / Fusion, VirtualBox y de vuelta a Proxmox.",
"ogTitle": "Exportar VM a OVA / OVF | ProxMenux Documentation",
"ogTitle": "Exportar VM a OVA / OVF | Documentación de ProxMenux",
"ogDescription": "Convierte una VM de Proxmox en un paquete portable OVA / OVF compatible con VMware y VirtualBox."
},
"header": {
@@ -40,13 +40,13 @@
{
"format": "OVA",
"output": "name-vmid-ts.ova",
"pros": "Un único archivo — fácil de mover, sftp, adjuntar a un ticket. Autocontenido.",
"pros": "Un único archivo, fácil de mover, transferir por sftp o adjuntar a una incidencia. Contiene todo lo necesario.",
"cons": "Necesita ~220% del tamaño virtual del disco (overhead de TAR durante la creación)."
},
{
"format": "OVF",
"output": "name-vmid-ts-ovf/",
"pros": "~120% de overhead de disco. Más fácil de inspeccionar (el descriptor es XML plano). Editable antes de importar.",
"pros": "~120% del tamaño virtual del disco. Más fácil de inspeccionar (el descriptor es XML de texto). Se puede editar antes de importar.",
"cons": "Varios archivos — hay que transferirlos todos juntos."
}
]
@@ -54,8 +54,8 @@
"destination": {
"heading": "Directorio de destino",
"body": "Elige entre presets (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) o introduce una ruta manual. El script valida que el directorio es escribible y avisa si el espacio libre va justo antes de empezar.",
"calloutTitle": "Regla del pulgar de espacio libre",
"calloutBody": "Para una exportación OVF de una VM con discos que suman 100 GB virtuales: presupuesta ~120 GB libres. Para OVA: presupuesta ~220 GB. Los discos sparse / mayormente vacíos pueden usar menos, pero la conversión los escribe enteros antes de que el paso TAR de OVA comprima nada. Si te quedas sin espacio a mitad de la exportación, el directorio temporal se limpia con el trap de EXIT y vuelves a empezar."
"calloutTitle": "Estimación orientativa del espacio libre",
"calloutBody": "Para exportar a OVF una VM cuyos discos suman 100 GB virtuales, reserva ~120 GB libres; para OVA, ~220 GB. El uso real puede ser menor si los discos están casi vacíos. El archivo OVA se crea con TAR sin compresión mientras aún existen los archivos VMDK temporales, por lo que hay que reservar espacio para ambos. Si te quedas sin espacio durante la exportación, el manejador de EXIT limpia el directorio temporal y tendrás que empezar de nuevo."
},
"package": {
"heading": "Qué acaba en el paquete",
@@ -73,7 +73,7 @@
"notTitle": "Qué NO se exporta",
"notItems": [
"Montajes de CD-ROM / ISO (excluidos por diseño).",
"Drives de cloud-init (excluidos por diseño).",
"Unidades de cloud-init (excluidas por diseño).",
"Bridge / modelo específico de NIC (solo se preserva el recuento).",
"Elección de BIOS / UEFI — hay que volver a configurarla al importar.",
"Configuración de passthrough PCI.",
@@ -95,7 +95,7 @@
},
"import": {
"heading": "Importar el resultado",
"intro": "El paquete exportado lo pueden consumir:",
"intro": "El paquete exportado se puede importar en:",
"items": [
{
"href": "/docs/utils/import-vm",
@@ -117,12 +117,12 @@
"troubleshoot": {
"heading": "Solución de problemas",
"noSpaceTitle": "qemu-img convert falla a mitad con \"No space left on device\"",
"noSpaceBody": "El destino se quedó sin espacio. El directorio temporal se limpia automáticamente con el trap de EXIT. Elige un destino con más margen (regla del pulgar más arriba) y vuelve a ejecutar.",
"noSpaceBody": "El destino se ha quedado sin espacio. El manejador de EXIT limpia automáticamente el directorio temporal. Elige un destino con más espacio libre (consulta la estimación anterior) y vuelve a ejecutar la herramienta.",
"unsupportedHwTitle": "La exportación termina pero VMware se niega a importar: \"Unsupported hardware family\"",
"unsupportedHwBody": "Algunas versiones de ESXi rechazan descriptores OVF que declaran una hardware family que no reconocen. Abre el .ovf en un editor de texto (o extrae primero el .ova), busca <code>&lt;vssd:VirtualSystemType&gt;</code> y edítalo a un valor que ESXi acepte (p. ej. <code>vmx-13</code> para ESXi 6.5+). Como solución rápida, prueba con VirtualBox — es más permisivo.",
"nicTitle": "La VM importada en VMware tiene NIC e1000 pero quiero VirtIO",
"nicBody": "Esperado — el OVF solo almacena el recuento de NICs, no el modelo. Edita la configuración de NIC de la VM importada en VMware después de importar. Lo mismo aplica para el controlador SCSI (la exportación usa lsilogic por compatibilidad con VMware; cámbialo a <code>VirtIO SCSI</code> si tu guest lo soporta).",
"runningTitle": "La VM estaba corriendo y decliné pararla — exportación abortada",
"unsupportedHwBody": "Algunas versiones de ESXi rechazan los descriptores OVF que declaran una familia de hardware que no reconocen. Abre el .ovf en un editor de texto (o extrae primero el .ova), busca <code>&lt;vssd:VirtualSystemType&gt;</code> y cambia su valor por uno que ESXi acepte (por ejemplo, <code>vmx-13</code> para ESXi 6.5+). Como solución rápida, prueba con VirtualBox, que es más permisivo.",
"nicTitle": "La VM importada usa una NIC o un controlador SCSI diferente",
"nicBody": "El OVF conserva el número de NIC, pero no el modelo original. Revisa la configuración de red de la VM importada en el hipervisor de destino. La exportación declara un controlador SCSI lsilogic por compatibilidad con VMware. Al importar de vuelta a Proxmox, puedes seleccionar <code>VirtIO SCSI</code> si el sistema invitado tiene los controladores adecuados.",
"runningTitle": "La VM estaba en ejecución y rechacé detenerla: exportación cancelada",
"runningBody": "El script no puede producir una imagen consistente mientras se escribe en los discos. O bien aceptas el prompt de apagado la próxima vez, o paras la VM manualmente primero (<code>qm shutdown $VMID</code>) y vuelves a ejecutar.",
"slowTitle": "La conversión de discos es lenta",
"slowBody": "<code>qemu-img convert</code> es de un solo hilo y lee el origen a velocidad máxima. Para un disco de 100 GB en disco mecánico, espera 15-30 minutos. NVMe a NVMe es 5-10x más rápido. Las VMs multi-disco se convierten secuencialmente — el tiempo escala linealmente con el tamaño virtual total."
@@ -133,11 +133,11 @@
{
"href": "/docs/utils/import-vm",
"label": "Importar VM desde OVA / OVF",
"tail": " — el compañero del viaje de ida y vuelta."
"tail": " — la herramienta complementaria para volver a importar."
},
{
"href": "/docs/utils",
"label": "Resumen de Utilidades",
"label": "Resumen de utilidades",
"tail": " — volver al resumen de la sección."
}
]
+17 -17
View File
@@ -1,8 +1,8 @@
{
"meta": {
"title": "Importar VM desde OVA / OVF | ProxMenux Documentation",
"title": "Importar VM desde OVA / OVF | Documentación de ProxMenux",
"description": "Importa una VM de VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux en Proxmox VE. Extrae OVA automáticamente, parsea los metadatos OVF, crea la VM e importa cada disco al formato nativo del almacenamiento (qcow2 / raw).",
"ogTitle": "Importar VM desde OVA / OVF | ProxMenux Documentation",
"ogTitle": "Importar VM desde OVA / OVF | Documentación de ProxMenux",
"ogDescription": "Trae VMs de exportaciones de VMware, VirtualBox o ProxMenux a Proxmox. Los discos se convierten automáticamente al formato nativo del almacenamiento."
},
"header": {
@@ -40,7 +40,7 @@
},
{
"label": "qm create + importdisk",
"detail": "qm create $VMID\nqm importdisk\n(VMDK → qcow2)\nqm set --scsiN",
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formato del almacenamiento)\nqm set --scsiN",
"variant": "target"
}
]
@@ -86,7 +86,7 @@
},
"memWarn": {
"title": "Ambigüedad de unidad de memoria",
"body": "El parser <strong>asume MiB</strong>. Si el OVF declara la memoria en <em>GB</em> (p. ej. algunas exportaciones de VMware lo hacen), la VM importada tendrá 1/1024 de la RAM prevista. Tras la importación, contrasta <code>qm config $VMID | grep memory</code> contra la RAM documentada de la VM origen y ajusta con <code>qm set $VMID --memory &lt;MiB&gt;</code> si está desviada por un factor de 1024 o 1024²."
"body": "El analizador convierte las unidades de memoria reconocidas a <strong>MiB</strong>, incluidos bytes, KiB, MiB, GiB y las etiquetas de texto compatibles. Las unidades ausentes o no reconocidas se <em>interpretan como MiB</em>. Después de importar, compara <code>qm config $VMID | grep memory</code> con la RAM documentada de la VM de origen y, si hace falta, corrígela con <code>qm set $VMID --memory &lt;MiB&gt;</code>."
},
"dialog": {
"heading": "Flujo de diálogos de importación",
@@ -108,7 +108,7 @@
"heading": "Bucle de importación de discos",
"intro": "Para cada referencia de disco en el OVF:",
"items": [
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — convierte el VMDK al formato nativo del almacenamiento (p. ej. qcow2 en local-lvm, raw en ZFS) y crea una entrada <code>unusedN:</code> en la configuración de la VM.",
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importa el disco en un formato compatible con el almacenamiento de destino y crea una entrada <code>unusedN:</code> en la configuración de la VM.",
"El script busca con grep en la configuración la referencia <code>unusedN</code> recién creada.",
"<code>qm set $VMID --scsiN $unused_disk</code> — asocia el disco como <code>scsi0</code>, <code>scsi1</code>, …",
"<code>qm set $VMID --delete unusedN</code> — elimina el marcador unused ya redundante."
@@ -130,7 +130,7 @@
{
"setting": "Controlador SCSI",
"default": "LSI",
"recommended": "VirtIO SCSI single (Linux moderno + Windows con drivers VirtIO)"
"recommended": "VirtIO SCSI single (Linux moderno o Windows con controladores VirtIO)"
},
{
"setting": "Firmware (BIOS / UEFI)",
@@ -138,8 +138,8 @@
"recommended": "Igualar al firmware de la VM origen (desigualados = no arranca)"
},
{
"setting": "QEMU guest agent",
"default": "Off",
"setting": "QEMU Agente invitado",
"default": "Desactivado",
"recommendedRich": "On + instalar <code>qemu-guest-agent</code> en el guest (mejores backups, reporte de IP)"
},
{
@@ -148,8 +148,8 @@
"recommended": "Verificar contra el SO real del guest"
},
{
"setting": "Display",
"default": "Default",
"setting": "Pantalla",
"default": "Por defecto",
"recommended": "VirtIO-GPU o SPICE (mejor rendimiento de consola)"
}
]
@@ -166,7 +166,7 @@
"<strong>Tipo de firmware BIOS / UEFI</strong> — por defecto el de Proxmox (BIOS).",
"<strong>Configuración de passthrough PCI</strong>.",
"<strong>TPM</strong> (vTPM).",
"<strong>Drives de cloud-init</strong>.",
"Unidades <strong>cloud-init</strong>.",
"<strong>Snapshots</strong> — solo el estado actual.",
"<strong>Dispositivos USB / serie / paralelo</strong> declarados en el OVF.",
"<strong>Tags de VM / notas / arranque al inicio</strong>."
@@ -175,20 +175,20 @@
"troubleshoot": {
"heading": "Solución de problemas",
"orphanTitle": "La VM se creó pero la importación de discos falló — VM huérfana en el sistema",
"orphanIntro": "Limitación conocida. El script no limpia automáticamente una importación parcial. Destruye la huérfana con:",
"orphanIntro": "Si la importación falla, el script ofrece eliminar la VM parcial y sus discos importados. Si lo rechazaste o la eliminación automática falló, revisa la VM y elimínala manualmente con:",
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
"orphanOutro": "Después corrige la causa raíz (probablemente espacio en disco en el almacenamiento de destino) y vuelve a importar.",
"memTitle": "La VM importada tiene 8 MB de RAM (o 8 TB)",
"memIntro": "Ambigüedad de unidad de memoria en el parser de OVF. Desviado por un factor de 1024 → el OVF usó GB en lugar de MiB. Arreglo:",
"memIntro": "El analizador convierte las AllocationUnits reconocidas a MiB. Si las unidades faltan o no son compatibles, las interpreta como MiB. Revisa el OVF, compara la memoria importada con la VM de origen y corrígela si hace falta:",
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
"bootTitle": "La VM importada no arranca — \"No bootable device\"",
"bootIntro": "Causa más común: desigualdad BIOS / UEFI. La VM era UEFI pero Proxmox la creó como BIOS. Configura el firmware coincidente:",
"bootCode": "qm set $VMID --bios ovmf # UEFI\n# also add an EFI disk for the EFI vars:\nqm set $VMID --efidisk0 $STORAGE:1,format=qcow2,efitype=4m,pre-enrolled-keys=1",
"bootOutro": "Segunda más común: el orden de arranque apunta a scsi0 pero el disco real del SO es scsi1. Edita el orden de arranque en la pestaña VM Options.",
"bsodTitle": "Una VM Windows exportada desde VMware se importa pero hace BSOD al primer arranque",
"bsodBody": "Windows es sensible a cambios de controlador de disco. Bien: (a) instala los drivers VirtIO <em>antes</em> de exportar desde VMware, o (b) mantén el controlador SCSI como <code>lsi</code> (el valor por defecto) y solo cambia a VirtIO SCSI tras que el guest arranque y puedas instalar los drivers VirtIO en Windows.",
"bsodBody": "Windows es sensible a los cambios de controlador de disco. Puedes (a) instalar los controladores VirtIO <em>antes</em> de exportar desde VMware o (b) mantener el controlador SCSI <code>lsi</code> predeterminado y cambiar a VirtIO SCSI después de arrancar el sistema invitado e instalar sus controladores VirtIO en Windows.",
"zeroTitle": "El parser de OVF reporta 0 discos",
"zeroBody": "El descriptor OVF usa un estilo inusual de referencia a disco. Abre el .ovf en un editor de texto y confirma que cada disco tiene una entrada <code>&lt;File ovf:href=\"...vmdk\" ...&gt;</code>. Si la extensión del archivo es inusual (p. ej. solo <code>.dat</code>), renómbralo a <code>.vmdk</code> y actualiza la referencia en el OVF, después vuelve a ejecutar.",
"zeroBody": "El descriptor OVF puede usar referencias a discos que el analizador no reconoce. Abre el .ovf y busca la entrada <code>&lt;File ovf:href=\"...vmdk\" ...&gt;</code> de cada disco. Si el disco es realmente VMDK, pero tiene una extensión inusual como <code>.dat</code>, renómbralo a <code>.vmdk</code> y actualiza la referencia en el OVF. Renombrarlo no convierte su formato.",
"awkTitle": "awk: syntax error at or near , — el parser falla en cada OVA / OVF",
"awkIntro": "El parser de OVF usa sintaxis específica de gawk (<code>match()</code> con 3 argumentos) que mawk — el <code>awk</code> por defecto en Debian / Proxmox — no soporta. Versiones recientes del script instalan automáticamente gawk en el primer uso vía el par canónico <code>ensure_repositories</code> + <code>install_single_package</code>; si estás ejecutando una copia más antigua, instálalo manualmente:",
"awkCode": "apt-get install -y gawk",
@@ -206,11 +206,11 @@
{
"href": "/docs/utils/export-vm",
"label": "Exportar VM a OVA / OVF",
"tail": " — el compañero del viaje de ida y vuelta."
"tail": " — la herramienta complementaria para exportar."
},
{
"href": "/docs/utils",
"label": "Resumen de Utilidades",
"label": "Resumen de utilidades",
"tail": " — volver al resumen de la sección."
}
]
+11 -11
View File
@@ -8,13 +8,13 @@
"twitterDescription": "Creación de ISOs, herramientas CLI, actualización de Proxmox, salto PVE 8→9, portabilidad de VMs OVA / OVF."
},
"header": {
"title": "Utilidades",
"title": "Utilidades y herramientas",
"description": "Seis herramientas que completan el flujo de trabajo del día a día en Proxmox VE: creación de ISOs, mantenimiento del sistema y portabilidad de VMs. Cada opción es independiente — elige la que necesites; nada se instala hasta que lo pidas.",
"section": "Utilidades"
},
"intro": {
"title": "Para qué sirve este menú",
"body": "Tres grupos de herramientas no relacionadas pero habitualmente necesarias: <strong>crear una ISO de Windows</strong> desde UUP Dump, <strong>mantener el host Proxmox</strong> (utilidades CLI, actualizaciones, el salto de versión mayor) y <strong>mover VMs dentro y fuera</strong> de Proxmox usando el formato estándar OVA / OVF."
"body": "Tres grupos de herramientas independientes pero de uso habitual: <strong>crear una ISO de Windows</strong> desde UUP Dump, <strong>mantener el host Proxmox</strong> (utilidades CLI, actualizaciones y el salto de versión mayor) e <strong>importar y exportar máquinas virtuales</strong> en Proxmox mediante el formato estándar OVA / OVF."
},
"opening": {
"heading": "Abrir el menú",
@@ -30,14 +30,14 @@
"bullets": [
"Enlace compartido de UUP Dump → ISO arrancable",
"Dependencias instaladas automáticamente",
"El resultado aterriza en la ruta de plantillas ISO de Proxmox"
"El resultado se guarda en la ruta de plantillas ISO de Proxmox"
]
},
"maintenance": {
"title": "Mantenimiento del sistema",
"body": "Mantén el host sano: herramientas CLI, actualizaciones periódicas y el salto de versión mayor cuando toca.",
"bullets": [
"Instalador de utilidades del sistema (26 herramientas CLI)",
"Instalador de utilidades del sistema (25 herramientas CLI)",
"Actualización del sistema Proxmox (apt + dist-upgrade)",
"Salto de versión mayor PVE 8 → PVE 9"
]
@@ -61,7 +61,7 @@
"body": "Crea una ISO de instalación de Windows actualizada directamente en el host Proxmox. El script automatiza todo el flujo de UUP Dump: instalación de dependencias (aria2c, cabextract, wimlib-imagex, …), descarga paralelizada de los archivos de actualización vía aria2 y conversión en una única ISO arrancable que aterriza en <code>/var/lib/vz/template/iso</code> lista para asociar a una VM.",
"options": [
{
"title": "UUP Dump ISO Creator",
"title": "Creador de ISO UUP Dump",
"description": "Crea una ISO de instalación de Windows actualizada desde un enlace compartido de UUP Dump. Dependencias, descarga y conversión totalmente automatizadas; la ISO resultante aterriza en /var/lib/vz/template/iso lista para crear una VM.",
"href": "/docs/utils/UUp-Dump-ISO-Creator"
}
@@ -69,16 +69,16 @@
},
"maintenanceSection": {
"heading": "Mantenimiento del sistema",
"body": "Tres herramientas cubren el trabajo del host del día a día y el ocasional. <strong>Instalador de utilidades del sistema</strong> configura las herramientas CLI que realmente usas tras una instalación recién hecha. <strong>Actualización del sistema Proxmox</strong> es la rutina semanal / mensual de higiene. <strong>Actualizar PVE 8 a PVE 9</strong> es la gran mudanza una vez por ciclo mayor — se trata con compuertas de seguridad adicionales porque no es reversible.",
"body": "Tres herramientas cubren las tareas diarias y ocasionales del host. El <strong>Instalador de utilidades del sistema</strong> configura las herramientas CLI que usas tras una instalación nueva. La <strong>Actualización del sistema Proxmox</strong> sirve para el mantenimiento semanal o mensual. <strong>Actualizar PVE 8 a PVE 9</strong> es el gran cambio de cada ciclo de versión mayor y cuenta con comprobaciones de seguridad adicionales porque no es reversible.",
"options": [
{
"title": "Instalador de utilidades del sistema",
"description": "Selector curado para 26 herramientas CLI (htop, btop, iperf3, jq, tmux, ncdu, ...) con selección personalizada o grupos predefinidos (básico, dev, compresión, multiplexores, análisis, red). Usa el flujo canónico de repo + comando de verificación.",
"description": "Selector de 25 herramientas CLI escogidas (htop, btop, iperf3, jq, tmux, ncdu, ...) con selección personalizada o grupos predefinidos (básico, desarrollo, compresión, multiplexores, análisis y red). Usa el flujo estándar de repositorio y comando de verificación.",
"href": "/docs/utils/system-utils"
},
{
"title": "Actualización del sistema Proxmox",
"description": "Comprobación de repositorios + apt update + apt dist-upgrade con preguntar antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), mantiene los repositorios configurados y pregunta antes de cambiar a sin suscripción un host que no la tiene, y después ejecuta autoremove.",
"description": "Comprobación de repositorios + apt update + apt dist-upgrade, con confirmación antes de reiniciar. Detecta la versión mayor de PVE (8 o 9), conserva los repositorios configurados y solicita confirmación antes de cambiar al repositorio no-subscription un host sin suscripción; después ejecuta autoremove.",
"href": "/docs/utils/system-update"
},
{
@@ -99,17 +99,17 @@
},
{
"title": "Importar VM desde OVA / OVF",
"description": "Trae una exportación de VMware / VirtualBox / ProxMenux de vuelta a Proxmox. Extrae OVA automáticamente, parsea los metadatos OVF, crea la VM e importa cada disco al formato nativo del almacenamiento.",
"description": "Importa en Proxmox una exportación de VMware / VirtualBox / ProxMenux. Extrae OVA automáticamente, analiza los metadatos OVF, crea la VM e importa cada disco en el formato nativo del almacenamiento.",
"href": "/docs/utils/import-vm"
}
]
},
"diskSpaceCallout": {
"title": "Nota sobre espacio en disco para exportar / importar",
"body": "Ambas herramientas convierten formatos de disco: la exportación usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; la importación usa <code>qm importdisk</code> para convertir de vuelta al formato nativo del almacenamiento (qcow2 / raw). Planea <strong>~120% del tamaño virtual del disco</strong> para OVF y <strong>~220%</strong> para OVA — la conversión escribe el disco completo antes de cualquier compresión. Comprueba que el directorio de destino tiene margen antes de empezar."
"body": "Ambas herramientas convierten formatos de disco: la exportación usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; la importación usa <code>qm importdisk</code> para volver al formato nativo del almacenamiento (qcow2 / raw). Para exportar, reserva <strong>~120% del tamaño virtual del disco</strong> para OVF y <strong>~220%</strong> para OVA. El archivo OVA usa TAR sin compresión y se crea mientras aún existen los archivos VMDK temporales. Comprueba que el directorio de destino tiene espacio suficiente antes de empezar."
},
"fitsTogether": {
"heading": "Cómo encaja el menú",
"body": "Cada herramienta tiene un script dedicado bajo <code>scripts/utilities/</code>. La Actualización del sistema Proxmox es un wrapper que delega en uno de dos scripts worker en <code>scripts/global/</code> según la versión mayor detectada (PVE 8 o PVE 9). El salto PVE 8 → 9 expone dos acciones extra de menú dentro de su propio flujo — una <em>Comprobación previa al upgrade</em> independiente (ejecuta <code>pve8to9 --full</code>) y una <em>Guía manual de upgrade</em> de solo lectura (runbook de 17 pasos) — para los usuarios que quieren inspeccionar u operar a mano en lugar de la ruta automatizada."
"body": "Cada herramienta tiene un script dedicado en <code>scripts/utilities/</code>. La actualización del sistema Proxmox llama a un único script seguro de <code>scripts/global/</code>, update-pve-safe.sh, que detecta la versión mayor y gestiona tanto PVE 8 como PVE 9. La actualización PVE 8 → 9 ofrece dos acciones adicionales en su propio menú: una <em>Comprobación previa a la actualización</em> independiente (ejecuta <code>pve8to9 --full</code>) y una <em>Guía de actualización manual</em> de solo lectura (procedimiento de 17 pasos), para quienes quieran inspeccionar el proceso o realizarlo manualmente."
}
}
+43 -43
View File
@@ -1,13 +1,13 @@
{
"meta": {
"title": "Actualización del sistema Proxmox | ProxMenux Documentation",
"description": "Ejecuta la secuencia oficial de upgrade de Proxmox (apt update + apt full-upgrade -y) y añade la higiene de repos, comprobación de paquetes esenciales, escaneo de sanity de LVM, autoremove/autoclean y preguntar antes de reiniciar que la guía de upgrade también recomienda. Detecta la versión mayor en ejecución automáticamente.",
"ogTitle": "Actualización del sistema Proxmox | ProxMenux Documentation",
"ogDescription": "apt full-upgrade / dist-upgrade oficial envuelto con higiene de repos, autoremove y un preguntar antes de reiniciar inteligente."
"title": "Actualización del sistema Proxmox | Documentación de ProxMenux",
"description": "Actualiza los paquetes dentro de la versión mayor actual de Proxmox con apt-get update y apt full-upgrade -y. Comprueba el espacio en disco y los repositorios configurados, intenta recuperar las claves GPG, comprueba y repara cabeceras PV antiguas de LVM, recompila los controladores DKMS gestionados cuando hace falta, ejecuta autoremove/autoclean y ofrece reiniciar cuando es necesario.",
"ogTitle": "Actualización del sistema Proxmox | Documentación de ProxMenux",
"ogDescription": "apt full-upgrade con comprobación de repositorios, autoremove/autoclean y confirmación de reinicio cuando es necesario."
},
"header": {
"title": "Actualización del sistema Proxmox",
"description": "Wrapper que delega en un único worker seguro (<code>update-pve-safe.sh</code>) que detecta la versión mayor de Proxmox por sí mismo. Los repositorios configurados se leen a través de la API de Proxmox y se mantienen como están; en un host sin suscripción activa cuyo único repositorio de Proxmox es Enterprise se pregunta antes de cambiar a sin suscripción. Se actualizan todos los paquetes, se recompilan los drivers DKMS gestionados por ProxMenux si aterriza un kernel nuevo y el prompt de reinicio solo se dispara cuando el kernel realmente cambió. También lanzable desde el botón <em>Update Now</em> de la cabecera del dashboard de ProxMenux Monitor cuando se detectan actualizaciones pendientes.",
"description": "Delega en un único script (<code>update-pve-safe.sh</code>) que detecta la versión mayor de Proxmox en ejecución. Los repositorios configurados se leen mediante la API de Proxmox y se conservan; si un host sin suscripción solo tiene Enterprise, se pide confirmación antes de cambiar a no-subscription. El script actualiza los paquetes y recompila los controladores DKMS gestionados por ProxMenux para un kernel pendiente de arrancar. El script principal ofrece reiniciar si existe la marca de reinicio del sistema o si el kernel más reciente instalado difiere del que está en ejecución. También se puede iniciar desde <em>Update Now</em> en la cabecera de ProxMenux Monitor cuando se detectan actualizaciones pendientes.",
"section": "Utilidades"
},
"calloutWhat": {
@@ -21,81 +21,81 @@
"outro": "Esa única línea es el comando oficial en cualquier release actual de Proxmox. La parte difícil no es el upgrade en sí; es asegurar que los repositorios están limpios, que están habilitados los correctos y que el host queda en un estado razonable después."
},
"onTop": {
"heading": "Qué hace ProxMenux encima — verificado contra el script",
"intro": "Esta opción ejecuta <strong>exactamente</strong> el comando apt de arriba, envuelto con la higiene de repos, la recompilación DKMS de los drivers gestionados por ProxMenux y la limpieza post-upgrade que la guía oficial de upgrade también recomienda. Todo lo de abajo mapea 1:1 a <code>scripts/utilities/proxmox_update.sh</code> y al único worker seguro <code>scripts/global/update-pve-safe.sh</code> — nada implícito, cada paso está en el código:",
"heading": "Qué añade ProxMenux: verificado en el código",
"intro": "Usa <strong>la misma operación apt full-upgrade</strong>, con comprobación de repositorios, recompilación DKMS y limpieza posterior. Los pasos siguientes corresponden a <code>scripts/utilities/proxmox_update.sh</code> y a su único script de ejecución, <code>scripts/global/update-pve-safe.sh</code>:",
"items": [
"<strong>Detecta la versión mayor de PVE</strong> desde dentro del worker (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>) y adapta las URLs base de repo Proxmox / Debian (bookworm en PVE 8, trixie en PVE 9). No hay reparto a scripts worker por versión — un único worker seguro maneja ambas.",
"<strong>Detecta la versión mayor de PVE</strong> dentro del script (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Un único script gestiona PVE 8 y PVE 9; los repositorios configurados se conservan salvo que un host sin suscripción acepte el cambio ofrecido.",
"<strong>Mantiene los repositorios configurados.</strong> <code>ensure_repositories</code> lee los repositorios a través de la API de repositorios de Proxmox, junto con el estado de la suscripción. Un host con suscripción activa, o que ya usa el repositorio sin suscripción o el de test, se deja sin cambios. En un host sin suscripción activa cuyo único repositorio de Proxmox es Enterprise se pregunta si se cambia a sin suscripción; al rechazarlo, la actualización se detiene sin modificar ninguna fuente.",
"<strong>Ejecuta el upgrade no interactivamente</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code> — si un archivo de configuración que ya modificaste también cambió upstream, tu versión se queda en su sitio. Sin sobrescrituras silenciosas de configuraciones propias.",
"<strong>No fuerza utilidades opcionales.</strong> El worker seguro no empuja <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ni paquetes similares al host — una instalación de Proxmox que optó por no tener alguno de ellos conserva su elección. La ausencia de paquetes la surface los flujos de instalación de alto nivel, no la ruta de actualización.",
"<strong>Comprobación de sanity de metadatos LVM</strong> contra cabeceras PV sueltas de discos en passthrough (solo aviso, sin arreglo automático).",
"<strong>Ejecuta la actualización sin interacción</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code>. Para las decisiones sobre archivos de configuración de dpkg, acepta la acción predeterminada si existe; en caso contrario conserva el archivo actual.",
"<strong>No fuerza la instalación de utilidades opcionales.</strong> El script no instala por la fuerza <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> ni paquetes similares. Una instalación de Proxmox que haya prescindido de alguno mantiene esa elección. Los paquetes que faltan se señalan en los procesos de instalación superiores, no en el de actualización.",
"<strong>Comprobación y reparación de metadatos LVM.</strong> Detecta cabeceras PV antiguas y ejecuta vgck --updatemetadata y vgchange -ay para los grupos de volúmenes afectados. Puede cambiar metadatos LVM; no se limita a mostrar avisos.",
"<strong>Limpia después:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
"<strong>Recompilación DKMS antes del prompt de reinicio.</strong> Cuando el upgrade dejó staged un kernel nuevo, el wrapper llama a <code>pmx_rebuild_dkms_after_kernel</code> para recompilar cada driver que ProxMenux instaló vía DKMS contra la versión del kernel entrante — así los módulos están listos antes de que la caja vuelva a arrancar. La detección de reinicio usa <code>/var/run/reboot-required</code> cuando <code>needrestart</code> está presente, y como fallback una comparación por <code>dpkg-query</code> entre el kernel en ejecución y el paquete <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> más nuevo instalado cuando no lo está — señal que sobrevive a los muchos hosts Proxmox que se entregan sin <code>needrestart</code>."
"<strong>Recompilación DKMS antes de ofrecer el reinicio.</strong> El script de ejecución llama a <code>pmx_rebuild_dkms_after_kernel</code> cuando hay un kernel instalado más reciente pendiente de arrancar. El script principal comprueba <code>/var/run/reboot-required</code> y usa también <code>dpkg-query</code> para comparar el kernel que indica <code>uname -r</code> con el paquete <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> más reciente instalado. La marca puede faltar en hosts sin <code>needrestart</code>; la comparación de kernels sigue funcionando en ese caso."
]
},
"calloutOneSentence": {
"title": "En una frase",
"body": "El mismo upgrade que Proxmox te dice que ejecutes, más la limpieza de repos, la comprobación de paquetes esenciales, el escaneo de sanity de LVM, el autoremove/autoclean después y un preguntar antes de reiniciar solo cuando toca."
"body": "Actualiza los paquetes del host, conserva los repositorios configurados salvo que aceptes un cambio, comprueba los metadatos LVM, recompila los controladores DKMS gestionados, limpia con autoremove/autoclean y ofrece reiniciar cuando es necesario."
},
"confirm": {
"heading": "Diálogo de confirmación",
"intro": "Seleccionar la opción abre un resumen de lo que va a hacer el worker, requiriendo una confirmación explícita:",
"imageAlt": "Diálogo de confirmación de Actualización del sistema Proxmox listando higiene de repos, actualizaciones de paquetes, limpieza"
"intro": "Al seleccionar la opción se abre un resumen de lo que hará el script y se solicita confirmación explícita:",
"imageAlt": "Diálogo de confirmación de la actualización del sistema Proxmox con comprobación de repositorios, actualización de paquetes y limpieza"
},
"routes": {
"heading": "Cómo enruta el wrapper",
"heading": "Cómo se delega la ejecución",
"nodes": {
"source": {
"label": "proxmox_update.sh",
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
},
"bridge": {
"label": "Único worker seguro",
"label": "Único script de ejecución",
"detail": "update-pve-safe.sh\n(detecta PVE 8 / 9\ninternamente)"
},
"target": {
"label": "Post-actualización",
"detail": "apt-get autoremove\napt-get autoclean\nPreguntar antes de reiniciar si toca"
"detail": "apt-get autoremove\napt-get autoclean\nConfirmación de reinicio si es necesario"
}
}
},
"worker": {
"heading": "Qué hace el worker",
"intro": "Un único worker (<code>scripts/global/update-pve-safe.sh</code>) maneja tanto PVE 8 como PVE 9. Detecta la versión mayor internamente y usa el codename propio de cada versión (<code>bookworm</code> o <code>trixie</code>) para sus fuentes base. Las etapas son:",
"heading": "Qué hace el script de ejecución",
"intro": "Un único script (<code>scripts/global/update-pve-safe.sh</code>) gestiona PVE 8 (<code>bookworm</code>) y PVE 9 (<code>trixie</code>). Detecta la versión mayor y comprueba la configuración actual de repositorios sin reescribir las fuentes base de Debian. Las etapas son:",
"items": [
"<strong>Comprobaciones previas.</strong> Verifica al menos ~1 GB libres en <code>/var/cache/apt/archives</code>. Aborta pronto con un mensaje claro cuando falla, para que la ejecución no muera a mitad de una transacción apt.",
"<strong>Comprobación de repositorios.</strong> <code>ensure_repositories</code> lee los repositorios y el estado de la suscripción. En un host con un repositorio de Proxmox utilizable no cambia nada; en un host sin suscripción activa y solo con el repositorio Enterprise pregunta antes de cambiar a sin suscripción, y detiene la actualización cuando la respuesta es no.",
"<strong>Apt update con auto-recuperación de GPG.</strong> Ante un <code>NO_PUBKEY</code> de cualquier repo (los propios o uno de terceros), el worker importa la clave que falta y vuelve a intentar automáticamente antes de fallar.",
"<strong>Actualizaciones pendientes + conteo de seguridad.</strong> Reporta cuántos paquetes van a cambiar y cuántos de esos vienen de la suite de seguridad, para que el diálogo de confirmación tenga números reales que mostrar.",
"<strong>Diálogo de confirmación.</strong> El wrapper pide un sí explícito antes de tocar apt.",
"<strong>apt full-upgrade.</strong> Se ejecuta con <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code> para que cualquier archivo de configuración que personalizaste mantenga su contenido actual cuando upstream también lo cambió. Nunca sobrescribe silenciosamente configs editados por el usuario.",
"<strong>Comprobación de sanity LVM.</strong> <code>lvm_repair_check</code> refresca los metadatos de VG cuando discos en passthrough a VMs guest (DSM, TrueNAS, appliances de almacenamiento) vuelven con cabeceras PV antiguas.",
"<strong>Recompilación DKMS de los drivers gestionados por ProxMenux.</strong> Cuando el upgrade dejó staged un kernel nuevo, <code>pmx_rebuild_dkms_after_kernel</code> lee <code>components_status.json</code> para los drivers que ProxMenux instaló (actualmente <code>nvidia_driver</code> → módulo <code>nvidia</code>, <code>coral_driver</code> → módulo <code>gasket</code>), instala los headers de kernel correspondientes (<code>proxmox-headers-&lt;newkver&gt;</code> cuando está disponible, si no <code>pve-headers-&lt;newkver&gt;</code>) y ejecuta <code>dkms autoinstall -k &lt;newkver&gt;</code>. Si <code>dkms status</code> no muestra los módulos construidos contra el kernel nuevo, el worker cae a reejecutar cada instalador con <code>--auto-reinstall</code>. Cualquier fallo se registra pero no aborta la actualización — llegas al prompt de reinicio en todos los casos.",
"<strong>Post-limpieza.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> antes de devolver el control al wrapper."
"<strong>Diálogo de confirmación.</strong> Tras refrescar las listas de paquetes, el script solicita un sí explícito antes de ejecutar la actualización de paquetes.",
"<strong>apt full-upgrade.</strong> Usa <code>DEBIAN_FRONTEND=noninteractive</code> y <code>--force-confdef --force-confold</code>. Dpkg aplica su acción predeterminada a las decisiones sobre archivos de configuración cuando existe; en caso contrario conserva el archivo actual.",
"<strong>Comprobación de LVM.</strong> <code>lvm_repair_check</code> actualiza los metadatos de los grupos de volúmenes cuando los discos cedidos directamente a máquinas virtuales (DSM, TrueNAS o dispositivos de almacenamiento) vuelven con cabeceras PV antiguas.",
"<strong>Recompilación DKMS de los controladores gestionados por ProxMenux.</strong> Cuando hay un kernel nuevo pendiente de arrancar, <code>pmx_rebuild_dkms_after_kernel</code> consulta en <code>components_status.json</code> los controladores instalados por ProxMenux (actualmente <code>nvidia_driver</code> → módulo <code>nvidia</code> y <code>coral_driver</code> → módulo <code>gasket</code>), instala las cabeceras correspondientes (<code>proxmox-headers-&lt;newkver&gt;</code> si está disponible; si no, <code>pve-headers-&lt;newkver&gt;</code>) y ejecuta <code>dkms autoinstall -k &lt;newkver&gt;</code>. Si <code>dkms status</code> no muestra los módulos compilados para el kernel nuevo, vuelve a ejecutar cada instalador con <code>--auto-reinstall</code>. Los fallos se registran sin cancelar la actualización, que continúa hasta la confirmación de reinicio.",
"<strong>Limpieza posterior.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> antes de devolver el control al script principal."
]
},
"post": {
"heading": "Limpieza post-actualización y reinicio",
"intro": "Tras salir el worker, el wrapper ejecuta:",
"intro": "Cuando finaliza el script de ejecución, el script principal ejecuta:",
"code": "apt-get autoremove -y # drop unused dependencies pulled in by old packages\napt-get autoclean # drop downloaded .deb files no longer in the index",
"afterCode": "Después comprueba si hace falta un reinicio. Dos señales disparan el prompt:",
"afterCode": "El script principal también comprueba si hace falta reiniciar. Cualquiera de estas señales activa la pregunta:",
"items": [
"<code>/var/run/reboot-required</code> existe (creado por el hook post-install del paquete del kernel)",
"El log del upgrade contiene entradas de <code>linux-image</code> (el kernel se actualizó de verdad)"
"Existe <code>/var/run/reboot-required</code>: un paquete o una herramienta del sistema ha marcado que el host necesita reiniciarse.",
"El paquete de kernel Proxmox más reciente instalado difiere del kernel en ejecución, según <code>dpkg-query</code> y uname -r."
],
"outro": "Si alguna es cierta, un diálogo whiptail pregunta <em>\"Some changes require a reboot to take effect. Do you want to restart now?\"</em>. Decline para seguir corriendo en el kernel antiguo hasta que elijas reiniciar manualmente (p. ej. durante una ventana de mantenimiento planificada)."
"outro": "Si se cumple alguna condición, un diálogo de whiptail pregunta <em>«Algunos cambios requieren reiniciar para aplicarse. ¿Quieres reiniciar ahora?»</em>. Recházalo para seguir con el kernel actual hasta que decidas reiniciar manualmente, por ejemplo durante una ventana de mantenimiento."
},
"end": {
"heading": "Qué ves al final",
"intro": "Cuando el worker termina, el terminal muestra la salida de la limpieza y (si el kernel cambió) el preguntar antes de reiniciar:",
"imageAlt": "Resumen de finalización de Actualización del sistema Proxmox con salida de limpieza y preguntar antes de reiniciar"
"intro": "Cuando termina el script de ejecución, el terminal muestra el resultado de la limpieza y, si hace falta reiniciar, la pregunta correspondiente:",
"imageAlt": "Resumen final de la actualización del sistema Proxmox con el resultado de la limpieza y la confirmación de reinicio"
},
"calloutDeclineReboot": {
"title": "Decline el reinicio solo si sabes por qué",
"body": "Correr en un kernel antiguo tras actualizar <code>linux-image-*</code> significa que estás en un sistema medio actualizado: userspace nuevo, kernel viejo. La mayoría del tiempo las cosas funcionan, pero los módulos ZFS, grupos IOMMU, KSMBD y cualquier driver fuera del árbol solo cuadran con el kernel para el que fueron construidos — un desajuste produce fallos oscuros. Reinicia en el primer momento razonable."
"title": "Pospón el reinicio solo si sabes por qué",
"body": "Instalar un paquete <code>proxmox-kernel-*</code> nuevo no sustituye al kernel en ejecución hasta que reinicies. El nuevo kernel y sus módulos correspondientes se activan en el siguiente arranque. Planifica el reinicio para una ventana de mantenimiento adecuada y revisa antes los avisos de compilación DKMS."
},
"noSub": {
"heading": "Cómo trata el worker seguro al repositorio Enterprise",
"heading": "Cómo trata el script al repositorio Enterprise",
"intro": "Proxmox entrega los hosts con el repositorio Enterprise habilitado por defecto. Sin una suscripción activa, ese repositorio devuelve 401 en <code>apt-get update</code>. El worker seguro cambia los repositorios solo en ese caso, solo tras preguntar, y a través de la API de repositorios de Proxmox — la misma que hay detrás de <em>Nodo → Actualizaciones → Repositorios</em>. Lo que ocurre en cada caso:",
"items": [
"Con una <strong>suscripción activa</strong>, los repositorios se dejan sin cambios y Enterprise dirige la actualización.",
@@ -117,7 +117,7 @@
"<strong>Salto de versión mayor.</strong> 8 → 9 es una operación aparte — mira <link>Actualizar PVE 8 a PVE 9</link>.",
"<strong>Backup.</strong> Sin snapshots, sin rollback. Las operaciones de apt no son transaccionales. Combínalo con tu disciplina normal de backups (PBS, vzdump, snapshots ZFS).",
"<strong>Actualizaciones de contenedores / VMs.</strong> Solo se actualiza el host; los guests se quedan en paz.",
"<strong>Actualizaciones de firmware.</strong> Microcódigo de CPU, firmware de NIC, BIOS — fuera de alcance."
"<strong>Instalación específica de firmware.</strong> Esta herramienta no sirve para flashear BIOS ni firmware de dispositivos. Los paquetes de firmware o microcódigo de CPU ya instalados pueden recibir actualizaciones mediante apt."
]
},
"troubleshooting": {
@@ -129,21 +129,21 @@
},
{
"title": "dist-upgrade se queda colgado en \"Configuring grub-pc\"",
"body": "Un prompt de dpkg está preguntando en qué dispositivo(s) instalar GRUB. El wrapper pasa <code>--force-confold</code> para archivos de configuración pero la instalación del cargador de arranque es un prompt aparte. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> para seleccionar todos tus discos de arranque, después OK. Mejor evitarlo seleccionando los discos de arranque una vez con <code>dpkg-reconfigure grub-pc</code> de antemano."
"body": "Si aparece una pregunta interactiva de GRUB, solicita los dispositivos donde instalar el cargador de arranque. La opción <code>--force-confold</code> se aplica a decisiones sobre archivos de configuración, no a esta selección de dispositivos. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> para seleccionar los discos de arranque adecuados y después OK. Puedes configurar esta selección de antemano con <code>dpkg-reconfigure grub-pc</code>."
},
{
"title": "El kernel se actualizó pero los nuevos módulos faltan para un driver fuera del árbol",
"body": "Los drivers que ProxMenux instaló vía DKMS (actualmente <code>nvidia_driver</code> y <code>coral_driver</code>) se recompilan automáticamente al final del upgrade contra la versión del kernel entrante, usando <code>dkms autoinstall -k &lt;newkver&gt;</code> y, si hace falta, un fallback a cada instalador con <code>--auto-reinstall</code>. Confirma con <code>dkms status</code>. Los módulos fuera del árbol de terceros que no están en el registro <code>components_status.json</code> de ProxMenux (drivers de NIC propios, paquetes DKMS instalados a mano, …) siguen necesitando un <code>dkms autoinstall</code> manual — el worker seguro solo toca lo que instaló originalmente."
"body": "Para los controladores gestionados (<code>nvidia_driver</code> y <code>coral_driver</code>), la función ejecuta <code>dkms autoinstall -k &lt;newkver&gt;</code> y puede volver a ejecutar sus instaladores con <code>--auto-reinstall</code>. Comprueba el resultado con <code>dkms status</code>. El comando autoinstall también puede recompilar otros módulos DKMS registrados; la ejecución alternativa de instaladores se limita a las entradas gestionadas de <code>components_status.json</code>. Revisa cualquier módulo de terceros que siga faltando y recompílalo con <code>dkms autoinstall</code> si hace falta."
},
{
"title": "El preguntar antes de reiniciar no apareció pero estoy seguro de que el kernel cambió",
"body": "Tienen que coincidir dos señales (<code>/var/run/reboot-required</code> y <code>linux-image</code> en el log del upgrade). Si el archivo marcador se borró pero el log se está parseando mal, reinicia manualmente con <code>shutdown -r now</code>. Para confirmar que hubo una actualización de kernel: <code>grep linux-image /var/log/apt/history.log</code>."
"title": "No apareció la pregunta de reinicio, pero creo que se instaló un kernel nuevo",
"body": "Las señales son alternativas: <code>/var/run/reboot-required</code> o una diferencia entre el kernel en ejecución y el Proxmox más reciente instalado. El script principal no analiza entradas linux-image del registro de apt. Comprueba la versión en ejecución con <code>uname -r</code> y los paquetes de kernel instalados con <code>dpkg-query</code>. Si hace falta reiniciar, prográmalo o ejecuta <code>shutdown -r now</code> cuando estés listo."
}
]
},
"files": {
"heading": "Archivos implicados",
"code": "scripts/utilities/proxmox_update.sh # este script (wrapper)\nscripts/global/update-pve-safe.sh # único worker seguro (PVE 8 + PVE 9)\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # lee y cambia los repositorios a través de la API de Proxmox\nscripts/global/utils-install-functions.sh # pmx_rebuild_dkms_after_kernel\n/usr/local/share/proxmenux/components_status.json # registro de drivers DKMS gestionados por ProxMenux\n/etc/apt/sources.list.d/proxmox.sources # fuente sin suscripción, escrita por Proxmox al aceptar el cambio\n/var/run/reboot-required # se lee para decidir el prompt de reinicio\n# Fallback de reinicio cuando needrestart no está instalado:\n# dpkg-query -W 'proxmox-kernel-*-pve-signed' 'pve-kernel-*-pve' vs. uname -r"
"code": "scripts/utilities/proxmox_update.sh # this script (wrapper)\nscripts/global/update-pve-safe.sh # single safe worker (PVE 8 + PVE 9)\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\nscripts/global/utils-install-functions.sh # pmx_rebuild_dkms_after_kernel\n/usr/local/share/proxmenux/components_status.json # ProxMenux-managed DKMS driver registry\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted\n/var/run/reboot-required # read to decide on reboot prompt\n# Reboot fallback when needrestart isn't installed:\n# dpkg-query -W 'proxmox-kernel-*-pve-signed' 'pve-kernel-*-pve' vs. uname -r"
},
"related": {
"heading": "Relacionado",
@@ -156,11 +156,11 @@
{
"href": "/docs/utils/system-utils",
"label": "Instalador de utilidades del sistema",
"tail": " — para instalar las herramientas CLI que quieras alrededor de las actualizaciones (htop / btop / ncdu)."
"tail": " — para instalar herramientas CLI útiles durante las actualizaciones (htop / btop / ncdu)."
},
{
"href": "/docs/utils",
"label": "Resumen de Utilidades",
"label": "Resumen de utilidades",
"tail": " — volver al resumen de la sección."
}
]
+16 -21
View File
@@ -1,18 +1,18 @@
{
"meta": {
"title": "Instalador de utilidades del sistema | ProxMenux Documentation",
"description": "Instalador curado para 26 utilidades CLI (htop, btop, iperf3, jq, tmux, ncdu, ...) en Proxmox VE. Selección personalizada o grupos predefinidos (básico, dev, compresión, multiplexores, análisis, red). Usa el flujo canónico ensure_repositories + install_single_package.",
"ogTitle": "Instalador de utilidades del sistema | ProxMenux Documentation",
"ogDescription": "Instala herramientas CLI curadas en Proxmox VE con un clic o con selección personalizada."
"title": "Instalador de utilidades del sistema | Documentación de ProxMenux",
"description": "Instalador de utilidades CLI para Proxmox VE, con 25 paquetes en la lista canónica (htop, btop, iperf3, tmux, ...). Selección personalizada, instalación completa y grupos predefinidos (básico, desarrollo, compresión, multiplexores, análisis y red). Los grupos pueden incluir paquetes adicionales. Usa ensure_repositories + install_single_package.",
"ogTitle": "Instalador de utilidades del sistema | Documentación de ProxMenux",
"ogDescription": "Instala una selección de herramientas CLI en Proxmox VE con un clic o mediante selección personalizada."
},
"header": {
"title": "Instalador de utilidades del sistema",
"description": "Selector curado para 26 utilidades CLI definidas en la lista canónica PROXMENUX_UTILS. Ofrece selección personalizada, instalar todo, seis grupos predefinidos y una comprobación de verificación de instalaciones. Usa el par compartido ensure_repositories() + install_single_package() para que la configuración de repos y el feedback por paquete se mantengan consistentes en todo el proyecto.",
"description": "Selector de las 25 utilidades CLI de la lista canónica PROXMENUX_UTILS. Ofrece selección personalizada, instalación completa, seis grupos predefinidos y comprobación de instalaciones. Los grupos pueden incluir herramientas ajenas a la lista canónica. Usa las funciones compartidas ensure_repositories() + install_single_package() para gestionar los repositorios y los mensajes de cada paquete de forma coherente.",
"section": "Utilidades"
},
"info": {
"title": "Qué hace",
"body": "Instala herramientas CLI de una lista curada de 26 paquetes. Cada instalación pasa por el mismo flujo canónico: <code>ensure_repositories</code> comprueba que el host tiene un repositorio de Proxmox utilizable para la versión mayor de PVE en ejecución, después <code>install_single_package</code> ejecuta la instalación y verifica que el comando resultante esté en PATH."
"body": "Instala herramientas CLI de una lista de 25 paquetes. Cada instalación usa el mismo proceso: <code>ensure_repositories</code> comprueba que el host tenga un repositorio Proxmox utilizable para la versión mayor de PVE en ejecución; después <code>install_single_package</code> instala el paquete y comprueba que su comando esté en PATH."
},
"opening": {
"heading": "Abrir el instalador",
@@ -26,7 +26,7 @@
"rows": [
{
"option": "1. Selección personalizada",
"behaviourRich": "Checklist de diálogo con los 26 paquetes. Usa SPACE para alternar, ENTER para confirmar; solo se instalan los seleccionados."
"behaviourRich": "Lista de selección de los 25 paquetes. Usa SPACE para marcar y ENTER para confirmar; solo se instalan los paquetes seleccionados."
},
{
"option": "2. Instalar TODAS las utilidades",
@@ -63,7 +63,7 @@
]
},
"packages": {
"heading": "Los 26 paquetes",
"heading": "Los 25 paquetes",
"intro": "Definidos en el compartido <code>scripts/global/utils-install-functions.sh</code> como <code>PROXMENUX_UTILS</code> (formato: <code>package:verify_command:description</code>). Otros scripts de ProxMenux (p. ej. los lanzadores de monitorización de red para iftop / iptraf-ng / iperf3) reutilizan entradas de esta lista para que paquete + comando de verificación se mantengan sincronizados.",
"headerPackage": "Paquete",
"headerVerify": "Comando de verificación",
@@ -193,11 +193,6 @@
"package": "zip",
"verify": "zip",
"description": "Crear archivos ZIP"
},
{
"package": "libguestfs-tools",
"verify": "virt-filesystems",
"description": "Utilidades de disco de VM"
}
]
},
@@ -209,11 +204,11 @@
],
"verifyIntro": "Tras instalar, el comando de verificación se comprueba con <code>command -v \"$verify_cmd\"</code>. Tres desenlaces:",
"verifyOutcomes": [
"<strong>0 (éxito):</strong> comando disponible, paquete contado como <em>Successful</em>.",
"<strong>1 (fallido):</strong> apt falló, contado como <em>Failed</em>.",
"<strong>2 (advertencia):</strong> apt tuvo éxito pero el comando aún no está en PATH (refresco de hash pendiente) — contado como <em>With warnings</em>."
"<strong>0 (correcto):</strong> comando disponible; el paquete se cuenta como <em>Correcto</em>.",
"<strong>1 (fallo):</strong> apt ha fallado; se cuenta como <em>Fallido</em>.",
"<strong>2 (advertencia):</strong> apt ha terminado correctamente, pero el comando esperado no se encuentra en PATH; se cuenta como <em>Con advertencias</em>."
],
"summary": "Al final de una instalación de grupo / personalizada, un diálogo de resumen muestra los conteos de <em>Successful / With warnings / Failed</em>."
"summary": "Al terminar una instalación de grupo o personalizada, un diálogo muestra los recuentos de <em>Correctos / Con advertencias / Fallidos</em>."
},
"verify": {
"heading": "Verificar instalaciones",
@@ -223,16 +218,16 @@
},
"troubleshoot": {
"heading": "Solución de problemas",
"reposTitle": "\"Failed to configure repositories. Installation aborted.\"",
"reposTitle": "«No se han podido configurar los repositorios. Instalación cancelada».",
"reposBody": "La comprobación de repositorios no se superó: se rechazó el cambio al repositorio sin suscripción, no se pudo leer el estado de la suscripción o una entrada de repositorio requiere atención. El mensaje impreso justo encima indica la causa. Los repositorios se listan en <em>Nodo → Actualizaciones → Repositorios</em>, y <code>apt-get update</code> desde una consola muestra el error que reporta apt.",
"warningsTitle": "Un paquete se reporta como \"With warnings\" pero el comando funciona tras cerrar el menú",
"warningsBody": "Esperado. Tras <code>apt-get install</code>, el nuevo binario está en disco pero la caché de PATH del shell actual (<code>hash -t</code>) aún no lo sabe. ProxMenux ejecuta <code>hash -r</code> tras cada instalación, pero en algunos shells el refresco solo surte efecto en el siguiente prompt. Abre un nuevo shell y el comando funcionará.",
"warningsBody": "Después de <code>apt-get install</code>, la función ejecuta <code>hash -r</code>, espera brevemente y comprueba el comando esperado con <code>command -v</code>. Una advertencia indica que esa comprobación sigue fallando, pero no identifica la causa. Prueba con una sesión de shell nueva y comprueba la instalación del paquete y PATH si el comando sigue faltando.",
"hangsTitle": "Un apt install se queda colgado",
"hangsBody": "Lo más probable es que un prompt de debconf esté bloqueado detrás de la salida silenciada. El script envuelve todas las llamadas de apt con <code>DEBIAN_FRONTEND=noninteractive</code>, que normalmente suprime los prompts, pero algunos paquetes aún requieren entrada del usuario. Cancela con <kbd>Ctrl</kbd>+<kbd>C</kbd>, ejecuta <code>apt-get install -y &lt;pkg&gt;</code> manualmente desde un shell para ver el prompt y decidir."
},
"files": {
"heading": "Archivos implicados",
"code": "scripts/utilities/system_utils.sh # este script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # lee y cambia los repositorios a través de la API de Proxmox\n/etc/apt/sources.list.d/proxmox.sources # fuente sin suscripción, escrita por Proxmox al aceptar el cambio"
"code": "scripts/utilities/system_utils.sh # this script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted"
},
"related": {
"heading": "Relacionado",
@@ -249,7 +244,7 @@
},
{
"href": "/docs/utils",
"label": "Resumen de Utilidades",
"label": "Resumen de utilidades",
"tailRich": " — volver al resumen de la sección."
}
]
File diff suppressed because one or more lines are too long
@@ -1,19 +1,19 @@
{
"meta": {
"title": "UUP Dump ISO Creator | ProxMenux Documentation",
"title": "Creador de ISO UUP Dump | Documentación de ProxMenux",
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox usando el UUP Dump ISO Creator de ProxMenux. Automatiza la instalación de dependencias, descarga y conversión de archivos UUP en una ISO arrancable lista para crear una VM.",
"ogTitle": "UUP Dump ISO Creator | ProxMenux Documentation",
"ogTitle": "Creador de ISO UUP Dump | Documentación de ProxMenux",
"ogDescription": "Crea una ISO de Windows actualizada desde UUP Dump usando ProxMenux. Dependencias, descarga y conversión totalmente automatizadas.",
"ogImageAlt": "UUP Dump ISO Creator de ProxMenux"
},
"header": {
"title": "UUP Dump ISO Creator",
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox usando UUP Dump. ProxMenux se encarga de las dependencias, descarga los archivos UUP en paralelo, ejecuta el conversor oficial y deja la ISO final en el almacenamiento de ISOs de Proxmox — lista para asociar a una nueva VM Windows.",
"title": "Creador de ISO UUP Dump",
"description": "Crea una ISO de instalación de Windows actualizada en tu host Proxmox con UUP Dump. ProxMenux gestiona las dependencias, descarga los archivos UUP en paralelo, ejecuta el conversor de UUP Dump y mueve la ISO al directorio de salida elegido, que por defecto es el almacenamiento de ISOs de Proxmox detectado.",
"section": "Utilidades"
},
"intro": {
"title": "Qué hace este script",
"body": "Tú aportas una URL de UUP Dump (la que uupdump.net genera tras elegir build, idioma y edición) y el script hace el resto: instala las dependencias que falten, descarga el conversor de UUP Dump, descarga cada archivo de payload UUP con aria2, ensambla una ISO arrancable de Windows y la mueve al almacenamiento de ISOs de Proxmox para que el creador de VM pueda montarla en el primer arranque."
"body": "Proporciona una URL generada por uupdump.net tras elegir una compilación, un idioma y una edición. El script instala las dependencias que falten, descarga el conversor de UUP Dump y los archivos UUP, crea una ISO arrancable de Windows y la mueve al directorio de salida elegido. Como destino predeterminado ofrece el almacenamiento de ISOs de Proxmox detectado."
},
"hero": {
"imageAlt": "Entrada UUP Dump ISO Creator en ProxMenux",
@@ -61,7 +61,7 @@
},
{
"pkg": "chntpw",
"roleRich": "Ajusta hives del registro de Windows durante la construcción."
"roleRich": "Modifica las secciones del registro de Windows durante la creación."
}
],
"manualIntro": "Equivalente manual — si alguna vez necesitas instalarlas tú mismo:",
@@ -73,22 +73,22 @@
"Detecta el almacenamiento de ISOs de Proxmox (vía <code>pvesm status -content iso</code>) o recae en <code>/var/lib/vz/template/iso</code>.",
"Pregunta por una carpeta base para archivos temporales (por defecto <code>/root/uup-temp</code>).",
"Descarga el conversor de UUP Dump desde <code>git.uupdump.net</code>.",
"Parsea <code>id</code>, <code>pack</code> y <code>edition</code> de la URL que pegas.",
"Extrae <code>id</code>, <code>pack</code> y <code>edition</code> de la URL pegada.",
"Llama a <code>https://uupdump.net/get.php?…&aria2=2</code> para generar una lista de descargas de aria2.",
"Descarga cada payload UUP en <code>UUPs/</code> con aria2 (paralelo, reanudable).",
"Ejecuta <code>convert.sh wim UUPs 1</code> del conversor para producir la ISO final.",
"Mueve la ISO al almacenamiento de ISOs de Proxmox y limpia los archivos temporales."
"Mueve la ISO al directorio de salida elegido y limpia los archivos temporales."
]
},
"aria2": {
"heading": "Flags de descarga de Aria2 usados",
"heading": "Opciones de descarga de aria2 utilizadas",
"code": "aria2c --no-conf --console-log-level=warn --log-level=info \\\n --log=aria2_download.log \\\n -x16 -s16 -j5 -c -R \\\n -d\"$destDir\" -i\"$tempScript\"",
"flags": [
"<code>-x16</code> — hasta 16 conexiones por servidor.",
"<code>-s16</code> — divide cada archivo en 16 segmentos.",
"<code>-j5</code> — 5 archivos descargados en paralelo.",
"<code>-c</code> — reanuda descargas parciales.",
"<code>-R</code> — reintenta tras fallos."
"<code>-R</code> — aplica al archivo descargado la fecha y hora del archivo remoto, si están disponibles."
],
"runtime": "El tiempo típico ronda los 10 minutos, dominado por la velocidad de tu enlace de internet y la carga del mirror de UUP Dump."
},
@@ -147,15 +147,15 @@
"body": "Pega la URL en el diálogo de entrada. El script valida que los tres parámetros requeridos están presentes; si falta alguno, aborta limpiamente."
},
{
"title": "Espera a que termine la construcción",
"title": "Espera a que termine la creación",
"img": "/iso-creator/end-uupdump-iso-creator.png",
"caption": "Construcción terminada — la ISO está lista en el almacenamiento de ISOs de Proxmox",
"bodyRich": "La consola muestra el progreso de aria2 y luego la salida del conversor. Cuando termina, la ISO aterriza en el almacenamiento de ISOs de Proxmox detectado y está lista para elegirse desde <strong>Create VM → System Windows → Install with ISO from UUP Dump</strong>."
"caption": "Creación terminada: la ISO está lista en el almacenamiento de ISOs de Proxmox",
"bodyRich": "La consola muestra el progreso de aria2 y después la salida del conversor. La ISO terminada se mueve al directorio de salida elegido. Si está en un almacenamiento de ISOs configurado en Proxmox, se puede seleccionar desde <strong>Create VM → System Windows → Install with ISO from UUP Dump</strong>."
}
]
},
"tempFiles": {
"title": "Archivos temporales",
"body": "Por defecto, los archivos temporales viven bajo <code>/root/uup-temp</code> (<code>uup-temp/</code> para descargas y <code>uup-converter/</code> para el script conversor). El creador limpia ambos tras una ejecución exitosa. En caso de fallo igual limpia y te devuelve al menú para que un reintento empiece desde cero."
"body": "La carpeta temporal predeterminada es <code>/root/uup-temp</code>, con las descargas en <code>UUPs/</code> y el conversor en <code>converter/</code>. Si eliges otra ruta base, se crea un subdirectorio de sesión independiente. Las ramas de creación correcta y de ausencia de ISO eliminan la sesión temporal. Los fallos o las cancelaciones anteriores pueden dejar archivos temporales."
}
}