mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-14 10:47:36 +00:00
232 lines
19 KiB
JSON
232 lines
19 KiB
JSON
{
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"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:",
|
|
"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."
|
|
],
|
|
"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>."
|
|
},
|
|
"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."
|
|
],
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
],
|
|
"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."
|
|
},
|
|
"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."
|
|
},
|
|
"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."
|
|
}
|
|
}
|