Files
ProxMenux/web/messages/es/docs/monitor/dashboard/vms-lxcs-updates.json
T

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."
}
}