Pre-release 1.2.7: OCI fixes, 12 new catalog applications and docs updates

Last changes before version 1.2.7.

OCI manager Apps
- Multi-container applications start while one of their containers is
  being backed up: the start hook waits until vzdump releases it and does
  not start it twice. The DHCP client of a dependency no longer keeps the
  lock of the hook, so later starts do not hang, and the watchdog waits
  while a dependency is locked. Installing or updating ProxMenux replaces
  the published copies of the hook already in place.
- Images built from scratch with a numeric user, such as ddns-updater,
  install: the container is created from a copy of the image that adds
  the /etc/passwd and /etc/group Proxmox VE needs, and the application
  runs with the user the image declares. The downloaded image stays
  unchanged. An image with a named user and no user database stops
  before anything is created, with a message that says why.

Catalog
- Twelve new applications: MDBListarr, CrossWatch, Free Games Claimer
  Remaster, Cloudreve, Poznote and AceStream HTTP Proxy, suggested in
  discussion #440, and the Dockur images of Chrony, Dnsmasq, Tor,
  Stunnel, strfry and Statping. The catalog lists 347 applications.
- Their prompts, labels and notes are translated into the seven
  languages of the menus.

Documentation
- OCI manager: architecture, lifecycle and stacks pages revised, with
  larger diagrams and new screenshots.
- Contributors: the page now thanks those developing, reviewing,
  translating and testing ProxMenux today and those who helped in its
  first steps, with new avatars.

