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
@@ -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": "Avbildningens arkiv",
"converter": "Konverterare",
+27 -27
View File
@@ -76,27 +76,41 @@
},
{
"id": "update",
"title": "En transaktionell uppdatering",
"title": "Så fungerar en uppdatering och vad händer om den misslyckas",
"blocks": [
{
"p": "Uppdateringen är transaktionell: först förbereds och verifieras den nya avbildningen. Därefter skapas en säkerhetskopia och applikationens filsystem ersätts. Den nya versionen bekräftas först efter en godkänd funktionskontroll. Om något misslyckas efter att containern ändrats försöker systemet återställa den tidigare säkerhetskopian och verifierar resultatet."
},
{
"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": "Användare",
"registry": "OCI-registret",
"update": "Uppdatera instans",
"resolve": "Slå upp taggen",
"verify": "Verifiera arkivet och kör förkontroller",
"backup": "Stoppa och säkerhetskopiera CT:n",
"import": "Importera det nya rootfs",
"reapply": "Applicera kontraktet igen",
"healthy": "frisk",
"failure": "misslyckande",
"commit": "Kontraktet publiceras med den nya digesten",
"restored": "Tidigare instans återställd"
"registry": "OCI-avbildningsregister",
"update": "Uppdatera applikationen",
"resolve": "Identifiera den nya versionen",
"image": "Hämta den nya avbildningen",
"verify": "Verifiera avbildning och krav",
"backup": "Stoppa containern och säkerhetskopiera",
"import": "Installera det nya filsystemet",
"reapply": "Tillämpa den sparade konfigurationen",
"start": "Starta och kontrollera applikationen",
"checked": "Resultat av funktionskontrollen",
"healthy": "Applikationen fungerar",
"failure": "Uppdateringen misslyckas",
"commit": "Spara den nya versionen och konfigurationen",
"updated": "Uppdateringen slutförd",
"rollback": "Återställ och kontrollera tidigare säkerhetskopia",
"recovered": "Återställningen har verifierats",
"restored": "Tidigare version återställd",
"restoreFailed": "Återställningen har inte verifierats",
"manual": "Återställning väntar: granska felet"
}
}
},
{
"p": "Om förberedelser eller förhandskontroller misslyckas avbryts uppdateringen innan containern stoppas. Återställning av containerns säkerhetskopia återställer inte tidigare versioner av filer i värdens delade kataloger."
},
{
"list": {
"items": [
@@ -240,13 +254,6 @@
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Dialog som listar de restaurerade containrarna och erbjuder att återställa dem",
"caption": "Återställningen som erbjuds när Hantera installerade OCI-program öppnas."
}
},
{
"table": {
"headers": [
@@ -335,13 +342,6 @@
"title": "En container som kommer tillbaka",
"body": "En container som återlästs över sig själv från en äldre säkerhetskopia, återställts till en ögonblicksbild eller återvänt från en annan nod bär kontraktet för sitt nuvarande tillstånd. Om den väljs för en åtgärd och dess kontrakt skiljer sig från värdens startar åtgärden inte, och containern erbjuds för återställning."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Resultatet av återhämtningen med det privata nätverket, startordern och de registrerade containrarna",
"caption": "Resultatet av en återhämtning steg för steg."
}
}
]
},
+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": "Förbered varje avbildning",
"stop": "Sluta, huvudmedlem först",