mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-27 17:16:39 +00:00
fix: improve host diagnostics, storage handling, and maintenance workflows
- add zero-downtime Proxmox TLS certificate refresh from the Security panel (#307) - classify storage availability independently from missing capacity information (#309) - update ZFS ARC sizing and safely reconcile conflicting module configurations - preserve and restore migrated ZFS settings without overwriting later administrator changes - stop memory optimization from forcing the kernel overcommit policy - correlate multi-line OOM events and identify the affected LXC, cgroup limits, swap and killed process - add selectable Bash prompt path styles and clearer shell activation guidance - protect technical names during automatic translation and correct localized terminology - update the Coral and VM/LXC Apps and Updates documentation, translations and screenshots
This commit is contained in:
@@ -105,6 +105,18 @@
|
||||
"imageAlt": "Resumen final + prompt de reinicio después de una instalación PCIe"
|
||||
}
|
||||
},
|
||||
"legacyCleanup": {
|
||||
"heading": "Limpieza de gasket-dkms antiguo en hosts con Coral USB",
|
||||
"intro": "Si el host <strong>no tiene ninguna Coral PCIe / M.2 detectada</strong>, pero conserva una instalación anterior de <code>gasket-dkms</code>, ProxMenux identifica ese estado por separado y ofrece una limpieza opcional. No se elimina nada sin confirmación.",
|
||||
"items": [
|
||||
"Si hay una Coral PCIe / M.2 presente, esta limpieza nunca se ofrece; se utiliza la ruta normal de reconstrucción DKMS.",
|
||||
"La limpieza purga <code>gasket-dkms</code>, elimina registros DKMS y árboles de código gasket residuales, y repara cualquier estado pendiente de <code>dpkg</code> o APT.",
|
||||
"Los paquetes del runtime USB <code>libedgetpu1-std</code> y <code>libedgetpu1-max</code> no se modifican, por lo que una Coral USB conserva su runtime.",
|
||||
"Antes de indicar que ha terminado correctamente, el script verifica que el paquete antiguo ya no existe y que el gestor de paquetes está en buen estado."
|
||||
],
|
||||
"warningTitle": "Confirma primero el hardware",
|
||||
"warningBody": "Si puede haber una Coral PCIe / M.2 instalada pero no está siendo detectada, cancela la limpieza y comprueba la tarjeta, la ranura y la configuración del firmware antes de continuar."
|
||||
},
|
||||
"reinstallUninstall": {
|
||||
"heading": "Reinstalar o desinstalar",
|
||||
"intro": "Ejecutar el instalador en un host donde Coral ya está instalada (PCIe vía <code>gasket-dkms</code>, USB vía <code>libedgetpu1-std</code>/<code>libedgetpu1-max</code>, o ambos) ya no cae directamente en otra instalación fresca. En su lugar, ProxMenux detecta el setup existente y muestra un menú de acciones para que decidas qué hacer.",
|
||||
|
||||
@@ -1,281 +1,183 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "App — registrar y supervisar aplicaciones de un LXC | ProxMenux",
|
||||
"description": "Indica qué aplicaciones se ejecutan dentro de un contenedor LXC desde ProxMenux Monitor y sigue opcionalmente su versión."
|
||||
"title": "Pestaña App de LXC: detección, enlaces y versiones | ProxMenux",
|
||||
"description": "Detecta y registra aplicaciones LXC, crea enlaces web y, opcionalmente, sigue las versiones instalada y disponible."
|
||||
},
|
||||
"header": {
|
||||
"title": "App — registrar y supervisar aplicaciones de un LXC",
|
||||
"description": "Registra las aplicaciones que corren dentro del contenedor, añade accesos web rápidos y, opcionalmente, haz seguimiento de la versión instalada frente a la publicada."
|
||||
"title": "Pestaña App de LXC: detección, enlaces y versiones",
|
||||
"description": "Asigna a cada aplicación LXC una identidad persistente, acceso web y datos opcionales de versión sin vincular el registro con la actualización."
|
||||
},
|
||||
"intro": {
|
||||
"p1": "La pestaña <strong>App</strong> permite indicar qué aplicaciones se ejecutan dentro de un contenedor LXC. Cada aplicación registrada puede mostrar un nombre, un icono, uno o varios accesos web y, de forma opcional, el estado de su versión.",
|
||||
"p2": "Un mismo LXC puede tener varias aplicaciones registradas. Por ejemplo, un servicio principal puede compartir el contenedor con una interfaz de administración, una API o cualquier otra aplicación accesible desde un puerto distinto.",
|
||||
"p3": "Registrar una aplicación no la modifica ni la actualiza. Esta pestaña se ocupa de identificarla y mostrar su información. Los métodos que <em>ejecutan</em> una actualización se configuran y utilizan desde la <link>pestaña Updates</link>."
|
||||
"p1": "La pestaña <strong>App</strong> registra qué aplicaciones pertenecen a un LXC. Un registro puede contener solo un nombre y un enlace web o incluir también un detector de la versión instalada y una fuente para la versión disponible.",
|
||||
"p2": "El procedimiento que modifica el software se configura por separado en la <link>pestaña Actualizaciones</link>. Guardar una app nunca ejecuta un instalador ni un actualizador.",
|
||||
"callout": "El registro, el seguimiento de versiones y la actualización son tres capacidades independientes. Cada una puede utilizarse sin exigir las otras dos."
|
||||
},
|
||||
"whatYouGet": {
|
||||
"heading": "Qué se obtiene al registrar una aplicación",
|
||||
"lead": "Según los datos que se configuren, ProxMenux puede ofrecer:",
|
||||
"overview": {
|
||||
"heading": "Qué puede contener un registro",
|
||||
"lead": "Un registro guardado puede incluir:",
|
||||
"items": [
|
||||
"Un acceso directo a la interfaz web de la aplicación.",
|
||||
"Varios enlaces cuando el LXC expone más de un servicio o puerto.",
|
||||
"La versión instalada actualmente.",
|
||||
"La última versión publicada por el proyecto.",
|
||||
"Un aviso cuando hay una versión más reciente.",
|
||||
"Notificaciones de nuevas versiones, si están habilitadas en los ajustes del monitor."
|
||||
"Un nombre visible y un logotipo adaptado al tema.",
|
||||
"Uno o varios enlaces web creados con la dirección del LXC, el esquema y el puerto guardado.",
|
||||
"Un detector opcional de la versión instalada dentro del LXC.",
|
||||
"Una fuente opcional de GitHub, HTTP JSON o Docker Hub para obtener la última versión disponible.",
|
||||
"Preferencias de notificación y de inclusión en el contador de actualizaciones por aplicación.",
|
||||
"Una sección correspondiente en la pestaña Actualizaciones, aunque el seguimiento esté desactivado."
|
||||
]
|
||||
},
|
||||
"discovery": {
|
||||
"heading": "Detección en caché y Buscar aplicaciones",
|
||||
"lead": "Las aplicaciones sugeridas forman parte de la caché del modal de cada LXC. El escaneo de arranque las prepara en segundo plano para que la pestaña App pueda mostrar inmediatamente los resultados almacenados.",
|
||||
"items": [
|
||||
"Abrir la pestaña App <strong>no</strong> inicia otro escaneo del catálogo ni consulta repetidamente el LXC.",
|
||||
"<strong>Buscar aplicaciones</strong> ejecuta expresamente una detección nueva solo para ese LXC. Se utiliza después de instalar software mientras ProxMenux ya está en ejecución.",
|
||||
"La lista anterior permanece visible durante la búsqueda. Las nuevas coincidencias se añaden al finalizar.",
|
||||
"Si no se encuentra ninguna coincidencia nueva, el resultado aparece junto a las acciones y <strong>Registrar aplicación</strong> continúa disponible para introducirla manualmente.",
|
||||
"Guardar, eliminar o restaurar una app actualiza la misma caché inmediatamente. El arranque o la restauración de un LXC actualiza únicamente ese sistema mediante su evento de ciclo de vida existente."
|
||||
],
|
||||
"trailing": "El seguimiento de versiones es opcional. También es posible registrar una aplicación únicamente para disponer de su nombre, icono y enlaces web.",
|
||||
"callout": "El aviso <strong>Update available</strong> indica que ProxMenux ha encontrado una diferencia entre la versión instalada y la última versión publicada. No significa necesariamente que ya conozca el procedimiento para actualizar la aplicación."
|
||||
"callout": "Una sugerencia no es un registro. Permanece en modo de solo lectura hasta que se pulsa <strong>Registrar</strong> y se guarda el formulario."
|
||||
},
|
||||
"firstOpening": {
|
||||
"heading": "Primera apertura de la pestaña App",
|
||||
"p1": "Al abrir la pestaña, ProxMenux intenta reconocer las aplicaciones del contenedor utilizando la información disponible, como el instalador con el que se creó el LXC, los servicios detectados y los puertos que están escuchando.",
|
||||
"p2": "Si encuentra coincidencias, las presenta como sugerencias. Revise siempre la propuesta antes de guardarla: la detección facilita el registro, pero no puede garantizar que cada servicio encontrado corresponda exactamente con la aplicación esperada."
|
||||
},
|
||||
"figures": {
|
||||
"f01": {
|
||||
"alt": "Pestaña App vacía mostrando sugerencias detectadas",
|
||||
"caption": "Estado inicial sin aplicaciones registradas, con una o varias sugerencias detectadas"
|
||||
},
|
||||
"f02": {
|
||||
"alt": "Búsqueda en el catálogo mostrando coincidencias para el nombre introducido",
|
||||
"caption": "Búsqueda en el catálogo y selección de una coincidencia"
|
||||
},
|
||||
"f03": {
|
||||
"alt": "Formulario de registro de aplicación con nombre, icono y dos enlaces web",
|
||||
"caption": "Formulario básico con nombre, icono y dos enlaces web"
|
||||
},
|
||||
"f04": {
|
||||
"alt": "LXC con Docmost y Redis registrados como aplicaciones separadas, cada una con su propio estado de versión",
|
||||
"caption": "Dos aplicaciones en el mismo LXC — una registrada con file y otra con dpkg, cada una con su propio estado de versión"
|
||||
},
|
||||
"f05": {
|
||||
"alt": "Opciones avanzadas de seguimiento mostrando el método de versión instalada y la fuente upstream",
|
||||
"caption": "Opciones avanzadas con el método de versión instalada y la fuente de la última versión"
|
||||
},
|
||||
"f06": {
|
||||
"alt": "Aplicación registrada mostrando la versión instalada, la última versión upstream y un indicador de Update available",
|
||||
"caption": "Una aplicación cableada muestra Installed, Latest upstream, la flecha de Update available cuando difieren y el enlace web"
|
||||
},
|
||||
"f07": {
|
||||
"alt": "Aplicación registrada mínima mostrando solo su nombre y un único enlace web, sin seguimiento de versión",
|
||||
"caption": "Registro solo con enlace — un nombre y un enlace web, sin seguimiento de versión"
|
||||
}
|
||||
},
|
||||
"registerSuggested": {
|
||||
"heading": "Registrar una aplicación sugerida",
|
||||
"registration": {
|
||||
"heading": "Registrar una aplicación",
|
||||
"lead": "Las sugerencias detectadas y los registros manuales utilizan el mismo editor:",
|
||||
"steps": [
|
||||
"Abra el LXC desde la tarjeta <strong>VMs & LXCs</strong>.",
|
||||
"Seleccione la pestaña <strong>App</strong>.",
|
||||
"Localice la aplicación sugerida.",
|
||||
"Pulse <strong>Register</strong>.",
|
||||
"Compruebe el nombre, los enlaces y los datos rellenados automáticamente.",
|
||||
"Guarde la aplicación."
|
||||
],
|
||||
"trailing": "Si la sugerencia no corresponde con ningún servicio que quiera registrar, puede ocultarla. Las sugerencias ocultas se pueden recuperar más adelante desde <strong>Register a different app</strong>."
|
||||
"Pulsa <strong>Registrar</strong> en una sugerencia o <strong>Registrar aplicación</strong> para elegir una entrada del catálogo o escribir un nombre personalizado.",
|
||||
"Revisa el nombre y el logotipo propuestos por el catálogo.",
|
||||
"Añade los enlaces web necesarios. Los puertos en escucha se ofrecen como accesos rápidos, pero ninguno se guarda automáticamente.",
|
||||
"Deja <strong>Seguir versión disponible</strong> desactivado para un registro de solo enlace o actívalo y revisa el detector instalado y la fuente disponible.",
|
||||
"Utiliza <strong>Probar detector</strong> cuando el seguimiento esté activado y guarda el registro.",
|
||||
"Pulsa <strong>Hecho</strong> al terminar la edición. Las pestañas App y Actualizaciones reutilizan el registro actualizado de la caché."
|
||||
]
|
||||
},
|
||||
"catalog": {
|
||||
"heading": "Usar el catálogo",
|
||||
"p1": "El catálogo ayuda a localizar aplicaciones conocidas y a rellenar algunos de sus datos. Al escribir en el campo del nombre, ProxMenux muestra las coincidencias más cercanas. Al seleccionar una de ellas puede completar automáticamente el nombre, el icono, los puertos habituales y, cuando existe una configuración comprobada, las opciones de seguimiento de versiones.",
|
||||
"p2": "El catálogo es una ayuda, no una lista completa de todo el software que puede ejecutarse en un LXC. Algunas aplicaciones solo incluyen información básica y otras disponen también de un método preparado para consultar su versión.",
|
||||
"p3": "Si la aplicación no aparece, puede registrarla manualmente."
|
||||
"heading": "Registro asistido por el catálogo",
|
||||
"lead": "El catálogo proporciona valores iniciales, pero el registro guardado sigue siendo editable.",
|
||||
"items": [
|
||||
"Los resultados pueden rellenar el nombre canónico, el logotipo y los puertos web habituales.",
|
||||
"Los detectores conocidos se basan en paquetes, binarios, archivos, distribuciones Python, etiquetas OCI o comandos reales, no en una suposición universal como <code>/root/.app</code>.",
|
||||
"Las correcciones verificadas en instalaciones reales tienen prioridad cuando una ruta difiere de los datos del instalador.",
|
||||
"Los marcadores de Proxmox VE Helper-Scripts, como <code>/root/.slug</code>, se mantienen como una señal de compatibilidad para instalaciones recientes, pero no son el único detector.",
|
||||
"Todos los valores propuestos se pueden editar antes de guardar para cubrir instaladores oficiales e instalaciones manuales."
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Registrar una aplicación manualmente",
|
||||
"p1": "Use <strong>Register a different app</strong> cuando todavía no haya aplicaciones registradas. Si el LXC ya contiene alguna, use <strong>Add another application</strong>.",
|
||||
"p2": "La configuración básica solo necesita un nombre. Los demás campos se añaden según la información que quiera mostrar.",
|
||||
"nameHeading": "Nombre e icono",
|
||||
"nameBody": "Introduzca un nombre que permita reconocer la aplicación fácilmente. El icono es opcional y puede indicarse mediante una URL.",
|
||||
"linksHeading": "Enlaces web y puertos",
|
||||
"linksLead": "Cada enlace puede tener:",
|
||||
"linksItems": [
|
||||
"Protocolo <code>http</code> o <code>https</code>.",
|
||||
"Puerto.",
|
||||
"Descripción, como <em>Web UI</em>, <em>Administration</em> o <em>API</em>.",
|
||||
"Un icono propio opcional."
|
||||
"docker": {
|
||||
"heading": "Representación de los LXC con Docker",
|
||||
"lead": "En un LXC cuya plataforma principal es Docker, <strong>Docker</strong> es la aplicación que se registra a nivel de LXC.",
|
||||
"items": [
|
||||
"Una carga contenerizada como Portainer, Frigate o Vaultwarden no se sugiere como aplicación nativa independiente del LXC.",
|
||||
"Los servicios Docker en ejecución con puertos TCP publicados aparecen dentro del editor de Docker como enlaces web opcionales.",
|
||||
"Cada enlace sugerido muestra el servicio, el puerto del host y el puerto del contenedor. Solo deben guardarse los enlaces que ofrecen una interfaz web.",
|
||||
"Se usa el logotipo general de Docker cuando un enlace no tiene uno específico. El logotipo del enlace tiene prioridad cuando se configura.",
|
||||
"Después de registrar Docker, Docker Engine y las actualizaciones de imágenes aparecen juntas en su sección de Actualizaciones."
|
||||
],
|
||||
"linksTrailing": "ProxMenux combina el protocolo y el puerto con la dirección IP del LXC para crear el acceso web. Añada tantos enlaces como necesite si una aplicación usa varias interfaces o si el contenedor aloja varios servicios relacionados.",
|
||||
"linksConfirm": "Antes de guardar, compruebe que el puerto corresponde realmente con el servicio y que puede acceder a él desde el navegador."
|
||||
"callout": "Esta estructura evita que una carga de Docker parezca software instalado directamente en el LXC y conserva los accesos rápidos a sus interfaces."
|
||||
},
|
||||
"multiple": {
|
||||
"heading": "Registrar varias aplicaciones en el mismo LXC",
|
||||
"intro": "Después de guardar la primera aplicación, pulse <strong>Add another application</strong> y repita el proceso. Cada registro mantiene de forma independiente sus enlaces, su método de detección y su estado de versión.",
|
||||
"usefulLead": "Esto resulta útil cuando:",
|
||||
"usefulItems": [
|
||||
"Un LXC ejecuta varios servicios independientes.",
|
||||
"Una instalación incluye una aplicación principal y herramientas auxiliares.",
|
||||
"Cada servicio tiene su propia interfaz web o su propio ciclo de versiones."
|
||||
],
|
||||
"dontGroup": "No agrupe bajo un único registro programas que se publican y actualizan por separado. Registrarlos individualmente permite saber con claridad cuál tiene una nueva versión y asignarle su propio método de actualización desde la pestaña Updates."
|
||||
"webLinks": {
|
||||
"heading": "Enlaces web y logotipos",
|
||||
"lead": "Los enlaces web funcionan con o sin seguimiento de versiones.",
|
||||
"items": [
|
||||
"Cada enlace guarda un esquema, un puerto, una descripción opcional y una URL de logotipo opcional.",
|
||||
"La URL mostrada utiliza la dirección actual ya detectada para el LXC; esa dirección no se duplica en cada registro.",
|
||||
"Un enlace sin logotipo propio utiliza el logotipo general de la app.",
|
||||
"Varios enlaces pueden representar una interfaz de administración, una API, una interfaz secundaria u otro punto final de la misma app.",
|
||||
"Una app guardada solo con enlaces también aparece en Actualizaciones, donde se puede configurar posteriormente un actualizador personalizado."
|
||||
]
|
||||
},
|
||||
"tracking": {
|
||||
"heading": "Seguimiento de versiones",
|
||||
"intro": "Abra las opciones avanzadas del formulario para configurar el seguimiento. Se necesitan dos datos diferentes:",
|
||||
"ingredients": [
|
||||
"<strong>Versión instalada</strong>: cómo consultar la versión que está ejecutándose dentro del LXC.",
|
||||
"<strong>Última versión disponible</strong>: dónde consultar la versión publicada por el proyecto."
|
||||
"heading": "Seguimiento opcional de versiones",
|
||||
"lead": "El seguimiento combina un detector de la versión instalada con una fuente opcional para la versión disponible. Ambos lados se comprueban de forma independiente.",
|
||||
"colMethod": "Método de versión instalada",
|
||||
"colUse": "Uso",
|
||||
"detectorRows": [
|
||||
{ "method": "dpkg / apk", "use": "Lee la versión del paquete instalado desde los metadatos de Debian, Ubuntu o Alpine." },
|
||||
{ "method": "binary", "use": "Ejecuta una ruta binaria absoluta o un nombre de comando con sus parámetros de versión." },
|
||||
{ "method": "file + regex", "use": "Lee un archivo real y extrae la versión mediante un grupo de captura." },
|
||||
{ "method": "docker label / docker exec", "use": "Lee una etiqueta de versión OCI o ejecuta un comando de versión dentro de un contenedor Docker." },
|
||||
{ "method": "python distribution", "use": "Usa importlib.metadata mediante el intérprete de Python seleccionado." },
|
||||
{ "method": "command", "use": "Ejecuta un comando avanzado en formato argv, sin shell, y extrae la versión de su salida." },
|
||||
{ "method": "manual", "use": "Guarda una versión introducida manualmente; debe cambiarse después de actualizar la app." }
|
||||
],
|
||||
"trailing": "Si solo se configura la versión instalada, ProxMenux puede mostrarla, pero no puede determinar si existe una actualización. Para mostrar <strong>Update available</strong>, debe poder obtener y comparar ambos valores.",
|
||||
"methodsHeading": "Métodos para obtener la versión instalada",
|
||||
"methodsLead": "Seleccione el método que corresponda con la forma en que se instaló la aplicación:",
|
||||
"methodsTable": {
|
||||
"colMethod": "Método",
|
||||
"colWhen": "Cuándo utilizarlo",
|
||||
"rows": [
|
||||
{ "method": "None (link only)", "when": "Solo se necesitan el nombre y los accesos web." },
|
||||
{ "method": "dpkg package", "when": "La aplicación está instalada como paquete de Debian o Ubuntu." },
|
||||
{ "method": "apk package", "when": "La aplicación está instalada como paquete de Alpine." },
|
||||
{ "method": "Binary", "when": "Un ejecutable devuelve su versión mediante un argumento como --version." },
|
||||
{ "method": "File + regex", "when": "La versión está escrita dentro de un archivo." },
|
||||
{ "method": "Python distribution", "when": "La aplicación está instalada como un paquete de Python." },
|
||||
{ "method": "Command", "when": "Es necesario ejecutar un comando específico para obtener la versión." },
|
||||
{ "method": "Manual", "when": "El usuario introduce la versión instalada." }
|
||||
]
|
||||
},
|
||||
"methodsTrailing": "Utilice el método más directo y estable. Si la aplicación procede de un paquete del sistema, es preferible consultar ese paquete antes que analizar la salida de un comando genérico.",
|
||||
"commandHeading": "El método Command no actualiza la aplicación",
|
||||
"commandP1": "En este formulario, <strong>Command</strong> sirve exclusivamente para leer la versión instalada. Sus argumentos se introducen separados por comas y ProxMenux los ejecuta directamente, sin intérprete de shell.",
|
||||
"commandP2": "Por ejemplo, si la consulta normal es:",
|
||||
"commandExample1": "myapp version --short",
|
||||
"commandP3": "Los argumentos del formulario serían:",
|
||||
"commandExample2": "myapp, version, --short",
|
||||
"commandP4": "No utilice aquí operadores como <code>&&</code>, redirecciones o tuberías. Si necesita un procedimiento completo para actualizar la aplicación, se configura después en la pestaña Updates.",
|
||||
"sourceHeading": "Fuente de la última versión disponible",
|
||||
"sourceLead": "ProxMenux puede consultar una fuente pública del proyecto, por ejemplo:",
|
||||
"sourceItems": [
|
||||
"Las releases o tags de un repositorio de GitHub.",
|
||||
"Un endpoint HTTP que devuelva la versión dentro de una respuesta JSON."
|
||||
"sourcesHeading": "Fuentes para la versión disponible",
|
||||
"sources": [
|
||||
"<strong>Repositorio de GitHub</strong>: último lanzamiento o etiqueta de un repositorio público <code>propietario/nombre</code>.",
|
||||
"<strong>HTTP JSON</strong>: un punto final público y una ruta como <code>data.version</code> o <code>releases[0].tag_name</code>.",
|
||||
"<strong>Docker Hub</strong>: etiquetas versionadas filtradas con una expresión regular. La vista previa muestra etiquetas reales coincidentes antes de guardar.",
|
||||
"Las etiquetas móviles como <code>latest</code>, <code>stable</code> o <code>lts</code> no contienen una versión. Esas imágenes se siguen por digest desde las actualizaciones de imágenes Docker."
|
||||
],
|
||||
"sourceTrailing": "Use siempre la fuente oficial de la aplicación. Un repositorio derivado o un endpoint de terceros puede anunciar versiones que no correspondan con la instalación del LXC.",
|
||||
"regexHeading": "Expresiones regulares de versión",
|
||||
"regexIntro": "Una expresión regular, o <strong>regex</strong>, sirve para localizar el número de versión dentro de un texto más largo. La mayoría de los proyectos no publican una regex preparada: el usuario debe construirla a partir de una salida real del programa o del nombre de una release.",
|
||||
"regexOptional": "No siempre es necesaria. Déjela vacía primero si la fuente ya devuelve solo un valor limpio como <code>2.14.3</code>. Añádala únicamente cuando ProxMenux necesite separar la versión de otras palabras, símbolos o números.",
|
||||
"regexTwoHeading": "Hay dos regex diferentes",
|
||||
"regexTwoItems": [
|
||||
"<strong>Installed version regex</strong> se aplica a la salida obtenida dentro del LXC.",
|
||||
"<strong>Version regex</strong> o <strong>Tag regex</strong> se aplica al nombre de la versión publicada por la fuente externa."
|
||||
"regexHeading": "Expresión de captura",
|
||||
"regexLead": "La expresión regular del detector debe devolver la versión en su <strong>primer grupo de captura</strong>.",
|
||||
"regexRules": [
|
||||
"Haz coincidir el texto emitido por el binario, archivo, comando o fuente de etiquetas seleccionada; no supongas una ruta genérica.",
|
||||
"Escapa los puntos literales como <code>\\.</code> para que no coincidan con cualquier carácter.",
|
||||
"Admite una <code>v</code> inicial solo cuando la fuente pueda incluirla.",
|
||||
"Incluye sufijos de prepublicación o revisión de distribución únicamente cuando sean relevantes para la comparación.",
|
||||
"Utiliza <strong>Probar detector</strong> antes de guardar y confirma que la versión mostrada coincide con el LXC."
|
||||
],
|
||||
"regexTwoTrailing": "Ambas deben producir valores comparables. Por ejemplo, si la aplicación local devuelve <code>MyApp v2.14.3</code> y GitHub publica <code>release-2.14.3</code>, las dos expresiones deberían extraer <code>2.14.3</code>.",
|
||||
"step1Heading": "1. Obtener una muestra real",
|
||||
"step1P1": "Antes de escribir el patrón, obtenga exactamente el texto que ProxMenux tendrá que interpretar.",
|
||||
"step1P2": "Para la versión instalada, ejecute en la consola del LXC el mismo binario y los mismos argumentos configurados en el formulario. Según el método elegido, también puede consultar el paquete o el archivo correspondiente.",
|
||||
"step1P3": "Ejemplo:",
|
||||
"step1Cmd": "myapp --version",
|
||||
"step1P4": "Supongamos que la salida real es:",
|
||||
"step1Output": "MyApp version v2.14.3 (stable)",
|
||||
"step1P5": "Para la versión publicada, revise el nombre exacto de la release o el tag en el repositorio oficial. Si utiliza un endpoint JSON, examine el valor que devuelve la ruta configurada.",
|
||||
"step1P6": "No construya el patrón a partir de un ejemplo inventado: un espacio, un prefijo o un número adicional puede cambiar el resultado.",
|
||||
"step2Heading": "2. Identificar la parte que debe conservarse",
|
||||
"step2Lead": "En el ejemplo anterior queremos conservar <code>2.14.3</code> y descartar:",
|
||||
"step2Items": [
|
||||
"El texto <code>MyApp version</code>.",
|
||||
"La letra <code>v</code>.",
|
||||
"El texto <code>(stable)</code>."
|
||||
],
|
||||
"step2Recommended": "La expresión recomendada sería:",
|
||||
"step2Regex": "version[ :=]+v?([0-9]+\\.[0-9]+\\.[0-9]+)",
|
||||
"step2ReadLead": "Se puede leer por partes:",
|
||||
"step2Breakdown": {
|
||||
"colPart": "Fragmento",
|
||||
"colMeaning": "Significado",
|
||||
"rows": [
|
||||
{ "part": "version", "meaning": "Busca esa palabra para no confundir la versión con otro número." },
|
||||
{ "part": "[ :=]+", "meaning": "Admite uno o varios espacios, dos puntos o signos igual." },
|
||||
{ "part": "v?", "meaning": "La letra v puede aparecer una vez o no aparecer." },
|
||||
{ "part": "( y )", "meaning": "Marcan la parte que ProxMenux debe conservar." },
|
||||
{ "part": "[0-9]+", "meaning": "Busca uno o varios dígitos." },
|
||||
{ "part": "\\.", "meaning": "Busca un punto real entre los números." }
|
||||
]
|
||||
},
|
||||
"step2DotNote": "El punto se escribe como <code>\\.</code> porque, en una regex, un punto sin la barra significa «cualquier carácter».",
|
||||
"step3Heading": "3. Utilizar un patrón adecuado para el formato",
|
||||
"step3Lead": "Estos patrones cubren muchos casos habituales:",
|
||||
"step3Examples": {
|
||||
"colText": "Texto de ejemplo",
|
||||
"colRegex": "Regex recomendada",
|
||||
"colResult": "Resultado",
|
||||
"rows": [
|
||||
{ "text": "v2.14.3", "regex": "v?([0-9]+\\.[0-9]+\\.[0-9]+)", "result": "2.14.3" },
|
||||
{ "text": "Version: 2.14", "regex": "Version[ :=]+v?([0-9]+(?:\\.[0-9]+){1,3})", "result": "2.14" },
|
||||
{ "text": "release-2.14.3.1", "regex": "release-v?([0-9]+(?:\\.[0-9]+){1,3})", "result": "2.14.3.1" },
|
||||
{ "text": "build 2026.08.10", "regex": "build[ :=]+([0-9]{4}\\.[0-9]{1,2}\\.[0-9]{1,2})", "result": "2026.08.10" },
|
||||
{ "text": "{\"version\":\"2.14.3\"}", "regex": "\"version\"\\s*:\\s*\"v?([0-9]+(?:\\.[0-9]+){1,3})\"", "result": "2.14.3" }
|
||||
]
|
||||
},
|
||||
"step3Note1": "<code>(?: ... )</code> agrupa una parte del patrón sin crear un valor de salida adicional. Esta forma es útil para aceptar versiones con dos, tres o cuatro bloques sin complicar el resultado.",
|
||||
"step3Note2": "Introduzca la regex tal como aparece en la tabla: sin comillas alrededor y sin las barras <code>/.../</code> que utilizan algunas herramientas en línea.",
|
||||
"step4Heading": "4. Usar una sola captura siempre que sea posible",
|
||||
"step4Intro": "ProxMenux utiliza los paréntesis de captura para decidir qué valor devolver:",
|
||||
"step4Items": [
|
||||
"Sin paréntesis de captura, conserva toda la coincidencia.",
|
||||
"Con una captura, conserva el contenido de esa captura.",
|
||||
"Con varias capturas, une sus valores mediante puntos."
|
||||
],
|
||||
"step4Trailing": "Para evitar resultados inesperados, lo más sencillo es encerrar toda la versión en una sola captura y utilizar <code>(?: ... )</code> para los grupos auxiliares.",
|
||||
"step4RecLabel": "Recomendado:",
|
||||
"step4RecRegex": "v?([0-9]+(?:\\.[0-9]+){1,3})",
|
||||
"step4LessLabel": "Menos claro para un usuario principiante:",
|
||||
"step4LessRegex": "v?([0-9]+)\\.([0-9]+)\\.([0-9]+)",
|
||||
"step4Note": "Los dos pueden producir <code>2.14.3</code>, pero el primero es más fácil de mantener si el formato cambia.",
|
||||
"step5Heading": "5. Evitar coincidencias demasiado generales",
|
||||
"step5Lead": "Un patrón como este suele ser demasiado abierto:",
|
||||
"step5Regex": "([0-9.]+)",
|
||||
"step5P1": "Puede capturar un año, un puerto, la versión de una dependencia o el primer número que aparezca en la salida. Añada una palabra cercana como <code>version</code>, <code>release</code> o <code>build</code> cuando el texto contenga varios números.",
|
||||
"step5P2": "También debe comprobar que la fuente de versiones no está mezclando releases estables con versiones beta, nightly o de desarrollo. La regex debe seleccionar el mismo tipo de versión que está instalado en el LXC.",
|
||||
"step6Heading": "6. Guardar y comprobar el resultado",
|
||||
"step6Lead": "Después de guardar la aplicación, pulse <strong>Check</strong> y revise los dos valores que muestra ProxMenux:",
|
||||
"step6Output": "Installed: 2.14.3\nLatest: 2.15.0",
|
||||
"step6CorrectLead": "La regex es correcta si:",
|
||||
"step6CorrectItems": [
|
||||
"Ambos campos contienen únicamente la versión esperada.",
|
||||
"No se ha capturado el nombre de la aplicación ni texto adicional.",
|
||||
"No se ha confundido la versión con otro número.",
|
||||
"La versión local y la publicada utilizan el mismo formato."
|
||||
],
|
||||
"step6ErrorNote": "Si aparece un error de coincidencia, vuelva a obtener la salida real y compare carácter por carácter. Revise especialmente mayúsculas, espacios, guiones, la letra <code>v</code> y el número de bloques de la versión.",
|
||||
"step6Callout": "Si no puede construir un patrón fiable, es preferible desactivar temporalmente el seguimiento de la última versión y mantener la aplicación como un registro con enlaces. Una regex incorrecta puede generar avisos falsos o esconder una actualización real."
|
||||
"regexExampleLead": "Captura habitual de una versión semántica:",
|
||||
"regexExample": "v?(\\d+\\.\\d+\\.\\d+)",
|
||||
"regexCallout": "Una coincidencia correcta de la expresión no demuestra que la ruta sea válida. El paquete, binario o archivo también debe existir en la instalación real registrada."
|
||||
},
|
||||
"state": {
|
||||
"heading": "Interpretar el estado de una aplicación",
|
||||
"lead": "Una aplicación registrada puede mostrar los siguientes estados:",
|
||||
"updater": {
|
||||
"heading": "El seguimiento y la actualización son independientes",
|
||||
"lead": "La <link>pestaña Actualizaciones</link> crea una sección de app desde el momento en que se guarda cualquier registro.",
|
||||
"items": [
|
||||
"<strong>Up to date</strong>: las versiones coinciden.",
|
||||
"<strong>Update available</strong>: la fuente publica una versión más reciente.",
|
||||
"<strong>Checking</strong>: la comprobación está en curso.",
|
||||
"<strong>Version tracking pending</strong>: todavía no se ha completado una comprobación.",
|
||||
"<strong>Error</strong>: no se ha podido obtener o interpretar alguna de las versiones."
|
||||
],
|
||||
"trailing": "Use <strong>Check</strong> para repetir la consulta manualmente después de cambiar la configuración. Si aparece un error, revise primero el método de la versión instalada, la fuente de la última versión y las expresiones regulares."
|
||||
"Un registro de solo enlace indica que el seguimiento no está configurado, pero puede recibir un comando de actualización personalizado.",
|
||||
"Una app con seguimiento, pero sin un método ejecutable, muestra un mensaje neutro que solicita un comando personalizado.",
|
||||
"Una app con un wrapper verificado de Proxmox VE Helper-Scripts puede usar ese actualizador integrado aunque el registro comenzara únicamente con un enlace web.",
|
||||
"Añadir o editar un actualizador no cambia el detector ni la fuente disponible guardados en la pestaña App."
|
||||
]
|
||||
},
|
||||
"manage": {
|
||||
"heading": "Administrar los registros existentes",
|
||||
"lead": "Active el modo de administración para:",
|
||||
"states": {
|
||||
"heading": "Estados de versión en la tarjeta",
|
||||
"colState": "Estado",
|
||||
"colDisplay": "Presentación",
|
||||
"colMeaning": "Significado",
|
||||
"rows": [
|
||||
{ "state": "Actualización disponible", "display": "Versión disponible en morado con un icono de flecha ascendente", "meaning": "Las versiones instalada y disponible son diferentes." },
|
||||
{ "state": "Actualizada", "display": "Versiones instalada y disponible sin la alerta morada", "meaning": "La última comprobación no encontró una versión superior." },
|
||||
{ "state": "Seguimiento pendiente", "display": "Estado de comprobación o pendiente", "meaning": "El registro está configurado, pero aún no ha completado las dos comprobaciones." },
|
||||
{ "state": "Seguimiento desactivado", "display": "Solo enlaces web, sin bloque de comparación", "meaning": "El registro sigue siendo válido y puede tener un actualizador." },
|
||||
{ "state": "Error de comprobación", "display": "Explicación en ámbar dentro de la tarjeta", "meaning": "El estado guardado anterior permanece visible mientras se informa del error del detector o de la fuente." }
|
||||
]
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestionar apps guardadas y sugeridas",
|
||||
"lead": "Las acciones inferiores tienen funciones distintas:",
|
||||
"items": [
|
||||
"Comprobar de nuevo una aplicación.",
|
||||
"Editar su nombre, enlaces o seguimiento de versiones.",
|
||||
"Eliminar un registro que ya no sea necesario.",
|
||||
"Añadir otra aplicación al mismo LXC."
|
||||
],
|
||||
"trailing": "Eliminar el registro no desinstala ni detiene la aplicación. Solo borra la información que ProxMenux utiliza para mostrarla y supervisar su versión."
|
||||
"<strong>Buscar aplicaciones</strong> actualiza la detección únicamente para este LXC.",
|
||||
"<strong>Registrar otra aplicación</strong> abre el catálogo y el editor manual sin volver a escanear el LXC.",
|
||||
"<strong>Editar</strong> muestra en cada tarjeta las acciones Eliminar, Comprobar, notificaciones y Editar campos.",
|
||||
"<strong>Ocultar</strong> retira una sugerencia no deseada. Las detecciones ocultas pueden restaurarse desde el navegador de registro.",
|
||||
"<strong>Comprobar</strong> actualiza los datos de versión de la app guardada; no busca aplicaciones nuevas."
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"heading": "Opciones adicionales",
|
||||
"lead": "Debajo de las opciones de seguimiento de versión hay dos casillas independientes:",
|
||||
"items": [
|
||||
"<strong>Notificarme cuando haya una nueva versión disponible</strong> — envía el evento <code>app_update_available</code> a los canales activos en <strong>Ajustes → Notificaciones</strong>.",
|
||||
"<strong>Excluir del contador de actualizaciones del LXC</strong> — no suma esta aplicación al badge agregado de actualizaciones del card del LXC."
|
||||
],
|
||||
"trailing": "Ambas casillas se marcan por separado. La pestaña App sigue mostrando el estado real de cada aplicación registrada al margen de esta elección."
|
||||
"troubleshooting": {
|
||||
"heading": "Situaciones habituales",
|
||||
"colProblem": "Situación",
|
||||
"colResolution": "Resolución",
|
||||
"rows": [
|
||||
{ "problem": "Se instaló software después de arrancar ProxMenux", "resolution": "Pulsa Buscar aplicaciones. El escaneo explícito actualiza las sugerencias en caché de ese LXC." },
|
||||
{ "problem": "No se detectó la aplicación", "resolution": "Regístrala manualmente. Un nombre y un enlace web son suficientes; el seguimiento puede añadirse después." },
|
||||
{ "problem": "El detector sugerido devuelve una versión incorrecta", "resolution": "Abre Editar campos, selecciona el paquete, binario o archivo real y prueba el detector antes de guardar." },
|
||||
{ "problem": "Una carga Docker no se ofrece como app LXC", "resolution": "Registra Docker y añade la interfaz publicada de la carga como enlace web de Docker. Las actualizaciones de imágenes permanecen en la sección Docker." },
|
||||
{ "problem": "Una app guardada no tiene botón de actualización", "resolution": "Abre Actualizaciones y configura su método. El seguimiento de versiones no define por sí solo cómo se instala una actualización." }
|
||||
]
|
||||
},
|
||||
"notDetected": {
|
||||
"heading": "Si la aplicación no se detecta",
|
||||
"intro": "La detección automática no es necesaria para utilizar esta función. Si no aparece ninguna sugerencia:",
|
||||
"steps": [
|
||||
"Registre la aplicación manualmente.",
|
||||
"Añada sus enlaces y puertos conocidos.",
|
||||
"Déjela como <strong>None (link only)</strong> si solo necesita un acceso directo.",
|
||||
"Configure el seguimiento de versiones únicamente cuando haya identificado una fuente fiable para ambos valores.",
|
||||
"Configure después el método de actualización desde <link>Updates</link>, si quiere que ProxMenux pueda ejecutarlo."
|
||||
],
|
||||
"trailing": "No invente un nombre de paquete, una ruta o una expresión regular para completar el formulario. Es preferible un registro sencillo y correcto que un seguimiento automático basado en datos que no se hayan verificado."
|
||||
"figures": {
|
||||
"catalog": {
|
||||
"alt": "Catálogo de registro con resultados, logotipos, puertos y campos de detección",
|
||||
"caption": "Los metadatos del catálogo aceleran el registro y todos los valores propuestos siguen siendo editables."
|
||||
},
|
||||
"webLinks": {
|
||||
"alt": "Tarjeta de aplicación LXC guardada con un enlace web",
|
||||
"caption": "Un registro de solo enlace es válido: el seguimiento puede quedar desactivado y el actualizador se añade de forma independiente."
|
||||
},
|
||||
"tracking": {
|
||||
"alt": "Campos opcionales del detector instalado y de la fuente disponible",
|
||||
"caption": "La detección instalada y la fuente disponible se configuran y prueban por separado."
|
||||
},
|
||||
"card": {
|
||||
"alt": "Tarjeta guardada con versiones instalada y disponible y un enlace web",
|
||||
"caption": "La tarjeta combina identidad, datos de versión y acceso web sin ejecutar actualizaciones desde esta pestaña."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,231 +1,194 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Updates — actualizar el sistema y las aplicaciones de un LXC | ProxMenux",
|
||||
"description": "Qué mecanismos puede utilizar ProxMenux para actualizar el sistema operativo y las aplicaciones registradas en un contenedor LXC."
|
||||
"title": "Actualizaciones LXC: SO, apps y Docker | ProxMenux",
|
||||
"description": "Configura y ejecuta actualizaciones del sistema operativo, aplicaciones, Docker Engine e imágenes Docker desde un contenedor LXC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Updates — actualizar el sistema y las aplicaciones de un LXC",
|
||||
"description": "Dónde ProxMenux decide cómo actualizar un contenedor: paquetes del sistema operativo, ayudante de Community Scripts o un comando personalizado."
|
||||
"title": "Actualizaciones LXC: SO, apps y Docker",
|
||||
"description": "Revisa cada objetivo de actualización, ejecútalo por separado o combina una selección exacta en una actualización en bloque."
|
||||
},
|
||||
"intro": {
|
||||
"p1": "La pestaña <strong>Updates</strong> reúne los métodos que ProxMenux puede ejecutar para actualizar el sistema operativo y las aplicaciones registradas en un contenedor LXC.",
|
||||
"p2": "La <link>pestaña App</link> indica qué aplicaciones existen y, opcionalmente, compara sus versiones. <strong>Updates</strong> se ocupa de la acción: determina qué mecanismo está disponible, muestra el botón correspondiente y ejecuta la actualización dentro del contenedor.",
|
||||
"callout": "<strong>Idea principal:</strong> detectar una versión nueva y saber cómo instalarla son tareas diferentes. Una aplicación puede mostrar <strong>Update available</strong> en la pestaña App y no tener todavía un botón de actualización hasta que se defina un método válido."
|
||||
"p1": "La pestaña <strong>Actualizaciones</strong> separa la detección de versiones de la acción que instala una actualización. El registro y el seguimiento opcional viven en la <link>pestaña App</link>; los métodos ejecutables se gestionan aquí.",
|
||||
"p2": "Una aplicación guardada aparece en Actualizaciones aunque solo contenga un enlace web. El seguimiento de versiones es opcional y el actualizador se puede configurar de forma independiente.",
|
||||
"callout": "No se deduce una acción únicamente por el nombre de una aplicación. ProxMenux solo ejecuta un método integrado después de verificarlo o un comando personalizado guardado expresamente."
|
||||
},
|
||||
"overview": {
|
||||
"heading": "Contenido de la pestaña",
|
||||
"lead": "Cada objetivo disponible tiene su propia sección y acción:",
|
||||
"items": [
|
||||
"<strong>Paquetes del SO</strong> para contenedores Debian, Ubuntu y Alpine.",
|
||||
"Una sección por cada <strong>aplicación registrada</strong>, incluidos los registros que solo contienen enlaces.",
|
||||
"Una sección <strong>Docker</strong> cuando Docker está registrado, con Docker Engine y las imágenes etiquetadas dentro del mismo bloque.",
|
||||
"Una <strong>Actualización en bloque</strong> configurable, seguida de las opciones de copia, reinicio y programación."
|
||||
]
|
||||
},
|
||||
"mechanisms": {
|
||||
"heading": "Métodos de actualización disponibles",
|
||||
"intro": "En función de cómo se instaló la aplicación y de dónde vengan sus actualizaciones, ProxMenux elige entre tres mecanismos.",
|
||||
"osHeading": "Paquetes del sistema operativo",
|
||||
"osP1": "En contenedores Debian o Ubuntu, ProxMenux consulta y actualiza los paquetes mediante APT. En Alpine utiliza APK.",
|
||||
"osP2": "Las aplicaciones registradas cuyo método de instalación sea <code>dpkg</code> o <code>apk</code> forman parte de esta actualización. No necesitan un segundo comando en la sección de la aplicación: se actualizan al aplicar <strong>Apply OS update</strong>.",
|
||||
"osP3": "La sección muestra el número de paquetes pendientes, cuántos son de seguridad, la familia del sistema y la hora de la última comprobación.",
|
||||
"helperHeading": "Ayudante Proxmox VE Helper-Scripts",
|
||||
"helperP1": "Cuando el LXC se creó con un helper del proyecto <linkHelperHome>Proxmox VE Helper-Scripts</linkHelperHome>, ProxMenux reconoce su actualizador. La aplicación correspondiente debe estar registrada en la pestaña App para que el monitor pueda relacionar el helper con el servicio que se muestra al usuario.",
|
||||
"helperP2": "<strong>La lógica de actualización la mantiene el proyecto Proxmox VE Helper-Scripts</strong>, no ProxMenux. Cada helper incluye su propia función <code>update_script</code>; ProxMenux la descarga y la ejecuta dentro del contenedor en modo silencioso (<code>PHS_SILENT=1</code>), sin prompts. No es necesario copiar el helper ni escribir un comando personalizado en ProxMenux.",
|
||||
"helperP3": "La documentación completa del mecanismo de actualización vive en la web del proyecto — <linkHelperDocs>community-scripts.org / update-apps</linkHelperDocs>. Cada helper tiene además su propia entrada en la <linkHelperHome>web del proyecto</linkHelperHome> con la descripción de lo que hace el script, su configuración por defecto y la fuente de la lógica de actualización — utilice esa página como referencia de lo que el actualizador cambiará dentro del LXC.",
|
||||
"helperP4": "No todos los helpers admiten actualización in situ. Si el catálogo marca una aplicación como no actualizable, la pestaña lo indicará y no presentará ese método como disponible.",
|
||||
"customHeading": "Comando personalizado",
|
||||
"customP1": "Una aplicación registrada puede guardar su propio comando de actualización. ProxMenux lo ejecuta dentro del LXC cuando el usuario pulsa <strong>Apply update</strong> o cuando una tarea programada incluye esa aplicación.",
|
||||
"customP2": "Este método está pensado para aplicaciones cuyo instalador no proporciona un helper reconocido y que tampoco se actualizan como parte de APT o APK."
|
||||
"heading": "Cómo se selecciona el método",
|
||||
"lead": "La vía integrada de Proxmox VE Helper-Scripts sigue el mecanismo oficial <helper>update-apps</helper>. El resto de instalaciones usa el método de paquetes, Docker o el comando personalizado correspondiente.",
|
||||
"colSource": "Origen",
|
||||
"colAction": "Acción mostrada",
|
||||
"colNotes": "Qué se ejecuta",
|
||||
"rows": [
|
||||
{
|
||||
"source": "Paquetes APT o APK",
|
||||
"action": "Aplicar actualizaciones de SO",
|
||||
"notes": "Actualiza los paquetes del contenedor. Las apps registradas como paquetes dpkg o apk quedan cubiertas en la misma ejecución."
|
||||
},
|
||||
{
|
||||
"source": "Proxmox VE Helper-Scripts",
|
||||
"action": "Aplicar actualización",
|
||||
"notes": "Usa el wrapper /usr/bin/update verificado. Un marcador antiguo sin wrapper válido se identifica, pero nunca se ejecuta automáticamente."
|
||||
},
|
||||
{
|
||||
"source": "Comando personalizado",
|
||||
"action": "Ejecutar actualizador",
|
||||
"notes": "Ejecuta el comando guardado dentro del LXC y reemplaza cualquier actualizador integrado de esa aplicación."
|
||||
},
|
||||
{
|
||||
"source": "Docker Engine",
|
||||
"action": "Actualizar Docker Engine",
|
||||
"notes": "Actualiza únicamente los paquetes Docker instalados y sus dependencias necesarias. No modifica otros paquetes ni los contenedores."
|
||||
},
|
||||
{
|
||||
"source": "Imagen Docker",
|
||||
"action": "Actualizar imagen",
|
||||
"notes": "Descarga la imagen seleccionada y recrea su grupo de servicios Compose o su contenedor independiente protegido."
|
||||
}
|
||||
],
|
||||
"callout": "Un comando personalizado siempre <strong>reemplaza</strong> al actualizador integrado de Proxmox VE Helper-Scripts para esa aplicación. Los dos métodos no se ejecutan uno detrás de otro."
|
||||
},
|
||||
"decision": {
|
||||
"heading": "Cómo decide ProxMenux qué acción mostrar",
|
||||
"table": {
|
||||
"colSituation": "Situación",
|
||||
"colAction": "Acción adecuada",
|
||||
"rows": [
|
||||
{ "situation": "Hay paquetes APT o APK pendientes", "action": "Apply OS update" },
|
||||
{ "situation": "La aplicación usa un paquete dpkg o apk", "action": "Apply OS update — no necesita un comando propio" },
|
||||
{ "situation": "Hay un helper compatible y la aplicación está registrada", "action": "Apply update mediante Community Scripts" },
|
||||
{ "situation": "La aplicación registrada tiene un comando personalizado", "action": "Apply update mediante ese comando" },
|
||||
{ "situation": "Hay una versión nueva, pero no existe helper ni comando", "action": "Muestra No updater configured y ofrece añadir un comando" },
|
||||
{ "situation": "Hay actualizaciones del sistema y métodos de aplicaciones disponibles", "action": "Puede aparecer una acción combinada Apply OS + Apps updates" }
|
||||
]
|
||||
},
|
||||
"trailing": "Una aplicación registrada únicamente como enlace no aparece como actualizable, porque ProxMenux no dispone de información suficiente para asociarle un método."
|
||||
"docker": {
|
||||
"heading": "Docker Engine e imágenes Docker",
|
||||
"lead": "Después de registrar Docker en la pestaña App, el motor y el inventario de imágenes aparecen dentro de la misma sección <strong>Docker</strong>.",
|
||||
"items": [
|
||||
"El seguimiento de Docker Engine es independiente del contador de paquetes del SO y dispone de su propio botón de actualización.",
|
||||
"Las imágenes locales con etiqueta se comparan con el registro mediante un digest inmutable. <strong>Comprobar ahora</strong> actualiza el inventario sin descargar imágenes ni reiniciar contenedores.",
|
||||
"Los servicios Compose se actualizan desde el proyecto declarado. Las imágenes de un mismo grupo se procesan juntas para no recrear repetidamente el proyecto.",
|
||||
"Un contenedor independiente se recrea con su configuración actual. El flujo protegido conserva datos de reversión y restaura el contenedor anterior si falla la recreación.",
|
||||
"Cada imagen se puede seleccionar por separado en actualizaciones manuales, en bloque y programadas, salvo las dependencias Compose declaradas que deben acompañar a su servicio principal."
|
||||
],
|
||||
"callout": "Los contenedores que se ejecutan dentro de Docker no aparecen como aplicaciones LXC independientes. Sus puertos web publicados se pueden guardar como enlaces de Docker; las actualizaciones de imágenes permanecen en la sección Docker."
|
||||
},
|
||||
"figures": {
|
||||
"f01": {
|
||||
"alt": "Sección OS packages mostrando el conteo de paquetes pendientes, el conteo de security y el botón Apply OS update",
|
||||
"caption": "Paquetes del sistema pendientes: total, actualizaciones de seguridad y botón Apply OS update"
|
||||
},
|
||||
"f02": {
|
||||
"alt": "La misma sección OS packages tras aplicar — sin paquetes pendientes, badge OS up to date",
|
||||
"caption": "Tras aplicar: 'No OS updates pending' y el badge OS up to date"
|
||||
},
|
||||
"f03": {
|
||||
"alt": "Aplicación registrada mostrando 'No update method available' y un botón Add custom update command",
|
||||
"caption": "'No update method available' — ProxMenux hace seguimiento pero no tiene aún ningún método para actualizarla"
|
||||
},
|
||||
"f04": {
|
||||
"alt": "Editor del comando personalizado con el placeholder de ejemplo visible dentro del textarea",
|
||||
"caption": "El editor del comando personalizado con su placeholder de ejemplo y los botones Cancel y Save"
|
||||
},
|
||||
"f05": {
|
||||
"alt": "Panel de terminal titulado 'Apply updates — CT 103' mostrando la salida de apt en vivo mientras se desempaquetan paquetes",
|
||||
"caption": "Panel de terminal transmitiendo la salida de la actualización en vivo mientras apt desempaqueta paquetes dentro del CT"
|
||||
},
|
||||
"f06": {
|
||||
"alt": "Tarjeta Options con Snapshot before applying activo, Backup storage a pbs y Restart after applying activo",
|
||||
"caption": "Tarjeta Options con snapshot vzdump, almacenamiento de backup y reinicio-tras-aplicar activados a la vez"
|
||||
},
|
||||
"f07": {
|
||||
"alt": "Sección Scheduled updates habilitada — Frequency en Daily at 3:00, expresión cron 0 3 * * * y What to update en OS + application",
|
||||
"caption": "Scheduled updates activadas — preset de frecuencia, expresión cron correspondiente y ámbito seleccionado"
|
||||
}
|
||||
"actions": {
|
||||
"heading": "Acciones individuales y colores de estado",
|
||||
"lead": "Cada sección conserva su propia acción aunque exista una actualización en bloque configurada.",
|
||||
"items": [
|
||||
"El botón <strong>Editar</strong> está siempre disponible. Los métodos integrados muestran su comando actual para poder revisarlo, reemplazarlo o borrarlo.",
|
||||
"Si el seguimiento de versiones está desactivado pero existe un actualizador, aparece la acción neutra <strong>Ejecutar actualizador</strong>. ProxMenux no afirma que exista una actualización pendiente.",
|
||||
"Si no existe ningún método, <strong>Configurar</strong> abre el editor del comando personalizado.",
|
||||
"La acción <strong>Actualizar imagen</strong> solo afecta a la unidad Docker seleccionada; no actualiza Docker Engine ni imágenes no relacionadas."
|
||||
],
|
||||
"statusColState": "Estado conocido",
|
||||
"statusColAppearance": "Aspecto",
|
||||
"statusColMeaning": "Significado",
|
||||
"statusRows": [
|
||||
{
|
||||
"state": "Actualización verificada",
|
||||
"appearance": "Texto morado, icono de flecha ascendente y acción morada",
|
||||
"meaning": "La versión instalada y la disponible, o los digests de imagen, son diferentes."
|
||||
},
|
||||
{
|
||||
"state": "Actualizado y verificado",
|
||||
"appearance": "Comprobación verde y acción Actualizado en verde",
|
||||
"meaning": "La última comprobación terminada confirma que el objetivo está actualizado."
|
||||
},
|
||||
{
|
||||
"state": "Versión desconocida",
|
||||
"appearance": "Texto y acción neutros",
|
||||
"meaning": "El actualizador puede ejecutarse, pero no existen datos de versión para marcarlo como pendiente o actualizado."
|
||||
}
|
||||
]
|
||||
},
|
||||
"custom": {
|
||||
"heading": "Añadir un comando de actualización",
|
||||
"p1": "Cuando una aplicación tiene seguimiento de versiones pero no dispone de un método de actualización, la pestaña muestra <strong>No updater configured</strong>. Pulse <strong>Add custom update command</strong> para abrir el editor.",
|
||||
"p2": "El comando debe representar el procedimiento real y completo que actualiza esa aplicación. No debe ser simplemente el comando que muestra su versión."
|
||||
},
|
||||
"figureOut": {
|
||||
"heading": "Cómo averiguar el comando correcto",
|
||||
"intro": "No existe un comando universal para actualizar todas las aplicaciones. Antes de guardar uno, identifique cómo se instaló el software y cuál es el procedimiento recomendado por su proyecto.",
|
||||
"step1Heading": "1. Comprobar si ya lo gestiona el sistema",
|
||||
"step1P1": "Si la aplicación se instaló desde los repositorios de Debian, Ubuntu o Alpine, normalmente se actualizará con los paquetes del sistema. En ese caso no añada un comando personalizado: utilice <strong>Apply OS update</strong>.",
|
||||
"step1P2": "Puede comprobar el origen del paquete desde la consola del LXC con las herramientas de su distribución. Por ejemplo:",
|
||||
"step1Cmd1": "dpkg -l | grep -i nombre",
|
||||
"step1P3": "o:",
|
||||
"step1Cmd2": "apk info | grep -i nombre",
|
||||
"step1P4": "Sustituya <code>nombre</code> por el paquete que está investigando. Que el texto aparezca en la búsqueda no confirma por sí solo que sea el paquete principal; verifique su nombre en la documentación de la aplicación.",
|
||||
"step2Heading": "2. Consultar la documentación oficial",
|
||||
"step2P1": "Busque en la documentación o el repositorio oficial apartados como <strong>Upgrade</strong>, <strong>Update</strong>, <strong>Maintenance</strong> o <strong>Manual installation</strong>. El procedimiento debe corresponder con el método que se utilizó para instalar la aplicación en ese LXC.",
|
||||
"step2P2": "No use instrucciones destinadas a otra distribución, otro tipo de instalación o una versión diferente del programa.",
|
||||
"step3Heading": "3. Revisar la instalación existente",
|
||||
"step3Lead": "Si no recuerda cómo se instaló la aplicación, revise:",
|
||||
"step3Items": [
|
||||
"El historial o las notas del instalador original.",
|
||||
"La ruta donde se encuentran sus archivos.",
|
||||
"La definición del servicio que la inicia.",
|
||||
"Los scripts de mantenimiento incluidos por la propia aplicación.",
|
||||
"La documentación guardada dentro de su directorio de instalación."
|
||||
],
|
||||
"step3P1": "Para un servicio systemd, este comando puede ayudar a localizar el ejecutable y su directorio de trabajo:",
|
||||
"step3Cmd": "systemctl show nombre-del-servicio -p ExecStart -p WorkingDirectory",
|
||||
"step3P2": "Esto ayuda a identificar la instalación, pero no convierte automáticamente la línea <code>ExecStart</code> en un comando de actualización.",
|
||||
"step4Heading": "4. Probar el procedimiento en la consola del LXC",
|
||||
"step4Lead": "Abra la consola del contenedor y ejecute el procedimiento manualmente antes de guardarlo en ProxMenux. Compruebe que:",
|
||||
"step4Items": [
|
||||
"Finaliza sin preguntas ni menús interactivos.",
|
||||
"Devuelve un código de salida correcto.",
|
||||
"Reinicia o recarga únicamente los servicios necesarios.",
|
||||
"La aplicación vuelve a estar disponible.",
|
||||
"La versión instalada cambia como se esperaba."
|
||||
],
|
||||
"step4Note": "Cuando sea posible, haga antes una copia de seguridad del contenedor.",
|
||||
"step5Heading": "5. Guardar solo el comando interno",
|
||||
"step5P1": "Escriba únicamente lo que se ejecutaría dentro del LXC. No incluya:",
|
||||
"step5Cmd1": "pct exec <vmid> --",
|
||||
"step5P2": "ProxMenux ya se encarga de entrar en el contenedor. El comando se ejecuta como <code>root</code> mediante <code>sh -c</code>, por lo que admite operaciones encadenadas y cambios de directorio.",
|
||||
"step5P3": "Si el actualizador debe ejecutarse desde una ruta concreta, inclúyala de forma explícita:",
|
||||
"step5Cmd2": "cd /opt/mi-aplicacion && ./update.sh",
|
||||
"step5P4": "Si el proyecto proporciona un actualizador en otra ruta, use siempre la ruta y los argumentos indicados por su documentación oficial."
|
||||
},
|
||||
"requirements": {
|
||||
"heading": "Requisitos de un comando fiable",
|
||||
"lead": "Antes de utilizarlo desde el monitor, compruebe que el comando:",
|
||||
"heading": "Comandos de actualización personalizados",
|
||||
"lead": "El comando personalizado cubre instalaciones sin un actualizador integrado verificado y permite reemplazar el procedimiento normal cuando sea necesario.",
|
||||
"items": [
|
||||
"Puede ejecutarse sin intervención del usuario.",
|
||||
"Utiliza rutas absolutas o cambia primero al directorio correcto.",
|
||||
"Detiene, migra y reinicia los servicios según las instrucciones oficiales.",
|
||||
"Devuelve un error cuando la actualización falla.",
|
||||
"No contiene contraseñas, tokens ni otros secretos visibles.",
|
||||
"No descarga ni ejecuta scripts procedentes de fuentes que no sean de confianza."
|
||||
"Abre <strong>Configurar</strong> cuando el campo está vacío o <strong>Editar</strong> cuando ya existe un método.",
|
||||
"En una app integrada o en Docker Engine, el editor muestra el comando utilizado actualmente. Al guardar otro contenido pasa a ser la sustitución explícita de ese registro.",
|
||||
"El procedimiento completo debe probarse antes en el terminal del LXC. Debe ser no interactivo, usar el directorio correcto y devolver un código distinto de cero cuando falle.",
|
||||
"No incluyas <code>pct exec</code>; ProxMenux ya entra en el contenedor y ejecuta el comando como root."
|
||||
],
|
||||
"trailing": "El contenido se guarda en la configuración asociada a ese LXC y se ejecuta con privilegios de administrador. Trátelo con el mismo cuidado que cualquier comando ejecutado como <code>root</code>."
|
||||
"exampleLead": "Ejemplo de procedimiento completo dentro del contenedor:",
|
||||
"example": "cd /opt/mi-app && ./update.sh",
|
||||
"callout": "Un comando de versión como <code>miapp --version</code> solo lee una versión; no instala nada. Los comandos se ejecutan con privilegios administrativos y deben revisarse con el mismo cuidado que un comando de shell como root."
|
||||
},
|
||||
"difference": {
|
||||
"heading": "Diferencia entre el comando de detección y el de actualización",
|
||||
"lead": "Los dos campos tienen objetivos distintos:",
|
||||
"table": {
|
||||
"colField": "Campo",
|
||||
"colLocation": "Ubicación",
|
||||
"colRole": "Función",
|
||||
"rows": [
|
||||
{
|
||||
"field": "Command para la versión instalada",
|
||||
"location": "App → seguimiento avanzado",
|
||||
"role": "Consulta y devuelve la versión actual; se ejecuta como una lista de argumentos, sin shell."
|
||||
},
|
||||
{
|
||||
"field": "Custom update command",
|
||||
"location": "Updates",
|
||||
"role": "Ejecuta el procedimiento de actualización; se interpreta mediante sh -c."
|
||||
}
|
||||
]
|
||||
},
|
||||
"trailing": "No copie automáticamente el comando de un campo al otro. Un comando como <code>myapp --version</code> puede detectar correctamente la versión, pero no instala una nueva versión."
|
||||
},
|
||||
"apply": {
|
||||
"heading": "Aplicar una actualización",
|
||||
"lead": "Antes de pulsar un botón de aplicación:",
|
||||
"steps": [
|
||||
"Revise qué sección se va a actualizar: sistema, una aplicación o ambas.",
|
||||
"Compruebe las opciones de copia de seguridad y reinicio.",
|
||||
"Pulse el botón correspondiente.",
|
||||
"Siga la salida del proceso en la ventana de terminal.",
|
||||
"Compruebe el resultado final y que el servicio vuelva a responder."
|
||||
"bulk": {
|
||||
"heading": "Actualización en bloque",
|
||||
"lead": "La actualización en bloque crea una acción reutilizable para un conjunto exacto de objetivos del LXC. Aparece después de las secciones de apps y Docker y antes de <strong>Opciones</strong>.",
|
||||
"items": [
|
||||
"Los paquetes del SO son obligatorios. Debe seleccionarse al menos una app, Docker Engine o unidad de imagen Docker adicional.",
|
||||
"Las aplicaciones y unidades Docker se seleccionan individualmente. Un servicio principal de Compose muestra las dependencias que se actualizarán con él.",
|
||||
"Los objetivos eliminados o no disponibles se marcan como obsoletos y deben retirarse antes de guardar la configuración.",
|
||||
"El botón <strong>Aplicar actualizaciones</strong> es morado si algún objetivo seleccionado tiene una actualización verificada, verde si todos están verificados como actualizados y neutro cuando el resultado es desconocido.",
|
||||
"Eliminar la configuración en bloque no borra los métodos individuales ni la programación."
|
||||
],
|
||||
"trailing1": "Si el LXC está detenido, ProxMenux lo inicia para ejecutar el proceso. Si la actualización finaliza correctamente y está activada la opción de reinicio, el contenedor se reinicia al terminar.",
|
||||
"systemLead": "En una actualización del sistema:",
|
||||
"systemItems": [
|
||||
"Debian y Ubuntu ejecutan la actualización mediante APT.",
|
||||
"Alpine ejecuta la actualización mediante APK."
|
||||
],
|
||||
"appLead": "En una actualización de aplicación:",
|
||||
"appItems": [
|
||||
"Se ejecuta el helper compatible, si existe.",
|
||||
"Se ejecuta el comando personalizado guardado para la aplicación, si está configurado.",
|
||||
"Si se han seleccionado varias aplicaciones, se ejecutan sus métodos en secuencia."
|
||||
],
|
||||
"trailing2": "La ventana de terminal muestra el progreso y termina con un resultado correcto o con el código de error devuelto por el proceso."
|
||||
"callout": "La actualización en bloque no reemplaza los botones individuales. Es un acceso opcional para una selección que debe ejecutarse junta."
|
||||
},
|
||||
"backup": {
|
||||
"heading": "Copia de seguridad antes de actualizar",
|
||||
"p1": "Active <strong>Snapshot the container before applying</strong> para crear una copia de seguridad con <code>vzdump</code> antes de modificar el LXC. También puede elegir el almacenamiento de destino.",
|
||||
"p2": "Si se solicita la copia de seguridad y esta falla, ProxMenux no continúa con la actualización. De este modo se evita iniciar los cambios sin disponer del punto de recuperación solicitado.",
|
||||
"p3": "Esta opción se aplica tanto a las ejecuciones manuales como a las programadas."
|
||||
},
|
||||
"restart": {
|
||||
"heading": "Reinicio después de actualizar",
|
||||
"p1": "<strong>Restart the container after applying</strong> es una preferencia, no un aviso de que el reinicio sea obligatorio. Active la opción cuando el procedimiento de la aplicación o los paquetes instalados lo requieran.",
|
||||
"p2": "El reinicio solo se realiza después de una ejecución correcta. Si la actualización falla, el contenedor permanece iniciado para facilitar la revisión del error.",
|
||||
"p3": "Las opciones de copia de seguridad y reinicio se guardan para ese LXC y se utilizan también en sus tareas programadas."
|
||||
"options": {
|
||||
"heading": "Opciones de copia y reinicio",
|
||||
"lead": "Las mismas opciones se aplican a ejecuciones manuales, en bloque y programadas:",
|
||||
"items": [
|
||||
"<strong>Instantánea antes de aplicar</strong> crea una copia vzdump en el almacenamiento seleccionado. Si la copia solicitada falla, la actualización no comienza.",
|
||||
"<strong>Reiniciar después de aplicar</strong> reinicia el LXC únicamente tras una ejecución correcta.",
|
||||
"Las selecciones se guardan por LXC y son independientes de la lista de objetivos."
|
||||
]
|
||||
},
|
||||
"scheduled": {
|
||||
"heading": "Actualizaciones programadas",
|
||||
"p1": "La sección <strong>Scheduled updates</strong> permite ejecutar automáticamente el mismo flujo utilizado por los botones manuales.",
|
||||
"createLead": "Para crear una programación:",
|
||||
"createSteps": [
|
||||
"Abra <strong>Options</strong> y pulse <strong>Edit</strong>.",
|
||||
"Active <strong>Scheduled updates</strong>.",
|
||||
"Elija una frecuencia predefinida o introduzca una expresión cron.",
|
||||
"Seleccione qué se actualizará: solo paquetes del sistema, solo aplicaciones o sistema y aplicaciones.",
|
||||
"Revise las opciones de copia de seguridad y reinicio.",
|
||||
"Guarde la configuración."
|
||||
"lead": "La programación usa los mismos objetivos ejecutables y opciones de seguridad que las acciones manuales.",
|
||||
"items": [
|
||||
"Selecciona una frecuencia o expresión cron y después objetivos exactos: paquetes del SO, apps individuales, Docker Engine, unidades Docker independientes o grupos de servicios Compose.",
|
||||
"La espera tras una versión solo se aplica a las apps seleccionadas con seguimiento. Las apps sin seguimiento ejecutan su actualizador cuando vence la programación.",
|
||||
"El estado de la última ejecución diferencia entre éxito, finalización parcial, error, retención de seguridad y ausencia de elementos pendientes.",
|
||||
"Las programaciones externas detectadas de Proxmox VE Helper-Scripts se muestran aparte para hacer visible cualquier automatización coincidente."
|
||||
],
|
||||
"p2": "La tarjeta muestra si la programación está activa, qué elementos incluye y el resultado de la última ejecución. También puede conservar una programación desactivada para volver a habilitarla más adelante o eliminarla por completo.",
|
||||
"p3": "Si ProxMenux detecta una programación externa creada por Community Scripts en el host, la muestra para que el usuario sepa que ya existe otra automatización.",
|
||||
"callout": "Antes de programar actualizaciones de aplicaciones, pruebe manualmente cada helper o comando. Una tarea programada no puede responder a confirmaciones ni corregir un procedimiento incompleto."
|
||||
"callout": "Cada método seleccionado debe probarse manualmente antes de programarlo. Una tarea programada no puede responder a preguntas interactivas."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Comprobar el resultado",
|
||||
"p1": "Después de aplicar paquetes del sistema, ProxMenux fuerza una nueva comprobación para actualizar el contador de paquetes pendientes sin esperar al siguiente ciclo periódico.",
|
||||
"p2": "Para una aplicación, vuelva a la <link>pestaña App</link> y pulse <strong>Check</strong> si el número de versión no se actualiza inmediatamente. Esta comprobación ejecuta de nuevo el método configurado para la versión instalada y consulta la última versión publicada.",
|
||||
"p3": "Compruebe además que los enlaces web de la aplicación responden correctamente. Que el comando termine sin errores no sustituye una verificación funcional del servicio."
|
||||
"completion": {
|
||||
"heading": "Qué ocurre al terminar",
|
||||
"lead": "La actualización no se considera terminada únicamente porque el comando del terminal haya finalizado.",
|
||||
"items": [
|
||||
"La misma ejecución guarda el resultado final y actualiza, según corresponda, los paquetes del SO, las versiones de las apps y el inventario Docker.",
|
||||
"La caché del LXC se reemplaza con el estado verificado tras la actualización para que insignias y botones no conserven el resultado anterior.",
|
||||
"Si arranca un LXC parado o restaurado, el evento de ciclo de vida existente vuelve a actualizar ese LXC. El inventario Docker espera a que el daemon esté disponible en lugar de guardar como definitivo un resultado vacío del arranque.",
|
||||
"Las notificaciones activadas se emiten desde la ejecución finalizada e incluyen fallos parciales y resultados agrupados de imágenes Docker."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Problemas habituales",
|
||||
"noButtonHeading": "Aparece Update available, pero no hay botón Apply update",
|
||||
"noButtonBody": "La detección de versiones funciona, pero no se ha encontrado un método para instalar la actualización. Compruebe si la aplicación se actualiza mediante los paquetes del sistema, un helper compatible o un comando personalizado.",
|
||||
"aptHeading": "La aplicación se actualiza mediante APT o APK",
|
||||
"aptBody": "Use <strong>Apply OS update</strong>. No añada un segundo comando para la misma operación, porque la aplicación ya forma parte de la actualización del sistema.",
|
||||
"noUpdaterHeading": "Se muestra No updater configured",
|
||||
"noUpdaterBody": "ProxMenux conoce y supervisa la aplicación, pero no sabe cómo actualizarla. Consulte su documentación oficial, pruebe el procedimiento en la consola y, si corresponde, guárdelo mediante <strong>Add custom update command</strong>.",
|
||||
"helperDetectedHeading": "El helper está detectado, pero no se puede utilizar",
|
||||
"helperDetectedBody": "El helper puede estar marcado como no actualizable o no formar parte de los métodos reconocidos. Siga las instrucciones oficiales de la aplicación y no asuma que todos los LXC creados mediante Community Scripts admiten una actualización automática.",
|
||||
"customFailsHeading": "El comando personalizado falla",
|
||||
"customFailsBody": "Vuelva a ejecutarlo en la consola del LXC. Revise la ruta de trabajo, los permisos, las dependencias, los argumentos no interactivos y el código de salida. No sustituya el comando por una variante distinta hasta comprobar el procedimiento recomendado por el proyecto."
|
||||
"troubleshooting": {
|
||||
"heading": "Situaciones habituales",
|
||||
"colProblem": "Situación",
|
||||
"colResolution": "Resolución",
|
||||
"rows": [
|
||||
{
|
||||
"problem": "No se ha identificado un método de actualización",
|
||||
"resolution": "Abre Configurar, añade el procedimiento oficial no interactivo y pruébalo manualmente antes de programarlo."
|
||||
},
|
||||
{
|
||||
"problem": "Aparece la identidad de Proxmox VE Helper-Scripts, pero no existe una acción",
|
||||
"resolution": "El LXC conserva datos de identificación antiguos, pero no tiene un wrapper /usr/bin/update verificado. Añade un método solo después de confirmar el procedimiento correcto."
|
||||
},
|
||||
{
|
||||
"problem": "Las imágenes Docker aparecen vacías temporalmente después de arrancar o restaurar",
|
||||
"resolution": "Espera a que Docker esté disponible o pulsa Comprobar ahora. El inventario reintenta el arranque y no considera definitivo un resultado vacío transitorio."
|
||||
},
|
||||
{
|
||||
"problem": "Un objetivo guardado en bloque ya no está disponible",
|
||||
"resolution": "Edita la configuración, elimina el objetivo obsoleto y selecciona su sustituto actual si existe."
|
||||
},
|
||||
{
|
||||
"problem": "Falla un comando personalizado",
|
||||
"resolution": "Ejecútalo en el terminal del LXC y revisa la ruta, las dependencias, los parámetros no interactivos y el código de salida."
|
||||
}
|
||||
]
|
||||
},
|
||||
"figures": {
|
||||
"osPending": {
|
||||
"alt": "Sección de paquetes del sistema operativo con contadores de actualizaciones y de seguridad",
|
||||
"caption": "La sección del sistema operativo mantiene los paquetes separados de las acciones de aplicaciones y Docker."
|
||||
},
|
||||
"options": {
|
||||
"alt": "Opciones de actualización LXC con copia previa y reinicio posterior",
|
||||
"caption": "Las preferencias de copia y reinicio se aplican a ejecuciones manuales, en bloque y programadas."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
"drillIn": {
|
||||
"heading": "Modal de vista en detalle por guest",
|
||||
"intro": "La modal abre con una cabecera que muestra el nombre del guest, VMID, insignia de tipo (LXC / VM), insignia de estado (RUNNING / STOPPED / …) y el uptime actual. Bajo la cabecera hay <strong>dos pestañas</strong> — <em>Status</em> y <em>Backups</em> — y una barra de acciones fija al pie de la modal con los cuatro controles de ciclo de vida (Start / Shutdown / Reboot / Force Stop) y, en contenedores LXC en ejecución, un botón Console.",
|
||||
"intro": "El modal se abre con el nombre, VMID, tipo, estado y tiempo de actividad del sistema. La navegación se adapta al elemento: <strong>Estado</strong>, <strong>App</strong> y <strong>Actualizaciones</strong> para gestionar aplicaciones LXC, <strong>Montajes</strong> cuando existen puntos de montaje, además de <strong>Copias</strong> y <strong>Cortafuegos</strong>. La barra inferior mantiene los controles de ciclo de vida y el terminal LXC disponibles desde cualquier pestaña.",
|
||||
"statusTitle": "Pestaña 1 — Status",
|
||||
"statusImageAlt": "Modal de vista en detalle por guest — pestaña Status con tarjetas en vivo de CPU / Memoria / Disco, totales de E/S de disco y red, el logo de distro del SO y el bloque Resources / IP Addresses",
|
||||
"statusImageCaption": "Pestaña Status — CPU / Memoria / Disco en vivo con barras de progreso arriba, totales de E/S acumulados (lectura/escritura de disco, descarga/subida de red) abajo, después el bloque estático Resources con expansiones de Notes y + Info y la lista de pastillas IP Addresses.",
|
||||
@@ -77,7 +77,17 @@
|
||||
],
|
||||
"ipsTitle": "4. IP Addresses",
|
||||
"ipsBody": "Lista de pastillas con cada dirección IPv4 / IPv6 que el guest expone actualmente — pastilla verde por dirección. Vacía cuando el guest está parado o cuando el QEMU agent no está instalado en una VM (los LXCs siempre reportan direcciones directamente).",
|
||||
"mountsTitle": "Pestaña 2 — Mounts (solo LXC)",
|
||||
"appTitle": "Pestaña 2 — App (solo LXC)",
|
||||
"appIntro": "Registra las aplicaciones que pertenecen al LXC, guarda enlaces web y, opcionalmente, compara las versiones instalada y disponible. Las sugerencias proceden de la caché de arranque; <strong>Buscar aplicaciones</strong> actualiza expresamente la detección de este LXC después de instalar software nuevo.",
|
||||
"appLinkLead": "Consulta la",
|
||||
"appLinkLabel": "página específica de App",
|
||||
"appLinkTail": "para conocer la detección en caché, el registro asistido por catálogo, los enlaces web de Docker y los detectores de versión.",
|
||||
"updatesTitle": "Pestaña 3 — Actualizaciones (solo LXC)",
|
||||
"updatesIntro": "Mantiene como objetivos separados los <strong>paquetes del SO</strong>, las aplicaciones registradas, <strong>Docker Engine</strong> y las imágenes Docker. Cada objetivo puede ejecutarse por separado; una acción en bloque y una programación opcionales seleccionan los métodos exactos que deben ejecutarse juntos.",
|
||||
"updatesLinkLead": "Consulta la",
|
||||
"updatesLinkLabel": "página específica de Actualizaciones",
|
||||
"updatesLinkTail": "para conocer los actualizadores integrados y personalizados, la recreación Docker, la selección en bloque, las opciones de seguridad y la programación.",
|
||||
"mountsTitle": "Pestaña 4 — Montajes (solo LXC, cuando existen)",
|
||||
"mountsImageAlt": "Modal de vista en detalle LXC — pestaña Mounts listando cada mount point que está usando el contenedor: volúmenes PVE, host binds, binds desde almacenamiento PVE y montajes ad-hoc NFS/CIFS que el operador montó desde dentro del CT. Cada tarjeta lleva una insignia de tipo, barra de capacidad, bytes used/total, opciones de montaje y un punto de estado por color (verde sano, ámbar readonly/divergente, rojo stale)",
|
||||
"mountsImageCaption": "Pestaña Mounts — solo se renderiza para contenedores LXC, y solo cuando hay al menos un mount point o un montaje remoto ad-hoc presente. Un CT sin mounts no recibe pestaña.",
|
||||
"mountsIntro": "La propia UI de Proxmox muestra las entradas de mount-point definidas en la config del contenedor (<code>mpX</code>) pero se queda ahí — cualquier cosa que montes desde dentro del CT después (<code>mount.cifs</code>, NFS vía <code>autofs</code>, …) es invisible. Esta pestaña funde <strong>ambas vistas</strong>: los mounts configurados <strong>y</strong> los mounts en runtime que ProxMenux sonda desde dentro del contenedor, con un estado de salud por mount y una barra de capacidad cuando el backend la puede resolver.",
|
||||
@@ -96,7 +106,7 @@
|
||||
],
|
||||
"mountsCalloutTitle": "Lo que esto te da sobre la UI nativa",
|
||||
"mountsCalloutBody": "Una vista veraz y consciente de la capacidad de cada sitio donde el contenedor lee o escribe. Shares NFS o CIFS montados desde dentro del CT — invisibles para la UI web de Proxmox — aparecen aquí con el mismo aspecto y la misma sonda de salud que cualquier mount point configurado. Mounts remotos stale y zombie binds salen marcados antes de que muerdan durante un backup.",
|
||||
"backupsTitle": "Pestaña 3 — Backups",
|
||||
"backupsTitle": "Pestaña 5 — Copias",
|
||||
"backupsImageAlt": "Modal de vista en detalle por guest — pestaña Backups con la lista de backups disponibles, etiqueta de destino, tamaños y el botón Create Backup",
|
||||
"backupsImageCaption": "Pestaña Backups — cada backup almacenado en los almacenamientos Proxmox configurados para este guest, ordenados de más nuevo a más viejo. La cabecera de la pestaña lleva la insignia de recuento.",
|
||||
"backupsIntro": "Lista cada backup almacenado en los almacenamientos Proxmox configurados para este guest, ordenados de más nuevo a más viejo. El título de la pestaña lleva una insignia de recuento para que veas de un vistazo si el guest está backupeado. Por fila:",
|
||||
@@ -106,23 +116,7 @@
|
||||
"<strong>Size</strong> — tamaño final en disco del backup."
|
||||
],
|
||||
"backupsOutro": "El botón <strong>+ Create Backup</strong> arriba a la derecha arranca una nueva ejecución en el almacenamiento marcado como \"Backup target\" en la config de almacenamiento de Proxmox. El restore vive en la UI web de Proxmox — el Monitor expone la vista \"¿este guest tiene backup reciente?\", no el flujo de recuperación.",
|
||||
"updatesTitle": "Insignia de updates (solo LXC)",
|
||||
"updatesImageAlt": "Modal de vista en detalle LXC — insignia violeta pulsable 'updates available' en la cabecera de un contenedor que tiene updates pendientes de apt o apk. Pulsarla expande un panel listando cada paquete actualizable con sus versiones actual y objetivo, más un contador security-only cuando el repo subyacente marca alguno como security",
|
||||
"updatesImageCaption": "La insignia solo aparece en contenedores LXC en ejecución que tengan al menos un paquete actualizable. Pulsa para abrir la lista de paquetes dentro de la modal — no hay pestaña separada en la barra de navegación.",
|
||||
"updatesIntro": "ProxMenux sondea cada contenedor en ejecución del host una vez al día y cuenta los paquetes actualizables. Soportado actualmente en esta fase: <strong>Debian / Ubuntu</strong> vía <code>apt list --upgradable</code> y <strong>Alpine</strong> vía <code>apk list -u</code>. Los contenedores corriendo otras distribuciones (CentOS, Arch, …) se omiten por ahora — no muestran insignia en lugar de un cero engañoso.",
|
||||
"updatesPanelTitle": "Lo que muestra el panel",
|
||||
"updatesPanelItems": [
|
||||
"<strong>Recuento total de actualizables</strong> arriba, más un contador <strong>security</strong> separado cuando el repositorio subyacente marca alguno de los paquetes como security (suite \"-security\" de Debian/Ubuntu). Alpine no expone una suite security separada vía metadatos de apk, así que security siempre es 0 en contenedores Alpine.",
|
||||
"<strong>Lista por paquete</strong> con nombre, versión actual y versión objetivo. Úsala para decidir si lanzar la actualización ahora o esperar a una ventana de mantenimiento."
|
||||
],
|
||||
"updatesScopeTitle": "Qué rastrea el sistema vs qué cuenta el script",
|
||||
"updatesScopeBody": "Este detector de actualizaciones sigue lo que ya hay instalado dentro del contenedor — <strong>no</strong> instala nada nuevo y <strong>no</strong> sabe de aplicaciones desplegadas fuera de apt / apk (un contenedor Docker corriendo dentro del LXC, un Vaultwarden instalado desde fuente, un binario soltado en <code>/usr/local/bin</code>). Es una vista de <em>gestor de paquetes</em>, no una vista de <em>aplicación</em>. Las fases futuras de este trabajo integrarán metadatos de aplicación de community-scripts para que el seguimiento upstream por app (Vaultwarden, Jellyfin, …) sea posible.",
|
||||
"updatesToggleTitle": "Detección vs notificación — semántica del toggle",
|
||||
"updatesToggleCalloutTitle": "La detección siempre está activa; el toggle solo controla la notificación",
|
||||
"updatesToggleCalloutBody": "La detección de actualizaciones de paquetes en contenedores en ejecución corre incondicionalmente — la insignia aparece en esta modal siempre que haya updates pendientes, independientemente de cualquier otro ajuste. El toggle de notificación <code>lxc_updates_available</code> en <strong>Settings → Notifications</strong> solo controla si se entrega a tus canales un mensaje agrupado \"N CT(s) have pending updates\". Esto mantiene la semántica del toggle consistente con los otros streams de update (driver NVIDIA, driver Coral, optimizaciones ProxMenux): apagar las notificaciones nunca oculta la información en el panel.",
|
||||
"updatesApplyTitle": "Aplicar las actualizaciones",
|
||||
"updatesApplyBody": "Abre la shell del contenedor desde la barra de acciones del pie, o usa <code>pct exec <vmid> -- apt full-upgrade -y</code> / <code>pct exec <vmid> -- apk upgrade -y</code> desde el host. El panel reescanea en su ciclo de 24h (o tras el siguiente refresco manual) y la insignia se actualiza.",
|
||||
"firewallTitle": "Pestaña 5 — Firewall",
|
||||
"firewallTitle": "Pestaña 6 — Cortafuegos",
|
||||
"firewallIntro": "Lee el log de firewall de Proxmox por guest directamente del host (sin servicio extra, sin polling). La pestaña siempre está presente en la barra de navegación; el panel decide qué renderizar dependiendo de si el firewall está activo para ese guest y si alguna regla está logueando realmente:",
|
||||
"firewallItems": [
|
||||
"<strong>Firewall disabled</strong> — un aviso ámbar explica exactamente dónde activarlo en la UI de Proxmox (<em><Container|VM> → Firewall → Options</em>) y te recuerda que al menos una regla necesita <code>log: info</code> (o superior) antes de que aparezcan paquetes.",
|
||||
|
||||
Reference in New Issue
Block a user