New version 1.2.5

Stable release consolidating the v1.2.4 beta cycle (1.2.4.1-beta and 1.2.4.2-beta) into 1.2.5.

Highlights:

- Apps dashboard: single launcher for every LXC-registered app and user-defined Custom Web Link, with category badges, search, sort and one-click deep-links back to the guest modal.
- LXC Apps & Updates end-to-end: App tab inside every guest modal, upstream version tracking, and Easy Updates that cover OS packages, registered apps, Docker Engine and per-image updates on the same 24-hour cycle.
- Application detection catalog with 380+ tracked workloads generated live from community-scripts across seven detector methods.
- Monitor now speaks 8 languages: English, Spanish, German, French, Italian, Portuguese, Slovak and Swedish (i18n scaffolding by @vaso73).
- NVIDIA multi-GPU passthrough by exact BDF so one card can be assigned to a VM while another stays operational on the host or LXC.
- Navigation reorder, Memory & Swap real memory-pressure signal, native Pushover channel, Actions API, plus wide-reaching improvements across health, hardware, network, backup and post-install.

Full release notes: see CHANGELOG.md and https://github.com/MacRimi/ProxMenux/releases
This commit is contained in:
MacRimi
2026-09-01 19:15:42 +02:00
parent f8e65cc4c4
commit 315259f5ec
54 changed files with 4343 additions and 333 deletions
@@ -0,0 +1,127 @@
{
"meta": {
"title": "Panel Apps: un lanzador para todos los enlaces web | ProxMenux",
"description": "Utiliza el panel Apps para abrir enlaces web registrados en LXCs y enlaces personalizados, organizarlos por categoría y acceder al sistema invitado que aloja cada servicio."
},
"header": {
"title": "Panel: pestaña Apps",
"description": "Un único lanzador para las interfaces web que utilizas en el nodo, tanto si proceden de una aplicación registrada en un LXC como de un enlace web personalizado.",
"section": "ProxMenux Monitor · Panel"
},
"intro": {
"title": "Un lanzador, no un instalador de aplicaciones",
"body": "La pestaña <strong>Apps</strong> no instala software ni descubre servicios por sí sola. Convierte los enlaces web guardados en una cuadrícula con búsqueda. Los enlaces que pertenecen a un LXC se configuran en la <appTabLink>pestaña App</appTabLink> del contenedor; los enlaces personalizados permiten incluir servicios de VMs, proxies inversos y paneles externos."
},
"sources": {
"heading": "Qué aparece en Apps",
"intro": "Cada URL que se puede abrir genera su propia tarjeta. El origen determina dónde se edita, pero no cambia su aspecto durante el uso normal.",
"colSource": "Origen",
"colAppears": "Qué aparece",
"colManagedFrom": "Dónde se gestiona",
"rows": [
{
"source": "Aplicación registrada en un LXC",
"appears": "Una tarjeta por cada enlace web guardado en el registro de la aplicación.",
"managedFrom": "VMs y LXCs → modal del LXC → App"
},
{
"source": "Enlace personalizado asociado a un invitado",
"appears": "La URL de un servicio asociado a una VM o un LXC concretos.",
"managedFrom": "Apps → Editar"
},
{
"source": "Enlace personalizado sin asociación",
"appears": "Cualquier destino HTTP(S), incluido un servicio externo o publicado mediante proxy inverso.",
"managedFrom": "Apps → Editar"
}
],
"relationshipTitle": "Apps y la pestaña App del LXC tienen funciones diferentes",
"relationshipBody": "La <appTabLink>pestaña App</appTabLink> del LXC gestiona la identidad de la aplicación, sus enlaces web y el seguimiento opcional de versión. La pestaña principal <strong>Apps</strong> utiliza esos enlaces para ofrecer un acceso rápido. Por eso, al editar una tarjeta que pertenece a un LXC se vuelve a su registro original en lugar de crear una segunda configuración."
},
"cards": {
"heading": "Cómo utilizar una tarjeta",
"intro": "La tarjeta completa abre el servicio; sus controles pequeños aportan contexto sin abrir la URL.",
"items": [
"Pulsa la tarjeta para abrir su URL en una pestaña nueva del navegador.",
"El logotipo utiliza primero el definido para el enlace web y, cuando corresponde, recurre al logotipo general de la aplicación.",
"La etiqueta de categoría utiliza el mismo color y nombre que el enlace correspondiente en la pestaña App del LXC.",
"La etiqueta del invitado identifica la VM o el LXC asociado. Púlsala para abrir su modal; los enlaces de LXC abren directamente <strong>App</strong> y los de VM abren <strong>Estado</strong>.",
"La flecha morada hacia arriba indica que existe una actualización para esa aplicación o imagen Docker concreta. No representa el total de actualizaciones del invitado."
]
},
"toolbar": {
"heading": "Buscar, filtrar y ordenar",
"intro": "La barra de herramientas permite reducir una colección grande sin modificar los registros guardados.",
"items": [
"La búsqueda tiene en cuenta el nombre de la aplicación, el nombre del invitado, el VMID y la categoría.",
"El filtro de categoría permite mostrar una categoría concreta o todas las aplicaciones.",
"Se puede ordenar por <strong>Nombre</strong>, <strong>ID</strong> o <strong>Categoría</strong>. Al ordenar por categoría se insertan encabezados entre los grupos de tarjetas.",
"El orden seleccionado se recuerda en este navegador. El texto de búsqueda y el filtro de categoría se restablecen al volver a la página.",
"La pestaña Apps permanece disponible aunque la cuadrícula esté vacía, de modo que se pueda añadir el primer enlace personalizado sin registrar antes una aplicación LXC."
]
},
"customLinks": {
"heading": "Añadir y editar enlaces web personalizados",
"intro": "Utiliza un enlace personalizado cuando el servicio no esté representado por una aplicación registrada en un LXC.",
"steps": [
"Pulsa <strong>Añadir enlace</strong> en la barra de herramientas o en el estado vacío.",
"Introduce un nombre y una URL completa que empiece por <code>http://</code> o <code>https://</code>.",
"Opcionalmente, añade un logotipo, elige o crea una categoría y asocia el enlace a una VM o un LXC.",
"Guarda el enlace. La nueva tarjeta se añade a la cuadrícula de inmediato.",
"Para modificar o eliminar un enlace personalizado, pulsa <strong>Editar</strong> y utiliza el lápiz de su tarjeta."
],
"colField": "Campo",
"colRequired": "Obligatorio",
"colPurpose": "Finalidad",
"fields": [
{ "field": "Nombre", "required": "Sí", "purpose": "Título de la tarjeta y término de búsqueda." },
{ "field": "URL", "required": "Sí", "purpose": "Destino HTTP(S) completo que abre la tarjeta." },
{ "field": "URL del logotipo", "required": "No", "purpose": "Imagen remota que se muestra en la tarjeta." },
{ "field": "Categoría", "required": "No", "purpose": "Añade una etiqueta común y permite filtrar por categoría." },
{ "field": "Asociación a invitado", "required": "No", "purpose": "Vincula el enlace a una VM o un LXC y activa su acceso directo." }
],
"editTitle": "Edita la fuente original",
"editBody": "El modo de edición solo muestra lápices en los enlaces personalizados. Para cambiar una tarjeta generada desde una aplicación LXC registrada, abre la <appTabLink>pestaña App</appTabLink> de ese contenedor y edita allí el enlace web guardado."
},
"categories": {
"heading": "Categorías y señales de actualización",
"intro": "Las categorías organizan los enlaces; las señales de actualización informan del estado del software. Son conceptos independientes.",
"items": [
"El registro asistido por catálogo puede proponer una categoría para una aplicación LXC, pero el usuario siempre puede modificarla.",
"Desde el mismo selector se pueden crear categorías propias y reutilizarlas después en el filtro.",
"Los colores de las categorías son estables y se adaptan al tema claro u oscuro. El morado y el rojo se reservan para actualizaciones y estados de peligro.",
"En los enlaces web de Docker, ProxMenux relaciona la tarjeta con su contenedor o imagen y muestra el estado de actualización de esa imagen. Las actualizaciones de Docker Engine permanecen en la <updatesLink>pestaña Updates</updatesLink> del LXC."
]
},
"persistence": {
"heading": "Persistencia y comportamiento de la caché",
"intro": "El panel está diseñado para abrirse con los datos ya disponibles en el Monitor, sin volver a analizar todos los invitados.",
"items": [
"Los enlaces personalizados se guardan de forma atómica en <code>/etc/proxmenux/custom_links.json</code> y se cargan en memoria al iniciar el Monitor.",
"Los enlaces registrados en LXCs siguen formando parte del registro guardado de cada aplicación; el panel Apps no los duplica en el archivo de enlaces personalizados.",
"Al crear, editar o eliminar un enlace personalizado, la lista en memoria se actualiza de inmediato.",
"La preferencia de ordenación se guarda solo en el navegador. No se sincroniza entre dispositivos ni usuarios.",
"La posición de Apps en la navegación principal se configura por separado en <settingsLink>Ajustes → Orden de navegación</settingsLink>."
]
},
"troubleshooting": {
"heading": "Situaciones habituales",
"colProblem": "Situación",
"colResolution": "Solución",
"rows": [
{ "problem": "Una aplicación LXC está registrada, pero no aparece ninguna tarjeta", "resolution": "Abre su pestaña App y añade al menos un enlace web. El seguimiento de versión por sí solo no crea una tarjeta en el lanzador." },
{ "problem": "La URL o el logotipo son incorrectos", "resolution": "Edita el enlace personalizado desde Apps o modifica el enlace web en la pestaña App del LXC correspondiente." },
{ "problem": "Falta un servicio Docker", "resolution": "Edita la aplicación Docker registrada y guarda el puerto web publicado por el servicio como enlace web." },
{ "problem": "La flecha morada corresponde a otra actualización Docker", "resolution": "Revisa el nombre y la descripción del enlace web para que se puedan relacionar con el contenedor o la imagen correctos." },
{ "problem": "Apps se abre antes que Resumen del sistema", "resolution": "El primer elemento guardado en Ajustes → Orden de navegación se convierte en la pestaña inicial. Restaura el orden predeterminado o mueve Resumen a la primera posición." }
]
},
"whereNext": {
"heading": "Por dónde seguir",
"items": [
{ "label": "Pestaña App del LXC", "href": "/docs/monitor/dashboard/vms-lxcs/app", "tail": " — registrar aplicaciones, enlaces web y seguimiento opcional de versión." },
{ "label": "Pestaña Updates del LXC", "href": "/docs/monitor/dashboard/vms-lxcs/updates", "tail": " — configurar y ejecutar actualizaciones de aplicaciones, Docker Engine e imágenes." },
{ "label": "Pestaña Ajustes", "href": "/docs/monitor/dashboard/settings#navigation-order", "tail": " — cambiar el orden de navegación y la pestaña inicial." }
]
}
}
@@ -1,19 +1,19 @@
{
"meta": {
"title": "ProxMenux Monitor — Panel | ProxMenux Documentation",
"description": "El panel es la UI principal de ProxMenux Monitor: nueve pestañas (Resumen del sistema, Almacenamiento, Red, VMs y LXCs, Hardware, Logs del sistema, Terminal, Seguridad, Settings) más la cabecera global con la información de estado del Monitor de salud."
"description": "El panel es la interfaz principal de ProxMenux Monitor: diez pestañas de contenido, incluido el lanzador Apps, además de la cabecera global y un orden de navegación configurable."
},
"header": {
"title": "Panel",
"description": "El panel es la vista del día a día de ProxMenux Monitor — nueve pestañas, cada una centrada en una parte del host, más una cabecera global con la información de estado del Monitor de salud, la identidad del nodo y el control de refresco rápido.",
"description": "El panel es la vista diaria de ProxMenux Monitor: diez pestañas de contenido, incluido el lanzador Apps, además de una cabecera global y un orden de navegación configurable.",
"section": "ProxMenux Monitor"
},
"oneHeader": {
"title": "Una cabecera, nueve pestañas",
"title": "Una cabecera, diez pestañas",
"body": "La cabecera (logo, nombre del nodo, información de estado, uptime, refresco, conmutador de tema) permanece visible en todo momento. La pestaña activa que hay debajo cambia el área de contenido entera. El color de la información de estado refleja la peor categoría del <link>Monitor de salud</link> — es el mismo dato visto desde el panel."
},
"tabs": {
"heading": "Las nueve pestañas",
"heading": "Las diez pestañas",
"intro": "Cada pestaña tiene su propia página dedicada. Las páginas se añaden de forma incremental a medida que se completa la documentación; abajo está la lista completa con lo que cubre cada una.",
"headerTab": "Pestaña",
"headerOwns": "De qué se encarga",
@@ -21,7 +21,12 @@
{
"name": "Resumen del sistema",
"linksTo": "/docs/monitor/dashboard/system-overview",
"owns": "Widgets de CPU / memoria / temperatura, contador de VMs y LXCs activos, gráficas de métricas históricas, resúmenes de almacenamiento y red. Pestaña por defecto al entrar."
"owns": "Widgets de CPU, memoria y temperatura; contador de VMs y LXCs activos; gráficas históricas y resúmenes de almacenamiento y red. Es la pestaña inicial mientras no se personalice el orden de navegación."
},
{
"name": "Apps",
"linksTo": "/docs/monitor/dashboard/apps",
"owns": "Lanzador unificado para enlaces web registrados en LXCs y enlaces personalizados, con categorías, búsqueda, acceso al invitado y señales de actualización por aplicación."
},
{
"name": "Almacenamiento",
@@ -52,8 +57,8 @@
"owns": "Configuración de autenticación, contraseña / 2FA / tokens API, log de auditoría, panel opcional de Fail2Ban, despliegue de Secure Gateway."
},
{
"name": "Settings",
"owns": "Canales de notificación, proveedor de IA, duraciones de supresión, branding, flags avanzados."
"name": "Ajustes",
"owns": "Idioma del Monitor, orden de navegación, canales de notificación, proveedor de IA, umbrales de salud, exclusiones e inventario de optimizaciones."
}
]
},
@@ -71,10 +76,15 @@
"whereNext": {
"heading": "Por dónde seguir",
"items": [
{
"label": "Pestaña Apps",
"href": "/docs/monitor/dashboard/apps",
"tail": " — el lanzador unificado de enlaces web y su relación con las aplicaciones registradas en LXCs."
},
{
"label": "Pestaña Resumen del sistema",
"href": "/docs/monitor/dashboard/system-overview",
"tail": " — la pestaña por defecto, documentada al completo."
"tail": " — la pestaña inicial predeterminada, documentada al completo."
},
{
"label": "Monitor de salud",
@@ -1,16 +1,41 @@
{
"meta": {
"title": "ProxMenux Monitor — Panel: pestaña Settings | ProxMenux Documentation",
"description": "La pestaña Settings agrupa las preferencias del panel (unidades de red, duraciones de supresión, exclusiones de almacenamiento / interfaz), el panel embebido de notificaciones + IA y un inventario transparente de cada optimización post-instalación de ProxMenux actualmente activa en el host con acceso al código fuente."
"title": "ProxMenux Monitor — Panel: pestaña Ajustes | Documentación de ProxMenux",
"description": "La pestaña Ajustes controla el idioma del Monitor, el orden de navegación, las preferencias del panel, los umbrales y exclusiones de salud, las notificaciones, la IA y el inventario de optimizaciones."
},
"header": {
"title": "Panel: pestaña Settings",
"description": "Preferencias del panel, exclusiones de monitorización, el panel embebido de configuración de notificaciones + IA y un inventario en vivo de las optimizaciones post-instalación de ProxMenux actualmente activas en el host.",
"title": "Panel: pestaña Ajustes",
"description": "Idioma del Monitor, orden de navegación, preferencias del panel, exclusiones de monitorización, notificaciones, configuración de IA e inventario de optimizaciones de ProxMenux.",
"section": "ProxMenux Monitor · Panel"
},
"intro": {
"title": "Dónde vive realmente cada setting",
"body": "La pestaña Settings es una superficie única para varias preocupaciones distintas: cómo renderiza el panel, qué vigila el Monitor de salud, cómo salen las alertas y qué ha cambiado ya ProxMenux en el host. Las tarjetas que tienen su propia página de documentación profunda enlazan en lugar de duplicar el contenido aquí — Settings es el punto de entrada, no el manual."
"body": "La pestaña Ajustes reúne varias funciones distintas: cómo se muestra el panel, qué vigila el Monitor de salud, cómo se envían las alertas y qué cambios ha aplicado ProxMenux en el host. Las tarjetas que tienen su propia página de documentación enlazan a ella en lugar de duplicar el contenido: Ajustes es el punto de entrada."
},
"interfaceLanguage": {
"heading": "Idioma de la interfaz",
"intro": "Selecciona el idioma de la <strong>interfaz web del Monitor</strong>. El cambio se aplica de inmediato; no reinicia el servicio ni modifica el idioma de los menús de ProxMenux ejecutados en la terminal.",
"items": [
"ProxMenux Monitor ofrece actualmente inglés, alemán, español, francés, italiano, portugués, eslovaco y sueco.",
"En la primera visita, el Monitor utiliza el idioma del navegador si está disponible; en caso contrario, utiliza inglés.",
"Al cambiar la selección, se actualiza el idioma de la página y también el de otras pestañas abiertas con el mismo perfil del navegador.",
"Si falta una cadena traducida, solo ese texto se muestra en inglés en lugar de presentar una clave rota."
],
"scopeTitle": "Preferencia local del navegador",
"scopeBody": "La selección se guarda en <code>localStorage</code> con la clave <code>proxmenux-ui-language</code>. Por tanto, pertenece a este perfil de navegador y dispositivo; no es un ajuste global del nodo. Cada administrador puede utilizar un idioma distinto."
},
"navigationOrder": {
"heading": "Orden de navegación",
"intro": "Esta tarjeta permite ordenar los siete elementos principales: <strong>Resumen, Apps, VMs y LXCs, Nodo, Copias, Terminal y Administración</strong>. Pulsa <strong>Editar</strong>, arrastra las filas y guarda el resultado.",
"items": [
"Con el ratón, el arrastre comienza al pulsar. En una pantalla táctil se utiliza una pulsación mantenida de 250 ms para no confundir el desplazamiento normal con una reordenación.",
"Los grupos <strong>Nodo</strong> y <strong>Administración</strong> se mueven como unidades completas; sus páginas internas conservan el orden establecido por ProxMenux.",
"El menú móvil respeta el mismo orden guardado.",
"<strong>Restaurar valores predeterminados</strong> restablece el borrador. Es necesario guardar para aplicar el cambio.",
"Si una versión futura añade una nueva pestaña principal, esta se incorpora al final del orden personalizado sin borrar la organización del usuario."
],
"landingTitle": "El primer elemento se convierte en la pestaña inicial",
"landingBody": "El primer elemento guardado es la página que abre el Monitor al cargar. Si <strong>Nodo</strong> ocupa la primera posición, se abre Almacenamiento; si la ocupa <strong>Administración</strong>, se abren los Logs del sistema. El orden se guarda solo en este navegador con la clave <code>proxmenux-nav-order</code>, por lo que cada dispositivo puede utilizar una organización distinta."
},
"networkUnits": {
"heading": "Network Units",
@@ -257,6 +282,16 @@
"headerEndpoint": "Endpoint",
"headerSource": "Fuente",
"rows": [
{
"card": "Idioma de la interfaz",
"endpoint": "localStorage",
"source": "Preferencia del navegador <code>proxmenux-ui-language</code>, obtenida inicialmente del idioma del navegador cuando todavía no existe una selección guardada."
},
{
"card": "Orden de navegación",
"endpoint": "localStorage",
"source": "Preferencia del navegador <code>proxmenux-nav-order</code>; también determina la pestaña inicial."
},
{
"card": "Network Units",
"endpoint": "/api/settings",
@@ -292,6 +327,11 @@
"whereNext": {
"heading": "Por dónde seguir",
"items": [
{
"label": "Pestaña Apps",
"href": "/docs/monitor/dashboard/apps",
"tail": " — el lanzador cuya posición se puede cambiar desde Orden de navegación."
},
{
"label": "Notificaciones",
"href": "/docs/monitor/notifications",
@@ -10,7 +10,9 @@
"intro": {
"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."
"callout": "El registro, el seguimiento de versiones y la actualización son tres capacidades independientes. Cada una puede utilizarse sin exigir las otras dos.",
"dashboardTitle": "Del registro al lanzador Apps",
"dashboard": "Cada enlace web guardado aquí también se muestra como una tarjeta en la <appsLink>pestaña Apps</appsLink> principal. Esta página del LXC sigue siendo la fuente original para el nombre, el logotipo, los enlaces y el seguimiento de versión de la aplicación."
},
"overview": {
"heading": "Qué puede contener un registro",