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 | Documentação ProxMenux",
"description": "Reconhecimento às pessoas que tornam o ProxMenux possível: quem testa, revê e desenvolve cada versão.",
"description": "Por trás de cada versão há pessoas que desenvolvem, revêm, traduzem e testam o ProxMenux. Esta página agradece tanto o trabalho atual como a ajuda que tornou possíveis os primeiros passos do projeto.",
"ogTitle": "Colaboradores | Documentação ProxMenux",
"ogDescription": "Conheça os colaboradores por trás do ProxMenux."
"ogDescription": "Por trás de cada versão há pessoas que desenvolvem, revêm, traduzem e testam o ProxMenux. Esta página agradece tanto o trabalho atual como a ajuda que tornou possíveis os primeiros passos do projeto."
},
"header": {
"title": "Colaboradores",
"description": "O projeto ProxMenux cresce graças aos seus colaboradores. Esta página reconhece o seu trabalho: testar versões antes da publicação, detetar regressões, rever PR e ajudar a orientar novas funcionalidades.",
"description": "Por trás de cada versão há pessoas que desenvolvem, revêm, traduzem e testam o ProxMenux. Esta página agradece tanto o trabalho atual como a ajuda que tornou possíveis os primeiros passos do projeto.",
"section": "Sobre"
},
"beyond": {
"title": "Para além desta lista",
"body": "Muitas outras pessoas contribuem ao comunicar erros, propor funcionalidades em Discussions, testar versões beta e traduzir o projeto. A lista completa de colaboradores do código está no <extlink>gráfico de colaboradores do GitHub</extlink>. Esta página destaca quem participa mais ativamente nos testes e na revisão das versões do ProxMenux."
"active": {
"heading": "Desenvolvimento, revisão e colaboração contínua",
"intro": "Vaso73, f3rs3n e jcastro participam regularmente com melhorias, correções e revisões. O seu trabalho vai além de testar uma versão: também ajuda a construir e depurar as seguintes.",
"people": {
"Vaso73": "Melhorias e correções no OCI manager e no ProxMenux Monitor, além da tradução e revisão dos textos em eslovaco.",
"f3rs3n": "Correções e revisão do comportamento dos scripts e do Monitor, juntamente com melhorias contínuas da tradução italiana.",
"jcastro": "Desenvolvimento e depuração de funções OCI, cópias de segurança e Monitor, além da revisão de documentação e testes desde os primeiros passos do projeto."
}
},
"code": {
"heading": "Mais contribuições para o código",
"intro": "As pessoas seguintes também contribuíram com alterações ao código. Os links permitem conhecer o seu trabalho; o histórico do GitHub reúne as contribuições e as pull requests integradas.",
"viewWork": "Ver contribuições",
"history": "Histórico de contribuições",
"merged": "Ver todas as PR integradas"
},
"community": {
"heading": "Uma comunidade que também testa, traduz e documenta",
"body": "Nem todo o trabalho chega sob a forma de código. Reproduzir um erro, partilhar registos úteis, testar outro hardware, esclarecer uma explicação ou propor uma melhoria também ajuda o ProxMenux.",
"languages": "Um agradecimento especial a quem revê os textos na sua língua. As traduções dos menus, do Monitor e da documentação tornam o projeto acessível a mais pessoas e mais cómodo de utilizar."
},
"testers": {
"heading": "Testadores e revisores",
"intro": "Estas pessoas estiveram entre as primeiras a contribuir para o projeto. Os seus testes, relatos de problemas e sugestões de melhoria ajudaram o ProxMenux a tornar-se no que é hoje.",
"roles": {
"testing": "Teste",
"testingReviewer": "Testes e revisão"
},
"heading": "Obrigado pelos primeiros testes",
"intro": "Este reconhecimento continua a ter o seu lugar. Estas pessoas ajudaram a validar as primeiras versões, testaram o projeto nos seus equipamentos e partilharam erros e sugestões quando o ProxMenux começava a crescer.",
"youtube": "YouTube"
},
"contribute": {
"heading": "Queres contribuir?",
"intro": "Todos os contributos são bem-vindos: código, testes, design, documentação ou simplesmente partilhar ideias:",
"tester": "<strong>Testes</strong> — experimente o <beta>canal beta</beta> e comunique o que funciona ou não antes da publicação das versões estáveis.",
"developer": "<strong>Desenvolvimento</strong> — Bash, Next.js (TypeScript) e algum Python para o ambiente virtual de tradução (venv). Os PR são bem-vindos no <gh>GitHub</gh>.",
"designer": "<strong>Designer</strong> — Melhorias de interface, ícones, capturas de tela para documentação.",
"ideas": "<strong>Ideias</strong> — abra um tópico em <disc>GitHub Discussions</disc> antes de criar uma issue para pedir uma funcionalidade."
"heading": "A tua contribuição também tem lugar",
"intro": "Podes ajudar com uma pequena correção, um teste específico ou a revisão de um texto. Não é preciso desenvolver uma funcionalidade completa.",
"ways": {
"code": {
"title": "Código e revisão",
"body": "Desenvolve funcionalidades, corrige erros ou revê uma PR. O guia explica como preparar e propor alterações."
},
"testing": {
"title": "Testes e diagnóstico",
"body": "Experimenta as versões beta e partilha passos para reproduzir um problema e registos que ajudem a compreendê-lo."
},
"translations": {
"title": "Traduções",
"body": "Revê as mensagens na tua língua e ajuda a mantê-las atualizadas quando se acrescentam funcionalidades."
},
"docs": {
"title": "Documentação e design",
"body": "Esclarece um guia, acrescenta uma captura ou melhora a interface para facilitar a utilização por outras pessoas."
}
},
"guide": "Guia de contribuição",
"discuss": "Falar com a comunidade"
},
"coc": {
"title": "Leia primeiro o Código de Conduta",
"body": "Antes de propor código ou comunicar problemas, leia o <coclink>Código de conduta e as boas práticas</coclink>. Explica as expectativas sobre a responsabilidade pelo código, a comunicação de vulnerabilidades e o âmbito dos PR."
"thanks": {
"title": "Obrigado por tornarem isto possível",
"body": "A quem aparece aqui e a quem ajuda numa issue, numa conversa ou num teste: obrigado pelo tempo dedicado a melhorar o 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": "Repositório da imagem",
"converter": "Conversor",
+27 -27
View File
@@ -76,27 +76,41 @@
},
{
"id": "update",
"title": "Uma atualização transacional",
"title": "Como funciona uma atualização e o que acontece se falhar",
"blocks": [
{
"p": "A atualização é transacional: primeiro prepara-se e verifica-se a nova imagem; depois cria-se uma cópia de segurança e substitui-se o sistema de ficheiros da aplicação. A nova versão só é confirmada após passar a verificação de funcionamento. Se ocorrer uma falha após modificar o contentor, tenta-se restaurar a cópia anterior e verifica-se o 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": "Usuário",
"registry": "Registo de OCI",
"update": "Atualizar instância",
"resolve": "Resolver a etiqueta",
"verify": "Verificar o arquivo e executar as verificações prévias",
"backup": "Pare e faça backup do CT",
"import": "Importar o novo rootfs",
"reapply": "Aplicar o contrato novamente",
"healthy": "íntegro",
"failure": "falha",
"commit": "Contrato publicado com o novo digest",
"restored": "A instância anterior foi restaurada"
"registry": "Registo de imagens OCI",
"update": "Atualizar a aplicação",
"resolve": "Identificar a nova versão",
"image": "Descarregar a nova imagem",
"verify": "Verificar imagem e requisitos",
"backup": "Parar o contentor e criar a cópia de segurança",
"import": "Instalar o novo sistema de ficheiros",
"reapply": "Reaplicar a configuração guardada",
"start": "Iniciar e verificar a aplicação",
"checked": "Resultado da verificação de funcionamento",
"healthy": "A aplicação funciona",
"failure": "A atualização falha",
"commit": "Guardar a nova versão e configuração",
"updated": "Atualização concluída",
"rollback": "Restaurar e verificar a cópia anterior",
"recovered": "Recuperação verificada",
"restored": "Versão anterior restaurada",
"restoreFailed": "Recuperação não verificada",
"manual": "Recuperação pendente: verificar o erro"
}
}
},
{
"p": "Se a preparação ou as verificações prévias falharem, a atualização é interrompida antes de parar o contentor. Restaurar a cópia do contentor não repõe versões anteriores dos ficheiros nos diretórios partilhados do host."
},
{
"list": {
"items": [
@@ -240,13 +254,6 @@
]
}
},
{
"figure": {
"src": "/oci-manager/restore-offer.png",
"alt": "Diálogo que lista os contentores restaurados e oferece a sua recuperação",
"caption": "A recuperação oferecida quando Gerenciar aplicativos OCI instalados abre."
}
},
{
"table": {
"headers": [
@@ -335,13 +342,6 @@
"title": "Um contentor que volta",
"body": "Um contentor restaurado sobre si próprio a partir de uma cópia de segurança anterior, reposto num snapshot ou devolvido de outro nó transporta o contrato do estado em que se encontra. Se for selecionado para uma operação e o seu contrato diferir do deste host, a operação não começa e é oferecida a recuperação do contentor."
}
},
{
"figure": {
"src": "/oci-manager/restore-result.png",
"alt": "Resultado da recuperação com a rede privada, a ordem de início e os contentores registados",
"caption": "Resultado de uma recuperação, passo a 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": "Preparar cada imagem",
"stop": "Parar, membro principal primeiro",