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": "Contributori | Documentazione ProxMenux",
"description": "Un riconoscimento alle persone che rendono possibile ProxMenux: tester, revisori e sviluppatori che contribuiscono a ogni versione.",
"description": "Dietro ogni versione ci sono persone che sviluppano, revisionano, traducono e provano ProxMenux. Questa pagina ringrazia chi contribuisce oggi e chi ha aiutato il progetto a muovere i primi passi.",
"ogTitle": "Contributori | Documentazione ProxMenux",
"ogDescription": "Incontra i contributori dietro ProxMenux."
"ogDescription": "Dietro ogni versione ci sono persone che sviluppano, revisionano, traducono e provano ProxMenux. Questa pagina ringrazia chi contribuisce oggi e chi ha aiutato il progetto a muovere i primi passi."
},
"header": {
"title": "Contributori",
"description": "Il progetto ProxMenux cresce grazie ai suoi collaboratori. Questa pagina riconosce il loro lavoro: provare le versioni prima della pubblicazione, individuare regressioni, esaminare le PR e orientare le nuove funzionalità.",
"description": "Dietro ogni versione ci sono persone che sviluppano, revisionano, traducono e provano ProxMenux. Questa pagina ringrazia chi contribuisce oggi e chi ha aiutato il progetto a muovere i primi passi.",
"section": "Informazioni"
},
"beyond": {
"title": "Oltre questa lista",
"body": "Molte altre persone contribuiscono segnalando bug, proponendo funzionalità in Discussions, provando le versioni beta e traducendo il progetto. L’elenco completo dei collaboratori al codice si trova nel <extlink>grafico dei contributori di GitHub</extlink>. Questa pagina presenta chi partecipa più attivamente ai test e alla revisione delle versioni di ProxMenux."
"active": {
"heading": "Sviluppo, revisione e collaborazione continuativa",
"intro": "Vaso73, f3rs3n e jcastro partecipano regolarmente con miglioramenti, correzioni e revisioni. Il loro lavoro va oltre le prove di una versione: contribuisce anche a sviluppare e correggere quelle successive.",
"people": {
"Vaso73": "Miglioramenti e correzioni in OCI manager e ProxMenux Monitor, insieme alla traduzione e revisione dei testi in slovacco.",
"f3rs3n": "Correzioni e revisione del comportamento degli script e del Monitor, insieme a continui miglioramenti della traduzione italiana.",
"jcastro": "Sviluppo e correzione delle funzioni OCI, di backup e del Monitor, oltre alla revisione della documentazione e alle prove fin dagli inizi del progetto."
}
},
"code": {
"heading": "Altri contributi al codice",
"intro": "Anche le seguenti persone hanno contribuito con modifiche al codice. I collegamenti permettono di conoscere il loro lavoro; la cronologia di GitHub raccoglie i contributi e le pull request integrate.",
"viewWork": "Vedi i contributi",
"history": "Cronologia dei contributi",
"merged": "Vedi tutte le PR integrate"
},
"community": {
"heading": "Una comunità che prova, traduce e documenta",
"body": "Non tutto il lavoro arriva sotto forma di codice. Riprodurre un errore, condividere log utili, provare hardware diverso, chiarire una spiegazione o proporre un miglioramento aiuta ProxMenux a funzionare meglio.",
"languages": "Un ringraziamento speciale a chi rivede i testi nella propria lingua. Le traduzioni dei menu, del Monitor e della documentazione rendono il progetto accessibile a più persone e più comodo da usare."
},
"testers": {
"heading": "Tester e recensori",
"intro": "Queste persone sono state tra le prime a contribuire al progetto. I loro test, le segnalazioni di problemi e le proposte di miglioramento hanno aiutato ProxMenux a diventare ciò che è oggi.",
"roles": {
"testing": "Test",
"testingReviewer": "Test e revisione"
},
"heading": "Grazie per le prime prove",
"intro": "Questo riconoscimento mantiene il suo posto. Queste persone hanno aiutato a validare le prime versioni, provato il progetto sui propri dispositivi e condiviso errori e suggerimenti quando ProxMenux iniziava a crescere.",
"youtube": "YouTube"
},
"contribute": {
"heading": "Vuoi contribuire?",
"intro": "Ogni contributo è benvenuto: codice, test, design, documentazione o anche solo la condivisione delle tue idee:",
"tester": "<strong>Tester</strong> — prova il canale <beta>beta</beta> e segnala ciò che funziona e ciò che non funziona prima delle versioni stabili.",
"developer": "<strong>Sviluppatore</strong> — Bash, Next.js (TypeScript) e un po’ di Python per l’ambiente virtuale di traduzione (venv). Le PR sono benvenute su <gh>GitHub</gh>.",
"designer": "<strong>Designer</strong> — Miglioramenti dell'interfaccia utente, icone, screenshot per la documentazione.",
"ideas": "<strong>Idee</strong> — apri una discussione in <disc>GitHub Discussions</disc> prima di creare una issue per richiedere una funzionalità."
"heading": "Anche il tuo contributo è benvenuto",
"intro": "Puoi aiutare con una piccola correzione, una prova specifica o la revisione di un testo. Non serve sviluppare una funzionalità completa.",
"ways": {
"code": {
"title": "Codice e revisione",
"body": "Sviluppa funzionalità, correggi errori o revisiona una PR. La guida spiega come preparare e proporre le modifiche."
},
"testing": {
"title": "Prove e diagnosi",
"body": "Prova le versioni beta e condividi i passaggi per riprodurre un problema e i log utili a comprenderlo."
},
"translations": {
"title": "Traduzioni",
"body": "Rivedi i messaggi nella tua lingua e aiuta a mantenerli aggiornati quando vengono aggiunte nuove funzionalità."
},
"docs": {
"title": "Documentazione e design",
"body": "Chiarisci una guida, aggiungi una schermata o migliora l'interfaccia per aiutare altre persone a seguirla."
}
},
"guide": "Guida ai contributi",
"discuss": "Parla con la comunità"
},
"coc": {
"title": "Leggi prima il codice di condotta",
"body": "Prima di proporre codice o segnalare problemi, leggi il <coclink>Codice di condotta e le buone pratiche</coclink>. Descrive le aspettative sulla responsabilità del codice, sulla segnalazione delle vulnerabilità e sull’ambito delle PR."
"thanks": {
"title": "Grazie per renderlo possibile",
"body": "A chi compare qui e a chi aiuta in una issue, una conversazione o una prova: grazie per il tempo dedicato a migliorare 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": "Repository dell’immagine",
"converter": "Convertitore",
+27 -27
View File
@@ -76,27 +76,41 @@
},
{
"id": "update",
"title": "Un aggiornamento transazionale",
"title": "Come avviene un aggiornamento e cosa succede se fallisce",
"blocks": [
{
"p": "L'aggiornamento è transazionale: prima si prepara e verifica la nuova immagine; poi si crea un backup e si sostituisce il filesystem dell'applicazione. La nuova versione viene confermata solo dopo una verifica di funzionamento riuscita. Se si verifica un errore dopo una modifica al contenitore, si tenta il ripristino del backup precedente e se ne verifica il risultato."
},
{
"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": "Utente",
"registry": "Registro OCI",
"update": "Aggiorna istanza",
"resolve": "Risolvere il tag",
"verify": "Verifica archivio e controlli preliminari",
"backup": "Arresta e salva un backup del CT",
"import": "Importa il nuovo rootfs",
"reapply": "Applicare nuovamente il contratto",
"healthy": "integro",
"failure": "guasto",
"commit": "Contratto pubblicato con il nuovo digest",
"restored": "Precedente istanza ripristinata"
"registry": "Registro di immagini OCI",
"update": "Aggiornare l'applicazione",
"resolve": "Identificare la nuova versione",
"image": "Scaricare la nuova immagine",
"verify": "Verificare immagine e requisiti",
"backup": "Arrestare il contenitore e creare il backup",
"import": "Installare il nuovo filesystem",
"reapply": "Riapplicare la configurazione salvata",
"start": "Avviare e verificare l'applicazione",
"checked": "Risultato della verifica di funzionamento",
"healthy": "L'applicazione funziona",
"failure": "L'aggiornamento fallisce",
"commit": "Salvare nuova versione e configurazione",
"updated": "Aggiornamento completato",
"rollback": "Ripristinare e verificare il backup precedente",
"recovered": "Ripristino verificato",
"restored": "Versione precedente ripristinata",
"restoreFailed": "Ripristino non verificato",
"manual": "Ripristino in sospeso: controllare l'errore"
}
}
},
{
"p": "Se la preparazione o i controlli preliminari falliscono, l'aggiornamento si interrompe prima di arrestare il contenitore. Il ripristino del backup del contenitore non riporta a una versione precedente i file nelle directory condivise dell'host."
},
{
"list": {
"items": [
@@ -240,13 +254,6 @@
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Finestra di dialogo che elenca i contenitori ripristinati e ne propone il recupero",
"caption": "Il recupero offerto quando si apre Gestione applicazioni OCI installate."
}
},
{
"table": {
"headers": [
@@ -335,13 +342,6 @@
"title": "Un contenitore che ritorna",
"body": "Un contenitore ripristinato su se stesso da un backup precedente, riportato a uno snapshot o rientrato da un altro nodo porta il contratto dello stato in cui si trova. Se viene selezionato per un’operazione e il suo contratto differisce da quello dell’host, l’operazione non parte e viene proposto il recupero del contenitore."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Risultato del recupero con la rete privata, l’ordine di avvio e i contenitori registrati",
"caption": "Il risultato di un recupero, passo dopo passo."
}
}
]
},
+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": "Preparare ogni immagine",
"stop": "Stop, primo membro principale",