Tests for the stack start hook, the watchdog, the user database check
of OCI images and the Tor installation summary.
This commit is contained in:
MacRimi
2026-10-25 13:17:54 +01:00
parent 2f48689087
commit fc41b04e87
103 changed files with 12799 additions and 603 deletions
+50 -21
View File
@@ -1,38 +1,67 @@
{
"meta": {
"title": "Colaboradores | Documentación de ProxMenux",
"description": "Reconocimiento a las personas que hacen posible ProxMenux: quienes prueban, revisan y desarrollan cada versión.",
"description": "Detrás de cada versión hay personas que desarrollan, revisan, traducen y prueban ProxMenux. Esta página agradece tanto el trabajo de hoy como la ayuda que hizo posibles sus primeros pasos.",
"ogTitle": "Colaboradores | Documentación de ProxMenux",
"ogDescription": "Conoce a los colaboradores detrás de ProxMenux."
"ogDescription": "Detrás de cada versión hay personas que desarrollan, revisan, traducen y prueban ProxMenux. Esta página agradece tanto el trabajo de hoy como la ayuda que hizo posibles sus primeros pasos."
},
"header": {
"title": "Colaboradores",
"description": "ProxMenux crece gracias a sus colaboradores. Esta página reconoce su trabajo: probar versiones antes de publicarlas, detectar regresiones, revisar PR y ayudar a orientar las nuevas funciones.",
"description": "Detrás de cada versión hay personas que desarrollan, revisan, traducen y prueban ProxMenux. Esta página agradece tanto el trabajo de hoy como la ayuda que hizo posibles sus primeros pasos.",
"section": "Acerca de"
},
"beyond": {
"title": "Más allá de esta lista",
"body": "Muchas más personas contribuyen notificando errores, proponiendo funciones en Discussions, probando versiones beta y traduciendo el proyecto. La lista completa de colaboradores del código está en el <extlink>gráfico de colaboradores de GitHub</extlink>. Esta página destaca a quienes participan más activamente en las pruebas y la revisión de las versiones de ProxMenux."
"active": {
"heading": "Desarrollo, revisión y colaboración continuada",
"intro": "Vaso73, f3rs3n y jcastro participan de forma continuada con mejoras, correcciones y revisiones. Su trabajo abarca mucho más que probar una versión: también ayuda a construir y depurar las siguientes.",
"people": {
"Vaso73": "Mejoras y correcciones en OCI manager y ProxMenux Monitor, además de la traducción y revisión de los textos en eslovaco.",
"f3rs3n": "Correcciones y revisión del comportamiento de los scripts y del Monitor, junto con mejoras continuas de la traducción al italiano.",
"jcastro": "Desarrollo y depuración de funciones OCI, copias de seguridad y Monitor, además de revisión de documentación y pruebas desde los primeros pasos del proyecto."
}
},
"code": {
"heading": "Más contribuciones al código",
"intro": "También han aportado cambios al código las siguientes personas. Cada enlace permite conocer su trabajo; el historial de GitHub recoge las contribuciones y las PR que se siguen incorporando.",
"viewWork": "Ver aportaciones",
"history": "Historial de contribuciones",
"merged": "Ver todas las PR integradas"
},
"community": {
"heading": "Una comunidad que también prueba, traduce y documenta",
"body": "No todo el trabajo llega en forma de código. Reproducir un fallo, compartir registros útiles, probar hardware distinto, corregir una explicación o proponer una mejora también ayuda a que ProxMenux funcione mejor.",
"languages": "Gracias especialmente a quienes revisan los textos en su idioma. Las traducciones de la interfaz, del Monitor y de la documentación acercan el proyecto a más personas y hacen que sea más cómodo utilizarlo."
},
"testers": {
"heading": "Pruebas y revisión",
"intro": "Estas personas estuvieron entre las primeras en contribuir al proyecto. Sus pruebas, avisos de errores y propuestas de mejora ayudaron a convertir ProxMenux en lo que es hoy.",
"roles": {
"testing": "Pruebas",
"testingReviewer": "Pruebas y revisión"
},
"heading": "Gracias por las primeras pruebas",
"intro": "Este reconocimiento sigue teniendo su lugar. Estas personas ayudaron a validar las primeras versiones, probaron el proyecto en sus equipos y compartieron errores y sugerencias cuando ProxMenux comenzaba a crecer.",
"youtube": "YouTube"
},
"contribute": {
"heading": "¿Quieres colaborar?",
"intro": "Cualquier contribución es bienvenida — código, pruebas, diseño, documentación o simplemente compartir tus ideas:",
"tester": "<strong>Pruebas</strong>: prueba el <beta>canal beta</beta> y comunica qué funciona y qué no antes de que se publiquen las versiones estables.",
"developer": "<strong>Desarrollador</strong> — Bash + Next.js (TypeScript) + un poco de Python para el venv de traducción. Los PRs son bienvenidos en <gh>GitHub</gh>.",
"designer": "<strong>Diseñador</strong> — mejoras de UI, iconos, capturas para la documentación.",
"ideas": "<strong>Ideas</strong> — abre un hilo en <disc>GitHub Discussions</disc> antes de abrir una incidencia de petición de función."
"heading": "Tu aportación también tiene un lugar",
"intro": "Puedes colaborar con una corrección pequeña, una prueba concreta o la revisión de un texto. No hace falta desarrollar una función completa para ayudar.",
"ways": {
"code": {
"title": "Código y revisión",
"body": "Desarrolla funciones, corrige errores o revisa una PR. La guía de contribución explica cómo preparar y proponer los cambios."
},
"testing": {
"title": "Pruebas y diagnóstico",
"body": "Prueba las versiones beta y comparte los pasos para reproducir un problema y los registros que ayuden a entenderlo."
},
"translations": {
"title": "Traducciones",
"body": "Revisa los mensajes en tu idioma y ayuda a mantenerlos al día cuando se añaden nuevas funciones."
},
"docs": {
"title": "Documentación y diseño",
"body": "Aclara una guía, añade una captura o mejora la interfaz para que otras personas puedan seguirla con más facilidad."
}
},
"guide": "Guía de contribución",
"discuss": "Hablar con la comunidad"
},
"coc": {
"title": "Lee primero el código de conducta",
"body": "Antes de enviar código o reportar incidencias, dale una lectura rápida al <coclink>Código de conducta y buenas prácticas</coclink>. Cubre las expectativas sobre responsabilidad del código, divulgación de problemas de seguridad y alcance de los PRs."
"thanks": {
"title": "Gracias por hacerlo posible",
"body": "A quienes aparecen aquí y a quienes ayudan en una issue, una conversación o una prueba: gracias por dedicar vuestro tiempo a mejorar ProxMenux."
}
}
@@ -15,7 +15,7 @@
"blocks": [
{
"mermaid": {
"chartCode": "flowchart LR\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]",
"chartCode": "flowchart TB\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]",
"labels": {
"repo": "Repositorio de la imagen",
"converter": "Conversor",
+27 -27
View File
@@ -76,27 +76,41 @@
},
{
"id": "update",
"title": "Una actualización transaccional",
"title": "Cómo se actualiza y qué ocurre si falla",
"blocks": [
{
"p": "La actualización es transaccional: primero se prepara y verifica la imagen nueva; después se guarda una copia de seguridad y se sustituye el sistema de archivos de la aplicación. La nueva versión solo se confirma cuando supera la comprobación de funcionamiento. Si algo falla después de modificar el contenedor, se intenta restaurar la copia anterior y se verifica el resultado."
},
{
"mermaid": {
"chartCode": "sequenceDiagram\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: digest\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n X-->>P: healthcheck\n alt {{healthy}}\n P-->>U: {{commit}}\n else {{failure}}\n P->>X: Rollback\n P-->>U: {{restored}}\n end",
"chartCode": "---\nconfig:\n sequence:\n wrap: true\n actorFontSize: 18\n messageFontSize: 18\n width: 170\n actorMargin: 40\n useMaxWidth: false\n---\nsequenceDiagram\n autonumber\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: {{image}}\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n P->>X: {{start}}\n X-->>P: {{checked}}\n alt {{healthy}}\n P->>P: {{commit}}\n P-->>U: {{updated}}\n else {{failure}}\n P->>X: {{rollback}}\n alt {{recovered}}\n P-->>U: {{restored}}\n else {{restoreFailed}}\n P-->>U: {{manual}}\n end\n end",
"labels": {
"user": "Usuario",
"registry": "Registro OCI",
"update": "Actualizar la instancia",
"resolve": "Resolver la etiqueta",
"verify": "Verificar el archivo y realizar las comprobaciones previas",
"backup": "Detener y respaldar el CT",
"import": "Importar el rootfs nuevo",
"reapply": "Aplicar de nuevo el contrato",
"healthy": "correcto",
"failure": "fallo",
"commit": "Contrato publicado con el digest nuevo",
"restored": "Instancia anterior restaurada"
"registry": "Registro de imágenes OCI",
"update": "Actualizar la aplicación",
"resolve": "Identificar la versión nueva",
"image": "Descargar la imagen nueva",
"verify": "Verificar imagen y requisitos",
"backup": "Detener el contenedor y crear el backup",
"import": "Instalar el sistema de archivos nuevo",
"reapply": "Reaplicar la configuración guardada",
"start": "Arrancar y comprobar la aplicación",
"checked": "Resultado de la comprobación",
"healthy": "La aplicación funciona",
"failure": "La actualización falla",
"commit": "Guardar la versión y configuración nuevas",
"updated": "Actualización completada",
"rollback": "Restaurar y comprobar la copia anterior",
"recovered": "La recuperación se verifica",
"restored": "Versión anterior restaurada",
"restoreFailed": "La recuperación no se verifica",
"manual": "Recuperación pendiente: revisar el error"
}
}
},
{
"p": "Si la preparación o las comprobaciones previas fallan, la actualización se detiene antes de parar el contenedor. Los archivos de directorios compartidos del host no vuelven a una versión anterior al restaurar el backup del contenedor."
},
{
"list": {
"items": [
@@ -240,13 +254,6 @@
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Diálogo que lista los contenedores restaurados y ofrece recuperarlos",
"caption": "La recuperación que se ofrece al abrir Gestionar aplicaciones OCI instaladas."
}
},
{
"table": {
"headers": [
@@ -335,13 +342,6 @@
"title": "Un contenedor que vuelve",
"body": "Un contenedor restaurado sobre sí mismo desde un backup anterior, devuelto a un snapshot o llegado de vuelta desde otro nodo lleva el contrato del estado en el que está. Al seleccionarlo para una operación, si su contrato es distinto del de este host, la operación no empieza y el contenedor se ofrece para recuperarlo."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Resultado de la recuperación con la red privada, el orden de arranque y los contenedores registrados",
"caption": "El resultado de una recuperación, paso a paso."
}
}
]
},
+1 -1
View File
@@ -368,7 +368,7 @@
},
{
"mermaid": {
"chartCode": "flowchart LR\n P[\"{{prepare}}\"] --> S[\"{{stop}}\"]\n S --> B[\"{{backup}}\"]\n B --> R[\"{{replace}}\"]\n R --> H{\"{{healthy}}\"}\n H -- \"{{yes}}\" --> C[\"{{commit}}\"]\n H -- \"{{no}}\" --> X[\"{{rollback}}\"]",
"chartCode": "flowchart TB\n P[\"{{prepare}}\"] --> S[\"{{stop}}\"]\n S --> B[\"{{backup}}\"]\n B --> R[\"{{replace}}\"]\n R --> H{\"{{healthy}}\"}\n H -- \"{{yes}}\" --> C[\"{{commit}}\"]\n H -- \"{{no}}\" --> X[\"{{rollback}}\"]",
"labels": {
"prepare": "Preparar todas las imágenes",
"stop": "Detener, primero el principal",