docs: review Monitor documentation in all seven translations

This commit is contained in:
Jonatan
2026-10-17 15:08:53 +02:00
parent ce1a3de719
commit dace78214a
209 changed files with 43788 additions and 1942 deletions
@@ -0,0 +1,174 @@
{
"meta": {
"title": "Painel Apps: um lançador para todas as ligações web | ProxMenux",
"description": "Use o painel de aplicativos para abrir links web registrados LXC e links personalizados, organizá-los por categoria e voltar para o hóspede que possui cada serviço."
},
"header": {
"title": "Painel: Página de aplicações",
"description": "Um único lançador para as interfaces web que você usa em todo o nó, seja de um aplicativo LXC registrado ou um Web Link personalizado.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Um lançador, não um instalador de aplicações",
"body": "O separador <strong>Apps</strong> não instala software nem descobre serviços. Reúne as ligações guardadas numa grelha pesquisável. As ligações LXC configuram-se no <appTabLink>separador App</appTabLink> do sistema convidado; as personalizadas incluem serviços VM, proxies inversos e painéis externos."
},
"sources": {
"heading": "O que aparece em Apps",
"intro": "Cada URL lançável torna-se seu próprio cartão. A fonte determina onde esse cartão é editado, mas não como ele parece durante o uso normal.",
"colSource": "Origem",
"colAppears": "O que aparece",
"colManagedFrom": "Onde é gerido",
"rows": [
{
"source": "Aplicação LXC registada",
"appears": "Um cartão para cada Web Link salvo no registro da aplicação.",
"managedFrom": "VMs e LXCs → Janela do LXC → Aplicação"
},
{
"source": "Ligação personalizada ligada a um hóspede",
"appears": "Um URL de serviço associado a um VM ou LXC.",
"managedFrom": "Apps → Editar"
},
{
"source": "Ligação personalizada sem associação",
"appears": "Qualquer destino HTTP(S), incluindo serviços externos ou publicados através de proxy inverso.",
"managedFrom": "Apps → Editar"
}
],
"relationshipTitle": "Apps e a aba de aplicativos LXC têm trabalhos diferentes",
"relationshipBody": "O <appTabLink>separador App</appTabLink> do LXC gere identidade, ligações web e acompanhamento opcional da versão. <strong>Apps</strong> utiliza estas ligações para as abrir rapidamente. Editar um cartão LXC regressa ao registo do sistema convidado sem duplicar a configuração."
},
"cards": {
"heading": "Como usar um cartão",
"intro": "Toda a placa é o alvo de lançamento, enquanto seus controles menores fornecem contexto sem abrir o serviço.",
"items": [
"Clique no cartão para abrir sua URL em uma nova guia do navegador.",
"O logotipo utiliza o logotipo Web Link primeiro e volta ao logotipo da aplicação quando apropriado.",
"O chip de categoria usa a mesma cor e etiqueta que o link Web correspondente na aba do aplicativo LXC.",
"A etiqueta do sistema convidado identifica a VM ou LXC associado. Um clique abre a sua janela: as ligações LXC abrem <strong>App</strong>, as VM abrem <strong>Estado</strong>.",
"Uma seta para cima roxa significa que a aplicação específica ou imagem Docker tem uma atualização disponível. Não é uma conta de atualização geral para todo o hóspede."
]
},
"toolbar": {
"heading": "Procurar, filtrar e ordenar",
"intro": "A barra de ferramentas estreita uma grande coleção de aplicativos sem alterar os registros salvos.",
"items": [
"A pesquisa corresponde ao nome da aplicação, nome do convidado, VMID e categoria.",
"O filtro de categoria mostra uma categoria de cada vez ou todas as aplicações.",
"Ordene por <strong>Nome</strong>, <strong>ID</strong> ou <strong>Categoria</strong>. Ordenar por categoria acrescenta títulos entre grupos de cartões.",
"A ordem é guardada neste navegador. O texto de pesquisa e o filtro de categoria são repostos ao regressar à página.",
"A aba Apps permanece disponível quando a grade está vazia, então o primeiro link personalizado pode ser adicionado sem registrar primeiro um aplicativo LXC."
]
},
"customLinks": {
"heading": "Adicionar e editar links Web personalizados",
"intro": "Use um link personalizado quando o serviço não for representado por um aplicativo LXC registrado.",
"steps": [
"Pressione <strong>Adicionar link</strong> da barra de ferramentas ou do estado vazio.",
"Digite um nome e uma URL <code>http://</code> ou <code>https://</code>.",
"Opcionalmente, adicione um logotipo, escolha ou crie uma categoria e ligue o link a um VM ou LXC.",
"Guarde a ligação. O cartão aparece imediatamente na grelha.",
"Para alterar ou remover uma ligação personalizada, escolha <strong>Editar</strong> e utilize o lápis no cartão."
],
"colField": "Campo",
"colRequired": "Requerido",
"colPurpose": "Objecto",
"fields": [
{
"field": "Nome",
"required": "Sim",
"purpose": "O título do cartão e termo de pesquisa."
},
{
"field": "URL",
"required": "Sim",
"purpose": "O destino HTTP(S) completo aberto pelo cartão."
},
{
"field": "URL do logotipo",
"required": "Não",
"purpose": "Uma imagem remota mostrada na carta."
},
{
"field": "Categoria",
"required": "Não",
"purpose": "Adiciona um crachá compartilhado e permite a filtragem de categoria."
},
{
"field": "Associação ao sistema convidado",
"required": "Não",
"purpose": "Associa o link com um VM ou LXC e permite o atalho de hóspedes."
}
],
"editTitle": "Editar a fonte da verdade",
"editBody": "O modo de edição mostra lápis apenas nas ligações personalizadas. Para um cartão LXC, abra o <appTabLink>separador App</appTabLink> do sistema convidado e altere a ligação guardada."
},
"categories": {
"heading": "Categorias e sinais de atualização",
"intro": "As categorias organizam ligações; os indicadores de atualização descrevem o estado do software. São funções separadas.",
"items": [
"O registro LXC assistido por catálogo pode preencher uma categoria, mas permanece editável.",
"Nomes de categorias personalizados podem ser criados a partir do mesmo seletor e então reutilizados pelo filtro.",
"As cores da categoria são determinísticas e adaptam-se ao tema claro ou escuro. Faixas roxas e vermelhas são reservadas para atualização e estados de perigo.",
"Para Docker, o ProxMenux associa o cartão ao contentor ou imagem e mostra as atualizações dessa imagem. As de Docker Engine continuam no <updatesLink>separador Atualizações</updatesLink> do LXC."
]
},
"persistence": {
"heading": "Comportamento de persistência e cache",
"intro": "O painel utiliza os dados já disponíveis no Monitor sem voltar a analisar todos os sistemas convidados.",
"items": [
"As ligações personalizadas são guardadas atomicamente em <code>/etc/proxmenux/custom_links.json</code> e carregadas em memória no arranque do Monitor.",
"Links de LXC registrados continuam a fazer parte do registro de Monitor salvo de sua aplicação; o painel Apps não os duplica no arquivo de link personalizado.",
"Criar, editar ou excluir um link personalizado atualiza a lista de memórias imediatamente.",
"A preferência de ordenação é local ao navegador e não se sincroniza entre dispositivos ou utilizadores.",
"A posição de topo do Apps é controlada separadamente por <settingsLink>Configurações → Ordem de navegação</settingsLink>."
]
},
"troubleshooting": {
"heading": "Situações comuns",
"colProblem": "Situação",
"colResolution": "Resolução",
"rows": [
{
"problem": "Um aplicativo LXC está registrado, mas nenhum cartão aparece",
"resolution": "Abra sua guia App e adicione pelo menos um link Web. O rastreamento de versões sozinho não cria uma placa de lançamento."
},
{
"problem": "O URL ou logotipo está errado",
"resolution": "Edite o link personalizado em Apps ou edite o Web Link na guia LXC App."
},
{
"problem": "Falta um serviço Docker",
"resolution": "Edite o aplicativo Docker registrado e salve a porta web publicada do serviço como um Web Link."
},
{
"problem": "A seta roxa refere-se à atualização errada Docker",
"resolution": "Reveja o nome e a descrição da ligação web para os associar ao contentor ou imagem pretendida."
},
{
"problem": "Apps abrem primeiro em vez de Visão Geral do Sistema",
"resolution": "O primeiro item salvo em Configurações → Ordem de navegação torna-se a guia de pouso. Restaurar a ordem padrão ou mover Visão geral primeiro."
}
]
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Página da aplicação LXC",
"href": "/docs/monitor/dashboard/vms-lxcs/app",
"tail": " — aplicações de registo, ligações Web e acompanhamento opcional de versões."
},
{
"label": "Página de Atualizações do LXC",
"href": "/docs/monitor/dashboard/vms-lxcs/updates",
"tail": " — configurar e executar atualizações de aplicações, Docker Engine e imagens."
},
{
"label": "Página de Configuração",
"href": "/docs/monitor/dashboard/settings#navigation-order",
"tail": " — alterar a ordem de navegação e a guia de aterragem."
}
]
}
}
@@ -0,0 +1,248 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: Hardware | Documentação ProxMenux",
"description": "O separador Hardware inventaria a máquina física: CPU e placa-mãe, módulos de memória, sensores térmicos, GPU com monitorização por slot e instalador de controladores num clique, aceleradores Coral TPU, resumo do armazenamento com velocidades de ligação, listas PCI e USB, consumo, fontes de alimentação, ventoinhas e UPS."
},
"header": {
"title": "Painel: Página de hardware",
"description": "A máquina física em uma tela – CPU e identidade da placa-mãe, todos os módulos de memória, sensores térmicos em todos os subsistemas, GPUs com uso ao vivo e um instalador de driver embutido, Coral TPUs, cada dispositivo PCI e USB com seu driver de kernel, o inventário de disco completo com velocidades de ligação negociadas, além de energia, refrigeração e UPS.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Construído a partir de ferramentas padrão",
"body": "A maior parte desta página é analisada de <code>lscpu</code>, <code>dmidecode</code>, <code>lspci</code>, <code>lsusb</code>, <code>lsblk</code>, <code>smartctl</code>, <code>nvme</code>, <code>sensors</code>, <code>nvidia-smi</code>, <code>intel_gpu_top</code>, <code>amdgpu_top</code>, <code>ipmitool</code> e <code>upsc</code>. Seções só renderizam quando a ferramenta relevante retorna dados, então um host sem uma UPS não mostrará o cartão UPS e um host sem IPMI não mostrará figuras de energia fora de banda."
},
"thresholds": {
"title": "Cor do estado e limiares aplicados aqui",
"intro": "Cada indicador e leitura de temperatura usa a mesma escala: <green/> <strong>verde</strong> abaixo de Aviso, <amber/> <strong>âmbar</strong> entre Aviso e Crítico, <red/> <strong>vermelho</strong> a partir de Crítico. Valores recomendados incluídos no ProxMenux:",
"items": [
"<strong>Temperatura CPU</strong> — aviso 80 °C, crítico 90 °C.",
"<strong>Temperatura do disco</strong> — HDD 60/65 °C · SSD 70/75 °C · NVMe 80/85 °C · SAS 55/65 °C (alertar / crítico)."
],
"outro": "Os valores são configuráveis por host. <link>Definições → Limiares do monitor de saúde</link> centraliza os ajustes e explica como os adaptar."
},
"sections": {
"heading": "Seções",
"intro": "As secções aparecem nesta ordem de cima para baixo. Algumas exigem o hardware ou ferramenta correspondente e estão marcadas como <em>(condicional)</em>.",
"systemInfoTitle": "Informações do sistema",
"systemInfoIntro": "Dois blocos lado a lado, sempre presentes:",
"systemInfoItems": [
"<strong>CPU</strong> — modelo, microarquitetura, sockets/núcleos/threads, frequências base e boost, capacidades de virtualização (VT-x / AMD-V) e topologia da cache.",
"<strong>Placa-mãe</strong> — fabricante, modelo, versão e data BIOS, UUID SMBIOS. Ajuda a localizar a página correta do fabricante para atualizar o firmware."
],
"memoryTitle": "Módulos de memória",
"memoryBody": "Uma linha por slot ocupado de <code>dmidecode</code>: etiqueta, capacidade do módulo, tipo (DDR4 / DDR5 / variantes ECC), velocidade configurada e nominal, fabricante, referência e número de série. Os slots vazios aparecem atenuados para mostrar a margem de expansão.",
"thermalTitle": "Monitoramento Térmico",
"thermalIntro": "Sete blocos com dados de <code>lm-sensors</code>, <code>sysfs</code> e coletores específicos de cada ferramenta. Os sensores hwmon de armazenamento são associados ao dispositivo de blocos físico, com modelo e caminho <code>/dev/...</code>. Cada bloco fica oculto se não houver sensores na categoria.",
"thermalItems": [
"<strong>CPU</strong> — temperatura do encapsulamento e de cada núcleo.",
"<strong>GPU</strong> — sensores de GPU dedicada via <code>nvidia-smi</code> / <code>amdgpu_top</code> e iGPU Intel. Inclui ponto quente e temperatura de junção da memória quando o controlador os fornece.",
"<strong>NVME</strong> — temperatura composta do controlador associada ao namespace NVMe exato.",
"<strong>HDD</strong> — leituras <code>drivetemp</code> para dispositivos de blocos rotativos.",
"<strong>SSD</strong> — leituras <code>drivetemp</code> para dispositivos de bloco SATA/SAS não rotacionais.",
"<strong>PCI</strong> — sensores em dispositivos ligados a PCI, como HBA e placas de rede com sensores internos.",
"<strong>OTHER</strong> — chipset, VRM, sensores ambientais que não se encaixam em outro lugar."
]
},
"graphics": {
"heading": "Placas Gráficas",
"intro": "Cada controlador de vídeo aparece num cartão com fabricante, modelo, tipo (<em>Integrado</em> / <em>PCI</em> / BMC), endereço PCI (BDF), controlador do kernel e módulos. <strong>Mudar modo</strong> alterna entre partilha LXC com controlador nativo e passthrough VM (<code>vfio-pci</code>). <link>Mudar modo GPU (VM ↔ LXC)</link> explica os efeitos no host.",
"vfioImageAlt": "Seção de placas gráficas mostrando um GPU integrado de Matrox G200EH ligado a mgag200 (pronto para LXC) e um NVIDIA Quadro P400 ligado a vfio-pci (pronto para passagem de VM)",
"vfioImageCaption": "Duas GPUs detectadas: o chip Matrox BMC está no driver nativo e pronto para LXC; o NVIDIA Quadro P400 está ligado ao <code>vfio-pci</code>, pronto para passagem VM.",
"lxcImageAlt": "Placas gráficas: iGPU Intel UHD Graphics com i915 e NVIDIA Quadro P1000 com nvidia, ambas prontas para contentores LXC",
"lxcImageCaption": "O mesmo nó após devolver a placa NVIDIA ao controlador nativo: ambas as GPU prontas para contentores LXC.",
"realtimeTitle": "Janela de monitorização em tempo real",
"realtimeBody": "Clicar numa GPU abre a monitorização por slot, que consulta a ferramenta do fabricante a cada três segundos. Mostra fabricante, tipo, slot PCI, controlador, módulos do kernel, utilização dos motores (Render/3D, Video, Blitter, VideoEnhance), frequências gráfica e de memória, temperatura, consumo se disponível, VRAM e processos ativos com carga por processo. Dados de <code>/api/gpu/&lt;slot&gt;/realtime</code>.",
"toolsIntro": "A ferramenta do fornecedor usada por GPU:",
"headerVendor": "Fornecedor",
"headerTool": "Ferramenta",
"headerProject": "Projeto",
"tools": [
{
"vendor": "NVIDIA",
"tool": "nvidia-smi",
"projectLabel": "developer.nvidia.com",
"projectHref": "https://developer.nvidia.com/nvidia-system-management-interface"
},
{
"vendor": "Intel iGPU",
"tool": "intel_gpu_top (igt-gpu-tools)",
"projectLabel": "gitlab.freedesktop.org",
"projectHref": "https://gitlab.freedesktop.org/drm/igt-gpu-tools"
},
{
"vendor": "AMD",
"tool": "amdgpu_top",
"projectLabel": "github.com/Umio-Yasuno/amdgpu_top",
"projectHref": "https://github.com/Umio-Yasuno/amdgpu_top"
},
{
"vendor": "Matrox / ASPEED (BMC)",
"tool": "— (apenas visualização)",
"projectLabel": "Detetado e identificado como BMC; sem monitorização em tempo real."
}
],
"nvidiaImageAlt": "Monitorização NVIDIA Quadro P1000: fabricante NVIDIA, controlador nvidia carregado, frequência gráfica 1.26 GHz, memória 2.50 GHz, temperatura 50 °C, motores a 0 %, sem processos ativos, memória total 4096 MiB",
"nvidiaImageCaption": "NVIDIA Quadro P1000 com controlador proprietário: frequências, temperatura, barras de utilização dos motores e processos ativos.",
"intelImageAlt": "Monitorização de iGPU Intel UHD Graphics com i915: consumo 11.31 W, carga de vídeo 1 % e processo ffmpeg com 8 MB",
"intelImageCaption": "Intel iGPU com <code>i915</code> ativo. A tabela Processos Ativos pega um trabalho ffmpeg usando o motor de vídeo.",
"amdImageAlt": "Monitorização de GPU integrada AMD Lucienne com amdgpu: motores a 0 % e amdgpu_top como processo ativo",
"amdImageCaption": "iGPU AMD monitorizada com <code>amdgpu_top</code>. A ferramenta surge como processo ativo porque recolhe os dados em direto.",
"installTitle": "Instalar o controlador NVIDIA a partir da janela",
"installBody": "Com <code>nouveau</code>/<code>nvidiafb</code> sem controlador proprietário NVIDIA, não se podem ler frequências, consumo e carga por processo. A janela oferece <strong>Instalar controladores NVIDIA</strong>, que executa o script de <link>Instalar controladores NVIDIA (host)</link>.",
"noDriverAlt": "Monitorização NVIDIA Quadro P620 com nvidiafb e nouveau carregados, aviso Monitorização alargada indisponível e botão azul Instalar controladores NVIDIA",
"noDriverCaption": "Controlador proprietário ainda não instalado: a janela oferece instalação num clique.",
"promptAlt": "Diálogo de confirmação de instalação do driver NVIDIA GPU listando GPUs detectadas, containers LXC com passagem NVIDIA e um par Sim/Cancelar",
"promptCaption": "Resumo pré-instalação: GPUs detectadas, containers LXC que já têm passagem NVIDIA, e o que o script fará. Nada é tocado até confirmares.",
"successAlt": "Saída terminal mostrando o driver NVIDIA 580.105.08 instalado com sucesso e nvidia-smi relatando um Quadro P620",
"successCaption": "Instalação bem-sucedida — o NVIDIA <code>.run</code> construído via DKMS, o serviço de persistência está em vigor, e o <code>nvidia-smi</code> relata o GPU.",
"warningTitle": "Escolha uma versão do driver que o seu GPU realmente suporta",
"warningBody": "Os ramos NVIDIA mais recentes deixam de suportar famílias antigas, como Maxwell ou Kepler. Se <code>nvidia-smi</code> mostrar <em>\"No devices were found\"</em> após instalar ou o DKMS falhar, o ramo pode ser incompatível. Repita com um ramo anterior, como legacy 470.x para Kepler. Consulte a compatibilidade na <a>página oficial de pesquisa de controladores</a>.",
"whereGoIntro": "Para onde ir a partir daqui:",
"whereGoItems": [
"<link1>Instalar controladores NVIDIA (host)</link1> — guia completo, matriz de compatibilidade do kernel, patch NVENC opcional e propagação aos LXC.",
"<link2>Mudar modo GPU (VM ↔ LXC)</link2> — efeitos do controlo <em>Mudar modo</em> do cartão.",
"<link3>Adicionar GPU a VM (passthrough)</link3> e <link4>Adicionar GPU a LXC</link4> — primeira atribuição de uma GPU não associada."
]
},
"coral": {
"heading": "Aceleradores Coral TPU / AI",
"subHeading": "(condicional)",
"intro": "Aparece com dispositivos Google Coral ou outros aceleradores IA ligados. Cada janela mostra ligação (M.2 / mini-PCIe / USB), largura PCIe, ID fabricante/produto, suporte de software (<code>apex</code> no kernel para PCIe, <code>libedgetpu</code> em espaço de utilizador para USB), módulos (<code>gasket</code> + <code>apex</code>), nós (<code>/dev/apex_*</code>), estado do runtime Edge TPU, temperatura em direto e limiares de aviso do firmware.",
"imageAlt": "Detalhes Coral Edge TPU: ligação PCIe/M.2, 5.0 GT/s x1, ID 1ac1:089a, controlador apex, módulos gasket e apex carregados, /dev/apex_0 presente, Edge TPU Runtime não instalado, 53.5 °C e limiares de aviso de hardware",
"imageCaption": "Coral M.2 com módulos do kernel carregados, nó de dispositivo presente e avisos de temperatura do firmware disponíveis. O indicador do runtime fica verde após instalar o Edge TPU Runtime correspondente.",
"pathsIntro": "Existem dois caminhos de instalação dependendo do fator de forma:",
"pathsItems": [
"<strong>M.2 / Mini-PCIe</strong> — o host precisa dos módulos do kernel <code>gasket</code> + <code>apex</code> construídos via DKMS para que o nó do dispositivo <code>/dev/apex_0</code> apareça no arranque.",
"<strong>USB Accelerator</strong> — o host só precisa do tempo de execução do espaço de usuário Edge TPU (<code>libedgetpu1-std</code>) do repositório APT do Google."
],
"outro": "<installLink>Instalar Coral TPU no host</installLink> deteta e gere as duas variantes. Informações e runtime oficial em <a>coral.ai/docs</a>. Depois, atribua o dispositivo a um contentor com <lxcLink>Adicionar Coral TPU a LXC</lxcLink>."
},
"storage": {
"heading": "Resumo de armazenamento",
"intro": "Todos os dispositivos de blocos conhecidos pelo kernel, agrupados por tipo. Cada disco mostra nome (<code>sda</code>, <code>nvme0n1</code>, <code>zram0</code>…), tipo (<em>SSD</em>, <em>HDD</em>, <em>NVMe SSD</em>), modelo e ligação negociada. Clique para abrir modelo, número de série, capacidade, interface e velocidade atual e máxima.",
"imageAlt": "Resumo do armazenamento com onze dispositivos de blocos (SSD SATA, HDD SATA, SSD NVMe e zram), modelos e velocidades negociadas; os dois NVMe mostram 3.0 x4 com velocidade atual destacada",
"imageCaption": "Onze dispositivos neste nó. As ligações SATA aparecem como <em>SATA &lt;version&gt;, &lt;Gb/s&gt; (current: ...)</em>; os NVMe como <em>&lt;PCIe gen&gt; x&lt;width&gt;</em>.",
"nvmeBody": "A linha de cada NVMe compara a ligação negociada com o máximo suportado. Se diferirem, como um SSD Gen3 x4 a <strong>3.0 x1</strong> num slot com uma só via, o valor atual aparece em âmbar. Ajuda a diagnosticar discos lentos ou alterações nas vias após atualizar o BIOS.",
"nvmeModalAlt": "Detalhes NVMe de nvme0n1: NVMe SSD, 953.9 GB, ligação atual 3.0 x1 em âmbar, máximo 3.0 x4, WDC CL SN720, número de série e interface PCIe/NVMe",
"nvmeModalCaption": "Detalhes NVMe com ligação reduzida: o disco suporta x4, mas o slot está ligado a x1.",
"outro": "Dados SMART, autotestes, histórico e relatório PDF estão em <storageLink>Painel: Armazenamento</storageLink>. Os mesmos dados alimentam <smartLink>Estado e testes SMART dos discos</smartLink>. Um teste longo pelo script escreve o JSON mostrado pelo Monitor em <em>Armazenamento → Histórico</em>."
},
"pci": {
"heading": "Dispositivos PCI",
"intro": "Dispositivos PCI identificados por <strong>BDF PCI</strong> (Bus:Device.Function, por exemplo <code>03:00.0</code>) e classe (<em>Controlador de armazenamento</em>, <em>Controlador USB</em>, <em>Placa gráfica</em>, <em>Controlador de rede</em>, <em>Controlador de áudio</em>…). Cada cartão mostra fabricante, nome e <strong>controlador do kernel associado</strong>, úteis para diagnosticar passthrough, grupos IOMMU ou controladores incorretos.",
"imageAlt": "Quinze dispositivos PCI por classe: controladores de armazenamento ahci/nvme, USB, placas gráficas (uma com vfio-pci, outra com controlador nativo), rede igb/tg3 e áudio associado a uma GPU em passthrough",
"imageCaption": "Quinze dispositivos neste nó. Note que o GPU e sua função de áudio acompanhante estão ligados ao <code>vfio-pci</code> — é um cartão preparado para a passagem do VM.",
"bdfTitle": "Lendo o BDF",
"bdfBody": "<code>03:00.0</code> indica barramento PCI <code>03</code>, dispositivo <code>00</code>, função <code>0</code>. As GPU dedicadas usam geralmente <code>.0</code> para gráficos e <code>.1</code> para áudio HDMI. Ambas as funções passam juntas para a VM; por isso <link>Mudar modo GPU</link> limpa as associações de áudio órfãs ao sair do modo VM."
},
"usb": {
"heading": "Dispositivos USB",
"intro": "Dispositivos USB com fabricante e produto, versão USB, endereço <code>bus:device</code>, ID <code>vendor:product</code> e controlador do kernel. Classificam-se por função: <em>Comunicações</em> (adaptadores Z-Wave / Zigbee), <em>UPS</em>, armazenamento ou HID. Assim identificam-se sem comparar os ID.",
"imageAlt": "Dispositivos USB: Aeotec Z-Wave Z-Stick, coordenador Zigbee ConBee II e UPS Ellipse ECO, com versão USB, endereço, ID vendor:product e controlador associado",
"imageCaption": "Três dispositivos USB – dois rádios de automação doméstica em <code>usbfs</code> e um UPS em <code>usbfs</code> (NUT fala com ele através da libusb)."
},
"power": {
"heading": "Consumo de energia",
"subHeading": "(condicional)",
"intro": "Aparece se o host fornecer telemetria de potência. Mostra duas origens independentes quando disponíveis:",
"items": [
"<strong>Consumo total ACPI / IPMI</strong> — potência de todo o sistema medida por um sensor da placa-mãe ou pelo BMC. Habitual em placas de servidor.",
"<strong>Consumo do encapsulamento CPU</strong> — contadores Intel RAPL ou equivalente AMD. Distingue o consumo CPU do restante sistema em placas de consumo sem sensor total."
],
"supplyImageAlt": "Consumo: 198 W totais via ACPI e duas fontes de alimentação com estado OK e saída de 185 W e 5 W",
"supplyImageCaption": "Placa de servidor com um único sensor de potência ACPI e PSUs duplos reportados através do IPMI — o segundo PSU é o redundante, inativo em 5 W.",
"cpuImageAlt": "Consumo numa placa de uso doméstico: apenas 8.7 W de CPU via Intel RAPL",
"cpuImageCaption": "Placa de uso doméstico sem sensor total: mostra apenas o consumo CPU via RAPL."
},
"psu": {
"heading": "Fontes de alimentação",
"subHeading": "(condicional)",
"body": "Em máquinas de servidor com fontes duplas, IPMI mostra presença (PSU 1 / PSU 2 / …), tensão de entrada, potência de saída e estado OK/falha. Verifique após uma interrupção elétrica em nós com fontes redundantes."
},
"fans": {
"heading": "Ventiladores do sistema",
"subHeading": "(condicional)",
"body": "RPM de cada ventoinha com minigráfico, se suportado. Sem dados individuais apresenta uma única leitura da ventoinha do chassis."
},
"ups": {
"heading": "Status do no-break",
"subHeading": "(condicional)",
"body": "Aparece com um servidor NUT (Network UPS Tools) configurado e acessível. Mostra estado (rede / bateria / carregamento / bateria fraca), carga da bateria, autonomia estimada, percentagem de carga suportada, tensão de entrada, modelo e firmware. Alimenta também <em>Segurança e certificados</em> do monitor de saúde: a passagem a bateria é assinalada imediatamente."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerSection": "Secção da página",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"section": "Inventário estático (PCI, CPU, BIOS)",
"endpoint": "/api/hardware",
"source": "<code>lspci -vmm</code>, <code>/proc/cpuinfo</code>, <code>dmidecode</code>; em cache para a vida útil do processo."
},
{
"section": "Valores dos sensores em direto",
"endpoint": "/api/hardware/live",
"source": "<code>sensors</code> (lm-sensors), <code>/sys/class/hwmon</code> e <code>/sys/block</code> identificam os dispositivos de armazenamento. As temperaturas permanecem em direto; só o mapeamento hwmon-dispositivo fica em cache por 60 segundos."
},
{
"section": "CPU histórico de temperatura",
"endpoint": "/api/temperature/history",
"source": "Série temporal registada a cada 60 segundos pelo coletor de temperatura e guardada em SQLite."
},
{
"section": "Métricas GPU em direto",
"endpoint": "/api/gpu/<slot>/realtime",
"source": "NVIDIA: <code>nvidia-smi --query-gpu=...</code>. Intel: <code>intel_gpu_top</code>. AMD: sysfs <code>/sys/class/drm/cardN</code>."
}
],
"codeComment1": "# Comparar o inventário com a vista do sistema operativo",
"codeComment2": "# Confirme o cartão GPU que o painel vê"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Instalar Drivers NVIDIA (Host)",
"href": "/docs/hardware/nvidia-host",
"tail": " — o que executa o botão de instalação do GPU."
},
{
"label": "Mudar modo GPU (VM ↔ LXC)",
"href": "/docs/hardware/switch-gpu-mode",
"tail": " — efeitos no host da mudança de modo em cada cartão GPU."
},
{
"label": "Instale Coral TPU no Host",
"href": "/docs/hardware/install-coral-tpu-host",
"tail": " — instalação do módulo do kernel e do runtime Coral."
},
{
"label": "Integridade e teste do disco SMART",
"href": "/docs/disk-manager/smart-disk-test",
"tail": " — script que produz os dados SMART nos detalhes do disco em Armazenamento."
},
{
"label": "Painel: Página de armazenamento",
"href": "/docs/monitor/dashboard/storage",
"tail": " — tabela completa de atributos SMART, historial de auto-teste e relatório PDF."
},
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — categoria CPU e Temperatura, que utiliza os mesmos sensores."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints de hardware e GPU."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — os outros separadores."
}
]
}
}
@@ -0,0 +1,101 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel | Documentação do ProxMenux",
"description": "O painel é a interface principal do ProxMenux Monitor: dez separadores, incluindo o lançador Apps, um cabeçalho global e uma ordem de navegação configurável."
},
"header": {
"title": "Painel",
"description": "A vista diária do ProxMenux Monitor: dez separadores, incluindo o lançador Apps, um cabeçalho global e uma ordem de navegação configurável.",
"section": "ProxMenux Monitor"
},
"oneHeader": {
"title": "Um cabeçalho, dez separadores",
"body": "O cabeçalho (logótipo, nome do nó, indicador de estado, tempo de atividade, atualização e tema) permanece visível. O separador ativo muda toda a área de conteúdo. A cor do indicador reflete a categoria mais grave do <link>monitor de estado</link>: o mesmo dado é mostrado no painel."
},
"tabs": {
"heading": "Os dez separadores",
"intro": "Cada guia tem sua própria página dedicada. As páginas são adicionadas incrementalmente à medida que a documentação é preenchida; abaixo está a lista completa e pelo que cada uma é responsável.",
"headerTab": "Separador",
"headerOwns": "O que abrange",
"rows": [
{
"name": "Visão geral do sistema",
"linksTo": "/docs/monitor/dashboard/system-overview",
"owns": "CPU / widgets de memória / temperatura, contagem ativa de VM e LXC, gráficos de métricas históricas, resumos de armazenamento e rede. Guia de aterrissagem padrão até que a ordem de navegação seja personalizada."
},
{
"name": "Aplicativos",
"linksTo": "/docs/monitor/dashboard/apps",
"owns": "Lançador unificado de ligações web LXC registadas e ligações personalizadas, com categorias, pesquisa, atalhos dos sistemas convidados e indicadores de atualização por aplicação."
},
{
"name": "Armazenamento",
"owns": "pools Proxmox, discos físicos, dados SMART, estado ZFS, desgaste & vida útil, histórico de observação."
},
{
"name": "Rede",
"owns": "Interfaces físicas, bonds, bridges e OVS, endereços IP/MAC, gráficos RX/TX e histórico RRD por interface."
},
{
"name": "VMs e LXCs",
"owns": "Inventário de sistemas convidados, detalhes de configuração, métricas e registos, ações de iniciar, parar, reiniciar e desligar."
},
{
"name": "Hardware",
"owns": "CPU modelo e topologia, layout de memória, topologia PCIe, GPUs com monitoramento em tempo real por slot."
},
{
"name": "Registros do sistema",
"owns": "Live <code>journalctl</code> com filtros, histórico de tarefas Proxmox, registro de notificação, pacotes de logs para download."
},
{
"name": "Terminal",
"owns": "Shell do anfitrião ou de qualquer VM/CT no navegador, com <code>xterm.js</code> sobre WebSockets."
},
{
"name": "Segurança",
"owns": "Configuração da autenticação, palavra-passe, 2FA e tokens API, registo de auditoria, painel Fail2Ban opcional e implementação do Secure Gateway."
},
{
"name": "Configurações",
"owns": "Idioma do Monitor, ordem de navegação, canais de notificação, fornecedor IA, limiares de estado, exclusões e inventário de otimizações pós-instalação."
}
]
},
"headerAnatomy": {
"heading": "Anatomia do cabeçalho",
"items": [
"<strong>Logo + nome do produto</strong> à esquerda. O logotipo se transforma em uma variante \"atualização disponível\" quando uma versão mais recente do Monitor é detectada.",
"<strong>Identidade do nó</strong>: nome obtido por <code>pvesh get /nodes</code>, com <code>hostname</code> como alternativa.",
"<strong>Indicador de estado</strong>: Saudável (verde), Aviso (amarelo), Crítico (vermelho). Um clique abre o monitor de estado. Uma etiqueta azul <em>info</em> aparece se existem elementos ignorados ainda dentro do período de supressão.",
"<strong>Tempo de atividade</strong>: tempo de funcionamento do anfitrião num formato legível.",
"<strong>Botão Atualizar</strong>: repete as chamadas API de dados em direto sem recarregar toda a página.",
"<strong>Seletor de tema</strong>: claro, escuro ou sistema. Guardado em <code>localStorage</code>."
]
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Página de aplicativos",
"href": "/docs/monitor/dashboard/apps",
"tail": " — lançador unificado de ligações web e relação com aplicações LXC registadas."
},
{
"label": "Página Visão Geral do Sistema",
"href": "/docs/monitor/dashboard/system-overview",
"tail": " — a guia de aterragem, totalmente documentada."
},
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — janela do indicador de estado com detalhes das dez categorias."
},
{
"label": "Arquitetura",
"href": "/docs/monitor/architecture",
"tail": " — como o painel fala com a infra-estrutura Flask."
}
]
}
}
@@ -0,0 +1,251 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: separador Rede | Documentação ProxMenux",
"description": "O separador Rede lista as interfaces do anfitrião: placas físicas, bridges, bonds, VLAN e interfaces virtuais VM/LXC. O detalhe mostra IP, MAC, estado, membros do bond, tráfego desde o arranque e histórico RRD."
},
"header": {
"title": "Painel: separador Rede",
"description": "As interfaces detetadas pelo kernel — placas físicas, bridges, bonds, VLAN e portas virtuais VM/LXC — estão agrupadas em três cartões. Clique numa linha para ver os endereços, contadores de tráfego e dados históricos RRD.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Dados atuais e históricos",
"body": "O estado atual vem de <code>psutil.net_if_stats()</code> e <code>ip</code>, e o histórico de largura de banda do armazenamento RRD Proxmox através de <code>/api/network/&lt;interface&gt;/metrics</code>. Os contadores atualizam-se aproximadamente a cada 5 segundos e os dados RRD do gráfico são carregados a pedido."
},
"topRow": {
"heading": "Linha superior: quatro cartões estatísticos",
"headerCard": "Cartão",
"headerWhat": "O que mostra",
"rows": [
{
"card": "Tráfego de rede",
"what": "Taxa RX/TX agregada de todas as interfaces, expressa na unidade adequada (bps / Kbps / Mbps / Gbps)."
},
{
"card": "Interfaces ativas",
"what": "Dois contadores: <em>Physical X / Y</em> e <em>Bridges X / Y</em>, ativas face ao total. Um primeiro ponto a verificar quando algo deixa de funcionar."
},
{
"card": "Status da rede",
"what": "Estado rápido: Saudável / Aviso / Crítico conforme a ligação, a acessibilidade do gateway e a integridade da bridge. Reflete a categoria <em>Interfaces de rede</em> do Health Monitor."
},
{
"card": "Latência de rede",
"what": "Tempo de ida e volta ao gateway com um pequeno gráfico. Um clique abre o <strong>diálogo Latência de rede</strong> descrito abaixo: histórico e teste ping a pedido ao gateway, Cloudflare ou Google, com relatório PDF para transferência."
}
]
},
"flow": {
"heading": "Diagrama de fluxo de rede",
"intro": "Entre a linha superior e os três cartões, <strong>Network Flow</strong> mostra a topologia em direto. Os percursos dos pacotes ligam placas físicas, bridges ao centro e depois VM e contentores. Os impulsos animados representam o tráfego rx/tx atual em cada ligação.",
"imageAlt": "Diagrama de fluxo de rede – NICs à esquerda, host e pontes no meio, VMs e LXCs à direita, com impulsos animados em cada conexão",
"imageCaption": "Fluxo de rede — nós codificados a cores e cometas animados cuja direcção e espessura reflectem o tráfego ao vivo.",
"elementsTitle": "O que o diagrama mostra",
"elementsIntro": "Cada nó representa uma entrada do mesmo inventário dos cartões abaixo. A disposição em topologia permite ver as relações de imediato:",
"elements": [
"<strong>Placas de rede</strong> (âmbar) — interfaces físicas com ligação ativa; as inativas aparecem esbatidas.",
"<strong>Anfitrião</strong> (âmbar) — o anfitrião Proxmox entre placas de rede e bridges. Um ponto fixo que não é clicável.",
"<strong>Bridges</strong> (ciano) — bridges Linux e OVS com pelo menos uma máquina convidada ativa. As não utilizadas são ocultadas para destacar o tráfego real.",
"<strong>LXC</strong> (ciano) — contentores em execução ligados a uma bridge.",
"<strong>VM</strong> (roxo) — máquinas virtuais em execução ligadas a uma bridge.",
"As VM e os contentores parados são ocultados."
],
"pulsesTitle": "O que a animação codifica",
"pulsesBody": "Os cometas animados que viajam ao longo de cada borda representam tráfego ao vivo:",
"pulses": [
"<strong>Direção</strong> — para a placa de rede significa <em>tx</em> da máquina convidada; para a máquina, <em>rx</em>.",
"A <strong>espessura da linha</strong> aumenta com a taxa rx+tx da máquina convidada. Sem tráfego mantém-se uma linha animada ténue; com muito tráfego, torna-se grossa.",
"<strong>Brilho da cabeça do cometa</strong> — tom quente perto de 1 MB/s, intenso a partir de 30 MB/s. Permite identificar a máquina convidada que mais ocupa uma placa de rede.",
"<strong>Clique</strong> — todos os nós exceto o anfitrião abrem o diálogo de detalhe da interface descrito abaixo. Clicar no anfitrião não tem efeito; esta vista não inclui um diálogo para ele."
],
"useTitle": "Quando é útil",
"useBody": "Os cartões mostram <em>o que</em> existe; o diagrama mostra <em>como está ligado</em> e por onde passa o tráfego. Permite detetar máquinas na mesma bridge, duas máquinas muito ativas na mesma placa — um possível estrangulamento — ou uma VM a saturar uma ligação enquanto as outras quase não transmitem."
},
"groups": {
"heading": "Três grupos de interface",
"intro": "Três cartões agrupam as interfaces por função. Cada cabeçalho indica quantas estão ativas. Uma etiqueta colorida identifica o <strong>tipo</strong> de cada interface:",
"badges": [
"Azul <strong>Physical</strong> — verdadeiro NIC.",
"Verde <strong>Bridge</strong> — bridge Linux ou OVS (<code>vmbr*</code>).",
"Roxo <strong>Bond</strong> — agregação bond / LACP / active-backup.",
"Ciano <strong>VLAN</strong> — subinterface VLAN (<code>vmbr0.10</code>, <code>eno1.42</code>, …)."
],
"clickable": "<strong>Todas as linhas são clicáveis</strong>: interfaces físicas, virtuais, bridges e bonds. O detalhe descrito abaixo mostra dados básicos, IP, contadores e histórico RX/TX do armazenamento RRD Proxmox.",
"physicalTitle": "Interfaces Físicas",
"physicalBody": "Interfaces físicas reconhecidas pelo kernel: <code>eno1</code>, <code>enp4s0</code>, <code>eth0</code>, <code>wlp3s0</code>, etc. Cada dispositivo tem uma linha com etiqueta azul <strong>Physical</strong> e estado da ligação. Os <em>membros de um bond</em> também aparecem, com referência ao bond a que pertencem.",
"bridgeTitle": "Interfaces de ponte",
"bridgeBody": "Bridges Linux (<code>vmbr0</code>, <code>vmbr1</code>, …) e OVS geridas pelo Proxmox. Cada linha mostra a etiqueta verde <strong>Bridge</strong>, a interface física se tiver uma única porta e o estado. Os bonds têm etiqueta roxa <strong>Bond</strong>; as subinterfaces VLAN, a etiqueta ciano <strong>VLAN</strong>.",
"vmTitle": "Interfaces de VM / LXC",
"vmBody": "Interfaces <code>tap*</code> e <code>veth*</code> criadas no arranque das máquinas convidadas, uma por placa virtual. O cabeçalho mostra <em>X / Y Active</em> e as linhas ligam à VM/CT no separador VMs e LXCs. Após a paragem, as entradas inativas desaparecem no ciclo de atualização seguinte."
},
"drillIn": {
"heading": "Detalhe por interface",
"intro": "Um clique numa linha abre um diálogo com cinco blocos:",
"headerBlock": "Bloco",
"headerContents": "Conteúdo",
"rows": [
{
"block": "Informações Básicas",
"contents": "Nome, tipo (física / bridge / bond / VLAN / vm), endereço MAC, estado (ativo / inativo), MTU e interface física subjacente nos tipos virtuais."
},
{
"block": "Membros do bond",
"contents": "Apenas para bonds: cada placa membro com estado ativo ou falha, modo do bond (active-backup / 802.3ad / balance-alb / …) e interface principal se configurada."
},
{
"block": "Endereços IP",
"contents": "Cada endereço IPv4/IPv6 com o comprimento do prefixo. Os endereços link-local automáticos aparecem a cinzento."
},
{
"block": "Gráfico histórico",
"contents": "Largura de banda RX/TX no período escolhido (1 hora / 24 horas / 7 dias / 30 dias / 1 ano), obtida de <code>/api/network/&lt;interface&gt;/metrics</code> (RRD Proxmox)."
},
{
"block": "Tráfego desde a última inicialização",
"contents": "Total de bytes e pacotes RX/TX desde o último arranque do anfitrião, com contadores de erros e pacotes descartados."
}
],
"inactiveTitle": "O detalhe das interfaces inativas continua acessível",
"inactiveBody": "Se a interface estiver <em>inativa</em>, o diálogo mostra o aviso «Interface inativa» e omite os contadores atuais. A configuração — endereços e membros do bond — e o histórico continuam visíveis para diagnosticar a falha e quando ocorreu."
},
"latency": {
"heading": "Diálogo Latência de rede",
"intro": "Clique em <em>Latência de rede</em> na linha superior para abrir o diálogo: histórico, teste a pedido, três destinos e relatório PDF para transferência.",
"targetsTitle": "Alvos",
"targetsIntro": "A lista no topo seleciona o destino do ping:",
"targets": [
"<strong>Gateway</strong> — o router LAN. Testa apenas o percurso local para investigar problemas do switch ou da cablagem sem incluir a WAN.",
"<strong>Cloudflare (1.1.1.1)</strong> — resolvedor DNS público numa rede anycast. Testa o percurso WAN.",
"<strong>Google (8.8.8.8)</strong> — destino público alternativo para comparar resultados ou em caso de problemas regionais do Cloudflare."
],
"mode1Title": "Modo 1 — Vista histórica",
"mode1Alt": "Diálogo de latência em modo histórico, destino Gateway, período de uma hora e medições anteriores representadas",
"mode1Caption": "Histórico do gateway na última hora. O processo de recolha de temperatura e latência guarda as medições na base de dados a cada 60 segundos.",
"mode1Body1": "Modo inicial do diálogo. Uma segunda lista escolhe o período (<em>1 hora / 6 horas / 24 horas / 3 dias / 7 dias</em>). Acima aparecem Atual / Mínimo / Média / Máximo e um estado Excelente / Bom / Razoável / Mau conforme os limites abaixo.",
"mode1Body2": "Fonte: as medições usadas pelo Health Monitor para detetar lentidão persistente. O processo em segundo plano <code>_temperature_collector_loop</code> mede o gateway a cada 60 segundos e guarda o histórico num SQLite local.",
"mode2Title": "Modo 2 — Ensaio em tempo real",
"mode2Alt": "Diálogo de latência com ping em tempo real ao Cloudflare, progresso a 50% e novas medições no gráfico",
"mode2Caption": "Teste de dois minutos ao Cloudflare com uma leitura a cada cinco segundos, logo acrescentada ao gráfico. <em>Parar</em> termina mais cedo; <em>Repetir teste</em> acrescenta medições ao mesmo conjunto de dados.",
"mode2Intro": "Mudando o alvo para Cloudflare ou Google inicia um teste de ping sob demanda. Comportamento:",
"mode2Items": [
"<strong>Duração</strong> — dois minutos por teste, com barra de progresso e segundos restantes.",
"<strong>Frequência</strong> — uma leitura a cada cinco segundos, 24 por teste.",
"<strong>Método</strong> — ICMP Echo Request (<code>ping</code>), três pings consecutivos por medição com latência média.",
"<strong>Stop</strong> — termina o teste imediatamente; os dados parciais são preservados.",
"<strong>Repetir teste</strong> — acrescenta medições aos dados existentes para criar um histórico mais longo com vários testes.",
"<strong>Indicador de estado atual</strong> — atualizado após cada medição com os mesmos limites Excelente / Bom / Razoável / Mau."
],
"thresholdsTitle": "Limiares de desempenho",
"headerStatus": "Estado",
"headerRange": "Intervalo",
"headerImpact": "Impacto prático",
"thresholdRows": [
{
"status": "Excelente",
"range": "< 50 ms",
"impact": "Ideal para aplicações em tempo real, jogos e chamadas de vídeo."
},
{
"status": "Bom",
"range": "50 – 100 ms",
"impact": "Aceitável para a maioria das aplicações com impacto mínimo."
},
{
"status": "Razoável",
"range": "100 – 200 ms",
"impact": "Atraso notável. Pode afetar VoIP e aplicativos interativos."
},
{
"status": "Mau",
"range": "> 200 ms",
"impact": "Latência significativa. Investigação recomendada."
}
],
"reportTitle": "Relatório de latência da rede (PDF)",
"reportIntro": "Ambos os modos têm um botão <strong>Relatório</strong> junto ao seletor de destino. Gera um PDF das medições que pode anexar a um pedido de assistência ao fornecedor de Internet.",
"reportPreviewAlt": "Primeira página PDF do relatório de latência: resumo executivo, indicador, estatísticas, gráfico e guia dos limites",
"reportPreviewCaption": "A primeira página contém resumo executivo, indicador, estatísticas principais, evolução da latência e guia dos limites. A partir da página 2 surgem a tabela de medições e a metodologia.",
"downloadLabel": "Transferir relatório de latência de exemplo (PDF)",
"sectionsIntro": "O relatório contém seis secções:",
"sections": [
"<strong>Resumo executivo</strong> — indicador de 0 a mais de 300 ms com zonas verde, amarela e vermelha; estado Excelente / Bom / Razoável / Mau; destino, modo, número de medições e resumo da perda de pacotes.",
"<strong>Estatísticas de latência</strong> — quatro indicadores para valor atual, mínimo, média e máximo, mais número de medições, perda média de pacotes e período de teste.",
"<strong>Gráfico de latência</strong> — gráfico de área das medições durante o teste, com referências de mínimo, média e máximo no eixo vertical.",
"<strong>Limites de desempenho</strong> — a mesma escala de quatro níveis anterior, com um ponto colorido por nível.",
"<strong>Resultados detalhados</strong> — tabela numerada com data e hora, latência, perda de pacotes e estado de cada medição. Revela picos breves ocultos pelas médias.",
"<strong>Metodologia</strong> — ICMP Echo Request, três pings consecutivos por medição, nome e IP do destino e avaliação final derivada do estado."
],
"useCaseTitle": "Caso de uso: assistência do fornecedor de Internet",
"useCaseBody": "Execute dois minutos de teste Cloudflare quando notar lentidão, prolongue com <em>Repetir teste</em> e selecione <em>Relatório</em>. O PDF contém todas as medições e a metodologia. Pode anexá-lo a um pedido de assistência com as horas do incidente; o fornecedor decide os comprovativos necessários."
},
"excluding": {
"heading": "Excluir interfaces da monitorização",
"body1": "Pode excluir interfaces da monitorização: bridges desativadas intencionalmente, interfaces de teste ou placas removidas ainda configuradas. A definição fica em <code>excluded_interfaces</code>: o Health Monitor não gera avisos ou notificações e não as inclui no estado geral.",
"body2": "No menu de contexto escolha <em>Excluir da monitorização</em>. A interface continua visível com etiqueta roxa <strong>excluída</strong>. Pode reativar a monitorização no mesmo menu."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerSection": "Secção da página",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"section": "Inventário de interface",
"endpoint": "/api/network",
"source": "<code>ip -j addr</code> + <code>ip -j link</code> e consulta de bonds e bridges."
},
{
"section": "Cartões de resumo",
"endpoint": "/api/network/summary",
"source": "Resumo do inventário e contagem de interfaces ativas e inativas."
},
{
"section": "Histórico RX/TX por interface",
"endpoint": "/api/network/<iface>/metrics",
"source": "Os contadores atuais usam <code>/proc/net/dev</code>; o histórico vem de RRD Proxmox através de pvesh. As interfaces VM/LXC usam dados da máquina convidada; as físicas e bridges, dados do nó."
},
{
"section": "Latência: actual",
"endpoint": "/api/network/latency/current",
"source": "Breve série de <code>ping</code> ao gateway ou destino configurado."
},
{
"section": "Latência: histórico",
"endpoint": "/api/network/latency/history",
"source": "Medições guardadas aproximadamente a cada 60 segundos pelo processo de recolha de temperatura e latência em segundo plano."
}
],
"codeComment1": "# Verificar o estado das interfaces apresentado no painel",
"codeComment2": "# Verificar uma medição atual de latência de ponta a ponta"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — categoria Rede e limites do histórico de latência."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints de rede e latência."
},
{
"label": "Integrações",
"href": "/docs/monitor/integrations",
"tail": " — a recolha Prometheus disponibiliza as mesmas métricas de rede."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — as outras páginas."
},
{
"label": "ProxMenux → Rede",
"href": "/docs/network",
"tail": " — o lado das ações: análise de ponte, nomes de interface persistentes, backup e reinício, iperf3."
}
]
}
}
@@ -0,0 +1,246 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: separador Segurança | Documentação ProxMenux",
"description": "O separador Segurança reúne os controlos de proteção em duas colunas: ProxMenux Monitor (autenticação, SSL/HTTPS, tokens de API, Secure Gateway) e Proxmox VE (firewall, Fail2Ban, auditoria Lynis). Inclui o assistente Secure Gateway, a auditoria Lynis e a instalação e o ajuste das regras do Fail2Ban."
},
"header": {
"title": "Painel: separador Segurança",
"description": "Os controlos de segurança estão organizados em dois blocos: a configuração do Monitor (autenticação, SSL, tokens, Secure Gateway) e a do anfitrião Proxmox monitorizado (firewall, Fail2Ban, Lynis).",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Dois escopos, uma aba",
"body": "O separador Segurança tem duas secções: <strong>ProxMenux Monitor</strong> (definições do painel) e <strong>Proxmox VE</strong> (definições do anfitrião). Os cartões Fail2Ban e Lynis permitem instalar estas ferramentas quando estão ausentes e mostram os respetivos controlos após a instalação."
},
"monitor": {
"heading": "ProxMenux Monitor",
"intro": "Quatro cartões permitem gerir o acesso ao painel e a autenticação."
},
"auth": {
"heading": "Autenticação",
"imageAlt": "Cartão de autenticação com estado Ativada, botões Terminar sessão e Alterar palavra-passe, informações sobre autenticação de dois fatores e botões para a ativar ou desativar a autenticação",
"imageCaption": "Cartão com autenticação ativa: indicador de estado, Alterar palavra-passe, Ativar 2FA e a ação destrutiva Desativar autenticação.",
"intro": "O cartão permite gerir o início de sessão no painel. O primeiro arranque, a política de palavras-passe, a configuração TOTP e a recuperação em caso de perda do autenticador estão descritos em <link>Acesso e autenticação</link>. Este cartão permite gerir essas definições no dia a dia:",
"items": [
"<strong>Estado da autenticação</strong> — indicador <em>Ativada</em> / <em>Desativada</em> / <em>Recusada</em>.",
"<strong>Alterar palavra-passe</strong> — palavra-passe atual + nova palavra-passe + confirmação.",
"<strong>Ativar / Desativar autenticação de dois fatores</strong> — abre a configuração com código QR ao ativar e pede a palavra-passe atual ao desativar.",
"<strong>Desativar autenticação</strong> — ação destrutiva que volta a mostrar o diálogo inicial <em>Proteger o painel?</em> na próxima visita."
]
},
"ssl": {
"heading": "SSL/HTTPS",
"imageAlt": "Cartão SSL/HTTPS com estado HTTP sem SSL, certificado Proxmox detetado com titular, emissor e validade, botão Usar certificado Proxmox e opção Usar certificado personalizado",
"imageCaption": "Cartão SSL/HTTPS com HTTPS desativado. O Monitor deteta o certificado instalado no anfitrião Proxmox e permite usá-lo com um clique. Se tiver ficheiros próprios noutro local, pode escolher <em>Usar certificado personalizado</em>.",
"intro": "Disponibiliza o painel por HTTPS sem proxy inverso. O cartão deteta o certificado usado pelo Proxmox em <code>/etc/pve/local/</code> e mostra o titular, o emissor e a validade para verificação antes da ativação. Há duas formas de ativar HTTPS:",
"items": [
"<strong>Usar certificado Proxmox</strong> — o Monitor reutiliza o certificado do anfitrião com um clique. Adequado se o PVE e o painel já usarem o mesmo nome DNS.",
"<strong>Usar certificado personalizado</strong> — cole os caminhos absolutos do certificado <code>.pem</code> e da chave privada <code>.key</code>. São validados antes de reiniciar o serviço. Se o carregamento falhar, o painel regressa automaticamente a HTTP e permanece acessível."
],
"enabledAlt": "Cartão SSL/HTTPS com HTTPS ativado, certificado ativo com os caminhos de pve-ssl.pem e pve-ssl.key e botão Desativar HTTPS",
"enabledCaption": "HTTPS ativo — o cartão mostra o certificado em uso, os caminhos dos ficheiros e a ação <em>Desativar HTTPS</em>, que repõe HTTP na mesma porta.",
"acmeTitle": "ACME / Let's Encrypt através do Proxmox",
"acmeBody": "Se o nó Proxmox já tiver Let’s Encrypt configurado em <em>Datacenter → Certificados → ACME</em>, o painel reutiliza o certificado apresentado aos navegadores ao escolher <em>Usar certificado Proxmox</em>. Não é necessária uma configuração ACME separada para o Monitor.",
"walkthroughLink": "Consulte <link>HTTPS para ProxMenux Monitor</link> para saber como é detetado o certificado ACME, o que é gravado no disco e como usar um par <code>.pem</code> / <code>.key</code> próprio."
},
"apiTokens": {
"heading": "Tokens de acesso API",
"emptyAlt": "Cartão de tokens de acesso à API vazio, com informações sobre os tokens e botão Gerar novo token de API",
"emptyCaption": "Cartão de tokens numa instalação nova. A caixa <em>Sobre os tokens de API</em> resume a validade, a utilização e a inclusão em cabeçalhos <code>Authorization: Bearer</code>.",
"intro": "Tokens válidos por um ano para integrações automáticas: widgets Homepage, sensores REST do Home Assistant, coletores Grafana, fluxos n8n e scripts próprios. O cartão passa por três estados: vazio → formulário → token gerado.",
"generateBody": "<strong>Gerar um token.</strong> Clique em <em>Gerar novo token de API</em>. Introduza um <em>nome do token</em> descritivo para o identificar na lista e a sua <em>palavra-passe</em> como confirmação adicional. Se a 2FA estiver ativa, é também pedido o código TOTP atual.",
"generateAlt": "Formulário de geração de token de API com campos Nome do token e Palavra-passe e botões Gerar token e Cancelar",
"generateCaption": "Formulário Gerar token de API: introduza um nome e confirme com a palavra-passe e, se a 2FA estiver ativa, o código TOTP.",
"saveBody": "<strong>Guarde o token imediatamente.</strong> O valor completo aparece <strong>apenas uma vez</strong> após a criação. O cartão assinala-o com um aviso laranja e um botão de cópia. Não poderá recuperá-lo depois; a lista de tokens ativos mostrará apenas o prefixo.",
"generatedAlt": "Token de API gerado com valor oculto, botão de cópia, instruções para o cabeçalho Authorization: Bearer e lista dos tokens ativos com prefixo",
"generatedCaption": "Token gerado: o valor é mostrado uma vez, com botão de cópia e o excerto exato <code>Authorization: Bearer</code>. A lista de tokens ativos mostra nome, prefixo e data de criação para permitir a revogação individual.",
"outro": "Cada token ativo tem um botão <em>Revogar</em>. A revogação invalida-o imediatamente e interrompe as integrações que o usam. Encontra exemplos para Homepage, Home Assistant, n8n e Prometheus em <link>Integrações</link>."
},
"gateway": {
"heading": "Secure Gateway",
"cardAlt": "Cartão Secure Gateway antes da primeira implementação, com o botão Implementar Secure Gateway",
"cardCaption": "Cartão Secure Gateway numa instalação nova: um botão inicia o assistente.",
"intro": "Aceda ao painel, à interface web Proxmox e às máquinas convidadas através da sua rede <a>Tailscale</a>, sem expor portas à Internet. O Monitor implementa no anfitrião um contentor LXC Alpine com <code>tailscaled</code> como router de sub-rede. Após aprovação na consola Tailscale, os dispositivos remotos podem aceder ao IP LAN do anfitrião a partir de qualquer local.",
"wizardTitle": "Assistente passo a passo",
"wizardIntro": "Antes de clicar em <em>Deploy Secure Gateway</em>, gere uma chave de autenticação na consola Tailscale. O assistente irá pedi-la no passo 2.",
"step0Title": "0. Gerar a chave de autenticação Tailscale",
"step0Body": "Inicie sessão em <a>login.tailscale.com/admin/settings/keys</a> e clique em <em>Generate auth key…</em>. Escolha uma chave <em>pré-autenticada</em> para que o gateway não precise de um início de sessão interativo. Copie o valor; é mostrado apenas uma vez.",
"step0Alt": "Página Settings → Keys da consola Tailscale, com o botão Generate auth key realçado",
"step0Caption": "Consola de administração Tailscale — <em>Settings → Keys → Generate auth key…</em>. Se ainda não tiver conta, crie uma conta gratuita Tailscale através da ligação no assistente.",
"step1Title": "1. Abrir o assistente",
"step1Body": "Regresse ao separador Segurança e clique em <em>Deploy Secure Gateway</em>. O primeiro passo apresenta as funções e os requisitos.",
"step1Alt": "Introdução do assistente Secure Gateway: acesso VPN sem encaminhamento de portas e com encriptação ponto a ponto",
"step1Caption": "Passo 1 — visão geral do que o Secure Gateway fornece e um lembrete de que você precisará de uma conta de Tailscale gratuita.",
"step2Title": "2. Autenticação Tailscale",
"step2Body": "Cole a chave de autenticação do passo 0 e escolha um nome de anfitrião. O gateway aparecerá com esse nome na consola Tailscale, normalmente <code>proxmox-gateway</code> ou o nome do nó.",
"step2Alt": "Passo do assistente Secure Gateway que pede a chave de autenticação Tailscale e o nome de anfitrião do dispositivo, com ligação para gerar a chave",
"step2Caption": "Passo 2: cole a chave pré-autenticada e escolha o nome de anfitrião. Se tiver ignorado o passo 0, a ligação sob o campo abre a página Tailscale correspondente.",
"step3Title": "3. Âmbito de acesso",
"step3Intro": "Escolha o que sua tailnet pode alcançar através do gateway:",
"step3Items": [
"<strong>Proxmox Only</strong> — apenas a IU Proxmox e o Monitor. Superfície de ataque mais pequena.",
"<strong>Full Local Network</strong> — toda a sub-rede LAN (auto-detectado a partir da interface primária do host). Permite alcançar NAS, impressoras, VMs e qualquer outro dispositivo LAN.",
"<strong>Sub-redes personalizadas</strong> — indique os CIDR pretendidos. Para configurações com várias VLAN em que apenas alguns segmentos devem ficar acessíveis."
],
"step3Alt": "Passo Âmbito de acesso do assistente Secure Gateway com as opções Apenas Proxmox, Toda a rede local e Sub-redes personalizadas",
"step3Caption": "Passo 3: escolha o âmbito de acesso. <em>Toda a rede local</em> preenche automaticamente a sub-rede LAN detetada.",
"step4Title": "4. Opções avançadas (opcional)",
"step4Intro": "Duas opções, ambas <strong>desativadas por predefinição</strong>:",
"step4Items": [
"<strong>Exit Node</strong> — ao ativar e selecionar esta opção num dispositivo remoto, todo o tráfego de Internet desse dispositivo sai pela WAN do anfitrião Proxmox. Útil em viagem para usar a ligação de casa a partir do telemóvel.",
"<strong>Aceitar rotas</strong> — permite ao gateway aceder a redes anunciadas por <em>outros</em> routers de sub-rede Tailscale, em instalações com vários locais."
],
"step4Alt": "Passo Opções avançadas do Secure Gateway com as caixas Exit Node e Accept Routes",
"step4Caption": "Passo 4: Exit Node e Accept Routes. Deixe ambas desativadas se apenas precisar de aceder ao painel a partir do telemóvel ou portátil.",
"step5Title": "5. Rever e implementar",
"step5Body": "Resumo final antes da implementação. O assistente lembra o passo manual ainda necessário na consola Tailscale: <strong>aprovar a rota de sub-rede</strong>.",
"step5Alt": "Passo Rever e implementar do Secure Gateway com resumo do nome de anfitrião, modo de acesso, redes, Exit Node e Accept Routes e botão Implementar gateway",
"step5Caption": "Passo 5 — rever a configuração e implantar. O aviso azul no fundo indica a aprovação da rota pendente.",
"approvalTitle": "Um último passo manual no administrador Tailscale",
"approvalBody": "Após a implementação, abra <a>login.tailscale.com/admin/machines</a> e aprove a rota de sub-rede anunciada pelo gateway. Até lá, os dispositivos remotos da rede Tailscale não podem aceder aos IP LAN através do gateway. O Tailscale assinala as rotas pendentes com um aviso amarelo na linha do dispositivo: clique em <em>Edit route settings</em> e selecione a rota."
},
"pve": {
"heading": "Proxmox VE",
"intro": "As proteções do anfitrião: firewall, prevenção de intrusões e auditoria de segurança. Os cartões Fail2Ban e Lynis oferecem a instalação se necessário e depois mostram os controlos de gestão."
},
"firewall": {
"heading": "Proxmox Firewall",
"imageAlt": "Cartão da firewall Proxmox com estado do cluster e anfitrião, regras de acesso rápido para Monitor e interface web Proxmox, contadores, lista de regras e botão Adicionar regra",
"imageCaption": "Cartão da firewall Proxmox: interruptores para o cluster e anfitrião, portas comuns em <em>Regras de acesso rápido</em>, contadores em <em>Resumo de regras</em> e lista completa com <em>+ Adicionar regra</em>.",
"intro": "O cartão gere a configuração da firewall Proxmox VE. O motor clássico usa <code>iptables</code> e o alternativo usa <code>nftables</code>. Não gere regras arbitrárias criadas fora do Proxmox. Três blocos:",
"items": [
"<strong>Firewall do cluster + firewall do anfitrião</strong> — interruptores globais. A firewall do cluster tem de estar ativa para que as regras do anfitrião tenham efeito. O cartão indica esta dependência junto da definição.",
"<strong>Regras de acesso rápido</strong> — linhas predefinidas para <code>8008/TCP</code> (Monitor) e <code>8006/TCP</code> (interface web Proxmox), com estado permitido, bloqueado ou sem proteção. A interface Proxmox é permitida por uma macro de firewall <em>integrada</em> que não pode ser eliminada por engano.",
"<strong>Resumo de regras</strong> — contadores do total de regras, regras accept, regras drop/reject e portas distintas protegidas. Os valores são lidos de <code>/etc/pve/firewall/cluster.fw</code> e <code>/etc/pve/nodes/&lt;node&gt;/host.fw</code>.",
"<strong>Regras da firewall</strong> — lista com ação, protocolo, porta, origem e nível. <em>+ Adicionar regra</em> abre o editor no cartão; o caixote do lixo elimina a regra. As alterações são guardadas nos ficheiros Proxmox e aparecem também na respetiva interface (Datacenter / Node → Firewall)."
]
},
"fail2ban": {
"heading": "Fail2Ban",
"subHeading": "(conforme o estado)",
"whatIs": "<strong>O que é.</strong> O Fail2Ban é um serviço de código aberto que deteta tentativas de início de sessão falhadas repetidas nos registos e bloqueia o IP na firewall. Protege SSH e formulários web contra ataques contínuos de força bruta. O ProxMenux configura três jails: SSH, acesso web Proxmox (porta 8006) e acesso ProxMenux Monitor (porta 8008).",
"notBundled": "O Fail2Ban <strong>não está incluído</strong>. O cartão deteta se está instalado e adapta-se: se faltar, permite instalá-lo com um clique. Depois apresenta o estado das jails e os IP bloqueados e permite ajustar o número de tentativas e a duração do bloqueio de cada jail.",
"notInstalledAlt": "Cartão Fail2Ban não instalado com descrição da proteção de SSH, interface web Proxmox e Monitor através de nftables e botão Instalar e configurar Fail2Ban",
"notInstalledCaption": "Cartão Fail2Ban antes de instalar — a caixa azul visualiza o que a instalação configuraria.",
"clickBody": "Clique em <em>Instalar e configurar Fail2Ban</em> para abrir um diálogo de confirmação com todas as alterações que o script fará no anfitrião:",
"confirmAlt": "Confirmação Fail2Ban com modo SSH agressivo, proteção Proxmox na porta 8006 e Monitor na porta 8008, deteção nftables, ajuste dos registos journald e proteção SSH MaxAuthTries",
"confirmCaption": "Confirmação da instalação: lista de jails, nível de registo journald ajustado para ler eventos SSH e proteção adicional de SSH (<code>MaxAuthTries=3</code>).",
"confirmIntro": "Após a confirmação, um painel mostra a instalação em direto: apt, configuração das jails e testes. Usa o mesmo mecanismo do instalador CLI ProxMenux.",
"progressAlt": "Painel com registo de instalação Fail2Ban: pacote, journald MaxLevelStore para autenticação, jails, deteção nftables, proteção MaxAuthTries, teste de comunicação fail2ban-client e mensagem final",
"progressCaption": "Instalação em curso: o painel regista cada passo. A mensagem Connection closed no fim indica que a transmissão terminou.",
"afterInstall": "Após a instalação, o cartão mostra o estado em direto: jails configuradas, IP bloqueados e bloqueios recentes. Os separadores distinguem <em>Jails e IP bloqueados</em> de <em>Atividade recente</em>, as últimas N entradas do registo Fail2Ban.",
"activeAlt": "Cartão Fail2Ban ativo com três jails (proxmenux, proxmox, sshd), contadores de IP bloqueados, bloqueios totais e tentativas falhadas e linhas com tentativas, duração do bloqueio, intervalo e engrenagem",
"activeCaption": "Fail2Ban ativo: as três jails predefinidas (<code>proxmenux</code>, <code>proxmox</code>, <code>sshd</code>) com definições de tentativas, duração do bloqueio e intervalo de deteção.",
"tuneBody": "<strong>Ajustar as regras da jail.</strong> Clique na engrenagem para alterar <em>Max Retries</em>, <em>Ban Time</em> e <em>Find Time</em>, o intervalo móvel em que são contadas as tentativas. Um bloqueio permanente dura até ser removido manualmente. O formulário explica os valores habituais.",
"configAlt": "Formulário da jail sshd com Max Retries, Ban Time em segundos, opção Permanent Ban, Find Time, ajuda sobre valores habituais e botão Guardar configuração",
"configCaption": "Edição da jail sshd: reduza <em>Max Retries</em> se usar SSH apenas a partir da sua sub-rede, ou aumente <em>Ban Time</em> para um painel exposto à Internet.",
"outro": "O guia <em>Instalação, configuração e desinstalação</em> inclui a instalação manual, a alteração de SSH MaxAuthTries e a relação com o registo <code>proxmenux-auth.log</code>. Consulte <link>ProxMenux → Segurança → Fail2Ban</link>.",
"calloutTitle": "Sem Fail2Ban, este mecanismo não bloqueia IPs",
"calloutBody": "O ProxMenux Monitor verifica os IP bloqueados pelo Fail2Ban ao <em>nível da aplicação</em> antes de processar pedidos Flask. Consulta fail2ban-client e guarda o resultado em cache durante 30 segundos; não lê uma tabela SQL de bloqueios. Sem Fail2Ban, as tentativas falhadas são registadas em <code>proxmenux-auth.log</code>, mas este mecanismo não bloqueia IPs."
},
"lynis": {
"heading": "Auditoria de segurança Lynis",
"subHeading": "(conforme o estado)",
"whatIs": "<strong>O que é.</strong> O Lynis é uma ferramenta de auditoria de segurança de código aberto que executa cerca de 280 testes no anfitrião: permissões, proteção do kernel, SSH, vulnerabilidades dos pacotes, política criptográfica, tarefas agendadas, identificação de serviços e outros. Produz um índice de segurança de 0 a 100, avisos e sugestões. É uma referência comum para avaliar servidores Debian.",
"whyUseful": "<strong>Porque é útil.</strong> Avaliar a segurança lendo cada ficheiro de configuração é difícil. O Lynis deteta falhas comuns: proteções do kernel ausentes, cifras SSH fracas, registos não persistentes ou <code>NOPASSWD</code> em sudoers para contas predefinidas. Repetir a análise após os ajustes ProxMenux permite comparar a melhoria através de uma pontuação.",
"notInstalledAlt": "Cartão Lynis não instalado com botão Instalar Lynis e funções: índice de segurança, deteção de vulnerabilidades, conformidade e código GitHub",
"notInstalledCaption": "Cartão Lynis antes de instalar — a caixa azul resume o que a ferramenta faz.",
"notBundled": "O Lynis também <strong>não está incluído</strong>. O ProxMenux instala-o diretamente a partir do código oficial no GitHub em vez do pacote Debian.",
"confirmAlt": "Diálogo de confirmação Lynis com as funções: índice de segurança, deteção de vulnerabilidades, análise de configuração, verificação de conformidade e código do repositório oficial GitHub",
"confirmCaption": "Confirmação da instalação que indica explicitamente a origem GitHub.",
"progressAlt": "Painel de instalação Lynis em direto, com instalação da versão mais recente, confirmação da versão 3.1.6 e mensagem final",
"progressCaption": "Instalação em curso: o painel mostra o registo em direto, tal como no Fail2Ban.",
"afterInstall": "Após a instalação, o cartão mostra a versão e um histórico de auditorias vazio. Clique em <em>Executar auditoria de segurança</em> para iniciar a primeira análise.",
"installedAlt": "Cartão Lynis após a instalação com versão 3.1.6, data da última análise, índice de segurança 0, avisos 0, sugestões 0, relatório vazio e botão Executar auditoria de segurança",
"installedCaption": "O Lynis está instalado, ainda sem auditorias. Os indicadores mostram inicialmente zeros.",
"runningAlt": "Cartão Lynis durante a auditoria com mensagem de análise em curso, duração estimada de 2 a 5 minutos e botão Auditoria em curso desativado",
"runningCaption": "Auditoria em curso: o botão mostra um indicador de carregamento e o cartão avisa que a análise pode demorar de 2 a 5 minutos.",
"finishedBody": "No fim, o cartão mostra os resultados: índice de segurança, avisos, sugestões e lista de <em>Relatórios de auditoria</em> com as análises anteriores.",
"resultsAlt": "Cartão Lynis com índice 71, detalhe Lynis 66 e PVE 71, 3 avisos, 40 sugestões, pontuação ajustada ao Proxmox de 71 em 100 na faixa Bom, relatórios com transferência PDF e botão Executar auditoria de segurança",
"resultsCaption": "Resultados de exemplo: índice de segurança <strong>71/100 (Bom)</strong>. O cartão mostra a pontuação original Lynis (66) e a ajustada ao Proxmox (71). O ajuste depende da pontuação original e da proporção das ocorrências consideradas normais no Proxmox VE; não acrescenta 11 pontos fixos.",
"scoreTitle": "Pontuação bruta de Lynis vs pontuação ajustada a Proxmox",
"scoreIntro": "As regras Lynis destinam-se a sistemas Debian de uso geral. O Proxmox diverge de algumas por motivos válidos, como serviços do cluster executados como root ou definições próprias de <code>journald</code>. O cartão mostra ambas as pontuações para:",
"scoreItems": [
"Acompanhar a <em>pontuação original Lynis</em>, como faria um auditor externo.",
"Acompanhar a pontuação <em>ajustada ao Proxmox</em>, uma referência mais adequada para comparar nós do mesmo cluster."
],
"reportBody": "<strong>Relatório completo.</strong> O botão <em>PDF</em> de cada auditoria transfere um relatório de várias páginas: resumo executivo, informações do sistema, estado da segurança, avisos explicados, sugestões ordenadas por impacto e inventário dos pacotes. Pode anexá-lo a uma revisão de segurança.",
"reportAlt": "Primeira página de exemplo do PDF Lynis com resumo executivo, índice 71 de 100, contagens de avisos e sugestões, nome de anfitrião, kernel, versão Lynis, data e resumo da segurança",
"reportCaption": "Primeira página do relatório: resumo executivo, informações do sistema e estado da segurança. Seguem-se avisos detalhados, sugestões e pacotes instalados. É fornecido um <a>PDF de exemplo</a> como referência.",
"runPeriodically": "Execute a auditoria periodicamente (após grandes atualizações do Proxmox, após a aplicação de ajustes pós-instalação, antes de abrir um caminho de acesso remoto) e mantenha os relatórios – a tendência importa mais do que qualquer número.",
"outro": "O guia de <em>instalação, configuração e desinstalação</em> e a análise de um relatório de exemplo estão em <link>ProxMenux → Segurança → Lynis</link>."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerCard": "Cartão",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"card": "Autenticação, 2FA, mudança de senha",
"endpoint": "/api/auth/*",
"source": "Configuração local de autenticação em ~/.config/proxmenux-monitor/auth.json; JWT emitidos pelo Monitor."
},
{
"card": "SSL/HTTPS",
"endpoint": "/api/auth/ssl/*",
"source": "<code>openssl x509</code> em <code>/etc/pve/local/pve-ssl.pem</code> + <code>/etc/proxmenux/ssl_config.json</code>."
},
{
"card": "Listar, gerar e revogar tokens de API",
"endpoint": "/api/auth/api-tokens",
"source": "Os dados dos tokens ficam guardados localmente; nada sai do anfitrião."
},
{
"card": "Gateway seguro (deploy + status)",
"endpoint": "/api/oci/*",
"source": "Cria um contentor LXC Alpine com <code>tailscaled</code> através de <code>pct create</code> / <code>pct exec</code>."
},
{
"card": "Estado e regras da firewall",
"endpoint": "/api/security/firewall/*",
"source": "<code>pve-firewall</code> + <code>/etc/pve/firewall/&lt;cluster|host&gt;.fw</code>."
},
{
"card": "Fail2Ban (somente quando instalado)",
"endpoint": "/api/security/fail2ban/*",
"source": "<code>fail2ban-client status</code>, <code>/var/log/fail2ban.log</code>, <code>/etc/fail2ban/jail.local</code>."
},
{
"card": "Auditoria Lynis (apenas quando instalado)",
"endpoint": "/api/security/lynis/*",
"source": "Executa o <code>lynis audit system</code> em segundo plano; relatório analisado do <code>/var/log/lynis-report.dat</code>."
}
]
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Acesso e autenticação",
"href": "/docs/monitor/access-auth",
"tail": " — configuração inicial completa, escolha de aplicação 2FA, recuperação após perda do autenticador e exemplos de proxy inverso."
},
{
"label": "Integrações",
"href": "/docs/monitor/integrations",
"tail": " — exemplos de tokens de API com Homepage, Home Assistant, Prometheus e n8n e configuração completa do Secure Gateway."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tailRich": " — todos os endpoints <code>/api/auth</code>, <code>/api/security</code> e <code>/api/oci</code> com método, corpo do pedido e exemplos curl."
},
{
"label": "ProxMenux → Segurança → Fail2Ban",
"href": "/docs/security/fail2ban",
"tail": " — guia de instalação, jails configuradas e instalação manual."
},
{
"label": "ProxMenux → Segurança → Lynis",
"href": "/docs/security/lynis",
"tail": " — relatório de exemplo, interpretação da pontuação e quando repetir a auditoria."
}
]
}
}
@@ -0,0 +1,367 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: separador Definições | Documentação ProxMenux",
"description": "O separador Definições gere idioma, ordem de navegação, preferências do painel, limites e exclusões da monitorização, notificações, IA e inventário das otimizações pós-instalação."
},
"header": {
"title": "Painel: separador Definições",
"description": "Idioma do Monitor, ordem de navegação, preferências do painel, exclusões da monitorização, notificações, configuração de IA e inventário atual das otimizações ProxMenux.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Onde cada definição é guardada",
"body": "Definições reúne apresentação do painel, monitorização Health Monitor, envio de alertas e alterações já aplicadas pelo ProxMenux ao anfitrião. Os cartões ligam à documentação detalhada; este separador é o ponto de acesso."
},
"interfaceLanguage": {
"heading": "Idioma da interface",
"intro": "Escolha o idioma da <strong>interface web do Monitor</strong>. Muda de imediato, sem reiniciar o serviço nem alterar o idioma dos menus de terminal do ProxMenux.",
"items": [
"O ProxMenux Monitor oferece atualmente inglês, alemão, espanhol, francês, italiano, português, eslovaco e sueco.",
"Na primeira visita usa o idioma do navegador, se suportado; caso contrário, inglês.",
"Alterar a seleção atualiza o idioma da página e sincroniza as outras abas do mesmo perfil do navegador.",
"Se faltar uma tradução, apenas esse texto aparece em inglês em vez de uma chave ou marcador inválido."
],
"scopeTitle": "Preferência local do navegador",
"scopeBody": "A escolha fica em <code>localStorage</code> sob <code>proxmenux-ui-language</code>. Aplica-se a este perfil do navegador e dispositivo, não ao nó inteiro. Cada administrador pode escolher o seu idioma."
},
"navigationOrder": {
"heading": "Ordem de navegação",
"intro": "Ordene as sete entradas principais: <strong>Visão geral, Apps, VMs e LXCs, Nó, Cópias, Terminal e Administração</strong>. Prima <strong>Editar</strong>, arraste as linhas e guarde.",
"items": [
"Com o rato, arrastar começa ao premir. Em ecrãs táteis exige uma pressão de 250 ms para distinguir do deslocamento.",
"Os grupos <strong>Nó</strong> e <strong>Administração</strong> movem-se em conjunto; as páginas internas mantêm a ordem definida.",
"O menu móvel segue a mesma ordem guardada.",
"<strong>Repor predefinições</strong> repõe a ordem em edição. Guarde para aplicar a alteração.",
"Os novos separadores principais de versões futuras são acrescentados ao fim da ordem personalizada, preservando a sua organização."
],
"landingTitle": "A primeira entrada é o separador inicial",
"landingBody": "O Monitor abre a primeira entrada guardada. Com <strong>Nó</strong>, abre Armazenamento; com <strong>Administração</strong>, Registos do sistema. A ordem fica neste navegador sob <code>proxmenux-nav-order</code>, permitindo organizações diferentes por dispositivo."
},
"networkUnits": {
"heading": "Unidades de rede",
"imageAlt": "Cartão Unidades de rede com o seletor de apresentação em Bytes",
"imageCaption": "Escolha entre bits por segundo e bytes por segundo para cada taxa de rede exibida no painel.",
"body": "Mostra a velocidade em <strong>bits por segundo</strong> (Mbps/Gbps) ou <strong>bytes por segundo</strong> (MB/s/GB/s). Bits são a predefinição, como nas especificações de placas e fornecedores; as transferências de ficheiros usam frequentemente bytes. Gráficos, etiquetas e ajudas mudam de imediato sem recarregar."
},
"health": {
"heading": "Monitor de Saúde",
"intro": "O cartão define a <strong>duração da supressão</strong>: quanto esperar antes de voltar a avisar sobre um alerta descartado. Cada categoria — CPU, memória, armazenamento, discos, rede, VM, serviços PVE, registos, atualizações e segurança — tem a sua lista:",
"items": [
"<strong>24 h</strong> — padrão para a maioria das categorias transitórias.",
"<strong>72 h</strong> — para silenciar estes eventos durante alguns dias.",
"<strong>168 h</strong> (1 semana) e <strong>720 h</strong> (1 mês) — controlos periódicos.",
"<strong>8760 h</strong> (1 ano) — silêncio durante um longo período.",
"<strong>-1</strong> — silêncio permanente até que você o reative manualmente.",
"<strong>Horas personalizadas</strong> — um número inteiro para um valor intermédio."
],
"imageAlt": "Definições, cartão Health Monitor com duração por categoria e supressões ativas",
"imageCaption": "As listas definem a duração das supressões futuras. A secção inferior mostra os alertas silenciados e permite reativá-los.",
"editTitle": "Modo de edição",
"editBody": "O cartão começa em leitura. <strong>Editar</strong> no canto superior direito ativa listas e botões de reativação. <strong>Guardar</strong> aplica em conjunto as durações e reativações pendentes; <strong>Cancelar</strong> descarta-as. Guardar só fica ativo quando há alterações.",
"activeTitle": "Supressões Ativas",
"activeIntro": "Sob as durações, <strong>Supressões ativas</strong> lista alertas silenciados temporariamente —24 h, 7 dias ou outro período— e os <em>permanentes</em>. Cada linha mostra:",
"activeItems": [
"Um emblema colorido: <strong>Permanente</strong> em âmbar ou uma contagem, como <strong>24 h restantes</strong> / <strong>7 dias restantes</strong>, em azul.",
"O identificador do alerta em formato legível (por exemplo, <code>pve_storage_full_PBS-Cloud</code> → <em>Armazenamento PVE cheio: PBS-Cloud</em>).",
"Categoria, gravidade e data e hora em que o alerta foi descartado.",
"Um botão <strong>Reativar</strong>, disponível ao editar, prepara a remoção da supressão ao guardar."
],
"activeReenableTitle": "Como reativar um alerta",
"activeReenableBody": "<strong>Reativar</strong> ao editar marca a linha a verde e risca o identificador, sem aplicar ainda a alteração. Clique de novo para <strong>Desfazer</strong>. <strong>Guardar</strong> envia em paralelo <code>POST /api/health/un-acknowledge</code> por reativação e retira as linhas. Se o problema persistir e a categoria permitir novos avisos, o alerta regressa aos ativos na próxima análise.",
"activePermanentNote": "As supressões permanentes —por <em>Permanentemente</em> ou duração predefinida <code>-1</code>— <strong>só são revertidas aqui</strong>. O diálogo geral não tem esse botão; esta secção reúne o registo e a reativação.",
"activeAutoRefreshTitle": "Atualização automática",
"activeAutoRefreshBody": "A lista atualiza-se ao descartar ou reativar um alerta no Health Monitor, ao regressar ao separador e quando muda a visibilidade. Não precisa de recarregar.",
"calloutTitle": "Detalhes na página Health Monitor",
"calloutBody": "Escalamento, resolução automática quando um dispositivo desaparece e diferença entre descartar e resolver estão em <link>Health Monitor → Descartar alertas e duração da supressão</link>. Este cartão oferece as listas e supressões ativas."
},
"thresholds": {
"heading": "Limites do Health Monitor",
"intro": "O cartão anterior define <em>o silêncio após dispensar um alerta</em>; este regula <strong>o valor que desencadeia um alerta</strong>. A maioria das verificações tem valores <strong>Aviso</strong> e <strong>Crítico</strong> ajustáveis. A tabela explica exceções como a regra combinada de swap e o detetor atual de RAM.",
"whatForTitle": "Para que serve",
"whatForIntro": "Os valores predefinidos são um ponto de partida, mas cada ambiente tem condições próprias:",
"whatForItems": [
"Um homelab com um só SSD pode avisar mais cedo, por exemplo a 75/90%, para deixar espaço para snapshots.",
"Os limites de memória devem refletir medições e carga do anfitrião. A redundância Ceph não justifica por si só avisos menos rigorosos; uso elevado de ARC ZFS não equivale a memória de trabalho irrecuperável.",
"Escolha os limites de temperatura conforme as especificações do disco e as condições reais. A refrigeração passiva ou forçada não determina só por si um limite seguro universalmente inferior ou superior.",
"Um anfitrião muito virtualizado pode ter picos de CPU durante compilações sem avisar por cada pico de 80%, mas deve alertar para saturação prolongada."
],
"whatForOutro": "As alterações suportadas aplicam-se <strong>na próxima análise</strong>. O Health Monitor lê <code>/usr/local/share/proxmenux/health_thresholds.json</code> em cada ciclo sem reinício. Alguns indicadores, como a temperatura dos discos, usam estes valores; certas barras de capacidade têm limites próprios. A linha RAM descreve uma exceção atual.",
"coloursTitle": "Cores dos estados Aviso e Crítico",
"coloursIntro": "Os widgets que usam Aviso/Crítico seguem os três estados abaixo. Outros indicadores, como as barras de capacidade PVE, têm limites próprios; a cor por si só não indica um alerta Health Monitor.",
"headerColour": "Cor",
"headerRange": "Intervalo",
"headerMeaning": "Significado",
"colourRows": [
{
"colour": "Verde",
"range": "valor < Aviso",
"meaning": "Intervalo normal. Não é gerado alerta."
},
{
"colour": "Âmbar",
"range": "Aviso ≤ valor < crítico",
"meaning": "Estado de aviso. O Health Monitor gera um evento WARNING; as notificações respeitam filtros e horas de silêncio."
},
{
"colour": "Vermelho",
"range": "valor ≥ Crítico",
"meaning": "Estado crítico. O Health Monitor gera um evento CRITICAL que ignora as horas de silêncio. As definições de categoria e evento do canal continuam a aplicar-se; a entrega depende também da sua disponibilidade."
}
],
"sectionsTitle": "Secções e valores predefinidos recomendados",
"sectionsIntro": "São os valores iniciais ProxMenux até serem alterados. As secções seguem <em>carga de processamento</em>, <em>temperatura</em> e <em>capacidade de armazenamento</em>, da carga atual ao espaço ocupado.",
"headerSection": "Secção",
"headerWarning": "Aviso",
"headerCritical": "Crítico",
"headerGates": "Verificação controlada",
"thresholdRows": [
{
"section": "Uso da CPU",
"warning": "85 %",
"critical": "95 %",
"gates": "Alerta de carga prolongada quando a média de CPU ultrapassa o limite no período de análise."
},
{
"section": "Memória",
"warning": "85 %",
"critical": "95 %",
"gates": "Pressão RAM do anfitrião. A definição mostra Crítico a 95%, mas o detetor atual usa uma regra fixa de 90% sustentados; alterar a definição não muda atualmente esse ramo."
},
{
"section": "Swap (apenas nível crítico)",
"warning": "—",
"critical": "80 %",
"gates": "O CRITICAL de swap exige mais de 80% de swap e menos de 15% de RAM disponível em várias medições. O swap ocupado por si só não ativa a regra."
},
{
"section": "Temperatura da CPU",
"warning": "80 °C",
"critical": "90 °C",
"gates": "Temperatura do conjunto CPU ou dos núcleos obtida de <code>lm-sensors</code>."
},
{
"section": "Temperatura do disco — HDD",
"warning": "60 °C",
"critical": "65 °C",
"gates": "Temperatura HDD. Valores iniciais: aviso a 60 °C, crítico a 65 °C. São valores de monitorização, não um limite universal do fabricante; consulte as especificações do modelo."
},
{
"section": "Temperatura do disco — SSD",
"warning": "70 °C",
"critical": "75 °C",
"gates": "SSD SATA de 2,5 polegadas ou M.2. Esta classe usa 70/75 °C por predefinição; os limites reais dependem do modelo."
},
{
"section": "Temperatura do disco — NVMe",
"warning": "80 °C",
"critical": "85 °C",
"gates": "Temperatura NVMe. Esta classe usa 80/85 °C por predefinição. A temperatura de limitação do controlador varia por modelo e nem sempre é 85 °C."
},
{
"section": "Temperatura do disco — SAS",
"warning": "55 °C",
"critical": "65 °C",
"gates": "Temperatura SAS. Esta classe usa aviso a 55 °C e crítico a 65 °C. São <em>valores de monitorização</em>, não prova de falha de refrigeração a 55 °C nem um limite universal."
},
{
"section": "Espaço em disco — máquina",
"warning": "85 %",
"critical": "95 %",
"gates": "Capacidade de <code>/</code> e de cada ponto de montagem do anfitrião (<code>/var/lib/vz</code>, <code>/mnt/*</code>…)."
},
{
"section": "Espaço em disco — LXC rootfs",
"warning": "85 %",
"critical": "95 %",
"gates": "Disco raiz por contêiner, avaliado em relação ao tamanho do rootfs do PVE."
},
{
"section": "Pontos de montagem LXC",
"warning": "85 %",
"critical": "95 %",
"gates": "Capacidade das montagens em CT ativos: mp0, mp1, NFS e bind mounts. Exclui rootfs."
},
{
"section": "Armazenamento PVE",
"warning": "85 %",
"critical": "95 %",
"gates": "Armazenamentos geridos por PVE: LVM, LVM-thin, ZFS-pool, RBD/Ceph e PBS. Nem todos são backends de blocos."
},
{
"section": "Conjunto ZFS",
"warning": "85 %",
"critical": "95 %",
"gates": "Pools ZFS do anfitrião, independentemente do registo no PVE."
}
],
"defaultsTitle": "Valores predefinidos, alterações e reposição",
"defaultsBody": "Cada secção parte dos valores predefinidos; guarda apenas as alterações desejadas. O cartão mostra o valor <em>efetivo</em>: a alteração ou o valor inicial. <strong>Repor</strong> elimina todas as alterações de todas as secções.",
"validationTitle": "Validação",
"validationBody": "Ao guardar são verificados os intervalos permitidos e rejeitado Crítico abaixo de Aviso. A interface mostra erros e o servidor valida de novo os pedidos API antes de guardar."
},
"lxcDetection": {
"heading": "Detecção de atualização LXC",
"imageAlt": "Cartão de deteção de atualizações LXC com interruptor para procurar pacotes pendentes em contentores Debian, Ubuntu e Alpine ativos",
"imageCaption": "Interruptor da análise periódica com <code>apt list --upgradable</code> / <code>apk list -u</code> nos CT ativos. Vem ligado. A opção correspondente em Notificações → Serviços aparece com a deteção ativa.",
"intro": "O interruptor entre Limites e Notificações controla a análise LXC. Ativo, consulta os gestores de pacotes dos CT em execução; Hardware mostra os resultados e alimenta <code>lxc_updates_available</code>. Desativado, para as chamadas <code>pct exec</code> e remove entradas LXC de <code>managed_installs.json</code>; <code>/api/managed-installs</code> deixa de mostrar esse estado sem esperar 24 h.",
"whatRunsTitle": "O que a análise executa",
"whatRunsIntro": "Para cada CT no estado <code>running</code> com um gestor de pacotes suportado:",
"whatRunsItems": [
"<strong>Atualidade dos metadados.</strong> Se a cache apt/apk ultrapassar <strong>24 horas</strong>, tenta <code>apt-get update -qq</code> em Debian/Ubuntu ou <code>apk update</code> em Alpine, com limite de 60 s. Se falhar, a lista usa a cache disponível e pode estar desatualizada.",
"<strong>Lista.</strong> Executa <code>apt list --upgradable</code> / <code>apk list -u</code> e obtém o número de pacotes e alguns nomes.",
"<strong>Evitar duplicados por CT.</strong> Uma impressão do total, atualizações de segurança e nomes ordenados evita avisos diários idênticos. Uma alteração relevante gera novo aviso."
],
"selfUpdateTitle": "CT atualizados fora de apt podem indicar 0",
"selfUpdateBody": "A deteção cobre apenas o gestor de pacotes do CT. Software atualizado fora de apt, como uma tarefa <code>plexupdate</code> configurada ou imagens obtidas com <code>docker pull</code>, fica fora da contagem. Zero atualizações apt não prova que todas as aplicações estejam atuais. Os pacotes do sistema base continuam a ser detetados.",
"refreshTitle": "Porquê renovar os metadados após 24 h",
"refreshBody": "Um CT ativo há muito pode ter metadados apt antigos se ninguém executar <code>apt update</code>. <code>apt list --upgradable</code> pode então omitir atualizações novas. O ProxMenux tenta renovar após 24 horas e ignora o passo com cache mais recente.",
"toggleTitle": "Opção de notificação ligada à deteção",
"toggleBody": "A opção <code>lxc_updates_available</code> por canal em <strong>Notificações → Serviços</strong> só aparece com a deteção ativa. Desativá-la oculta a linha em todos os canais. A preferência fica na base de dados e recupera o mesmo valor ao reativar.",
"purgeTitle": "O que é removido ao desativar a deteção",
"purgeBody": "Desativar remove de imediato as entradas <code>type=lxc</code> de <code>/usr/local/share/proxmenux/managed_installs.json</code>. Os contadores de atualizações LXC em Hardware desaparecem na próxima atualização. Reativar preenche o registo no próximo ciclo, ou antes por atualização manual da API."
},
"storageExclusions": {
"heading": "Exclusões de armazenamento remoto",
"imageAlt": "Cartão de exclusões de armazenamento remoto com PBS-Cloud, PBS e PBS2 e opções Estado e Alertas por linha",
"imageCaption": "Opções <em>Estado</em> e <em>Alertas</em> por armazenamento. Com ambas desligadas, deixa de contar no Health Monitor e de enviar notificações. Continua visível em Armazenamento, marcado como excluído.",
"intro": "Pode excluir armazenamentos geridos pelo Proxmox (NFS / CIFS / PBS / Ceph / iSCSI / etc.) com duas opções independentes:",
"items": [
"<strong>Estado</strong> — desligar esta opção retira o armazenamento da categoria Armazenamento do Health Monitor. Útil para volumes de arquivo normalmente desligados ou destinos remotos de cópia ligados apenas nos horários previstos.",
"<strong>Alertas</strong> — desligar impede notificações deste armazenamento pelos canais configurados, mesmo com as verificações de estado ativas. Útil para consultar o estado no painel sem receber notificações."
],
"outro": "Os armazenamentos excluídos continuam na <link>aba Armazenamento</link> com o emblema roxo <em>excluído</em>, mantendo o inventário visível. O estado fica na tabela SQLite <code>excluded_storages</code>."
},
"interfaceExclusions": {
"heading": "Exclusões de interface de rede",
"imageAlt": "Cartão de exclusões das interfaces vmbr0, vmbr1, vmbr2, bond0 e eno1 com opções Estado e Alertas por interface",
"imageCaption": "Tal como no armazenamento, cada interface tem <em>Estado</em> e <em>Alertas</em>. Cada linha mostra nome, tipo (bridge / bond / física), IP e velocidade da ligação.",
"intro": "O mesmo princípio aplica-se às interfaces: excluir cada uma das verificações de estado, das notificações ou de ambas. Exemplos habituais:",
"items": [
"Uma bridge de reserva desativada intencionalmente.",
"Uma placa de rede removida fisicamente que ainda consta em <code>/etc/network/interfaces</code>.",
"Uma subinterface VLAN usada apenas durante a manutenção.",
"Uma bridge de gestão com alterações repetidas e conhecidas do estado da ligação durante a manutenção."
],
"outro": "O estado fica na tabela SQLite <code>excluded_interfaces</code>. O emblema roxo <em>excluída</em> na <link>aba Rede</link> mantém visíveis as interfaces excluídas."
},
"notifications": {
"heading": "Notificações e IA",
"body1": "Aqui se ativam as notificações do ProxMenux Monitor e a reformulação com IA. <em>Ativar notificações</em> inicia o envio em segundo plano, regista um destino webhook Proxmox VE para integrar os seus eventos e abre os canais: Telegram, Discord, email, Gotify e outros. A reformulação com IA está numa secção avançada expansível do mesmo painel.",
"body2": "As opções são explicadas em páginas próprias: canais, controlos por evento, mensagens formatadas, nome apresentado, envio com eliminação de duplicados, intervalo, agregação e horas de silêncio, webhook PVE, fornecedores de IA e modos de instruções:",
"items": [
"<notifLink>Notificações</notifLink>: configuração dos canais (Telegram, Discord, Gotify, email e palavras-passe de aplicação Gmail / Microsoft, ntfy, Slack, Teams e webhook genérico), categorias de eventos, mensagens formatadas, nome apresentado, envio, webhook PVE, histórico e API.",
"<aiLink>Assistente de IA</aiLink>: fornecedores (OpenAI, Anthropic, Gemini, Groq, OpenRouter, Ollama), modelos, instruções predefinidas ou personalizadas, idioma de saída, detalhe por canal e sugestões de IA."
]
},
"optimizations": {
"heading": "Otimizações ProxMenux",
"intro": "Inventário das otimizações pós-instalação registadas pelo ProxMenux no anfitrião. As opções de <autoLink>Pós-instalação automatizada</autoLink> e <customLink>Pós-instalação personalizável</customLink> registam a aplicação em <code>/usr/local/share/proxmenux/installed_tools.json</code>. O Monitor lê esse registo. Uma entrada não volta a verificar se todas as definições permanecem intactas.",
"imageAlt": "Cartão de otimizações ProxMenux com 14 entradas: ponto colorido, nome e versão. Inclui APT IPv4 Force, Bashrc Customization, Fastfetch, Log2ram SSD Protection, Memory Settings Optimization, Setting persistent network interfaces, System Limits Increase, APT Language Skip, Entropy Generation haveged com Legacy, Kernel Panic Configuration, Logrotate Optimization, Network Optimizations, Subscription Banner Removal e VFIO IOMMU Passthrough.",
"imageCaption": "Cada otimização mostra nome, versão e ponto colorido. No canto superior direito fica o contador laranja <em>14 ativas</em>. As ferramentas com código-fonte disponível podem ser abertas.",
"dotsTitle": "O que significam os pontos",
"dotsItems": [
"<green/> <strong>Ponto verde</strong>: otimização registada sem marca Legacy nem atualização indicada. Abra a linha se houver código-fonte disponível.",
"<amber/> <strong>Ponto âmbar e emblema <em>legacy</em></strong>: otimização registada cujo script foi renomeado ou substituído. O código preservado abre em modo Legacy com destaque âmbar. Não volta a verificar a configuração atual do anfitrião."
],
"clickTitle": "Abrir o código-fonte",
"clickBody": "Clicar mostra a função bash associada e o nome do script (<code>auto_post_install.sh</code> ou <code>customizable_post_install.sh</code>). As ferramentas atuais são extraídas dos ficheiros do anfitrião; as antigas podem usar código preservado. O realce de sintaxe e Copiar ajudam na análise. Não é uma cópia garantida do código executado na instalação.",
"detailAlt": "Janela de código de APT IPv4 Force com a função bash force_apt_ipv4 de customizable_post_install.sh versão 1.0. O código realçado configura /etc/apt/apt.conf.d/99-force-ipv4 com Acquire ForceIPv4 true, regista a ferramenta e mostra uma mensagem traduzida de configuração APT IPv4 concluída.",
"detailCaption": "Código de <em>APT IPv4 Force</em>: função <code>force_apt_ipv4()</code> de <code>customizable_post_install.sh v1.0</code>, com realce de sintaxe e cópia num clique.",
"whyTitle": "Por que isso importa?",
"whyBody": "O ProxMenux pode alterar parâmetros do kernel, repositórios, rede, rotação de registos e passthrough de GPU. Consulte as otimizações registadas antes de alterações manuais, sobretudo se outro administrador preparou o anfitrião. O cartão mostra o registo e o código disponível; não audita todas as definições atuais nem guarda um histórico exato de execução.",
"updatesTitle": "Faixa de atualizações disponíveis",
"updatesBody": "Se a versão em disco de uma otimização superar a registada no anfitrião, aparece uma faixa com o total e <strong>Aplicar</strong>. <strong>Aplicar</strong> abre o seletor, tal como <em>Aplicar atualizações disponíveis</em> no menu pós-instalação. Escolha o que atualizar: o ProxMenux volta a executar as funções e atualiza o registo. A faixa desaparece quando tudo está atualizado.",
"updatesAlt": "Cartão de otimizações ProxMenux com faixa de atualizações disponíveis, total pendente e botão Aplicar para selecionar otimizações",
"updatesCaption": "A faixa aparece se pelo menos uma otimização tiver versão mais recente em disco. Consulte <link>Aplicar atualizações disponíveis</link> para o processo completo e a opção Path-A equivalente no menu da shell.",
"revertTitle": "Reverter uma otimização",
"revertBody": "Para reverter uma otimização, use a opção correspondente em <link>Desinstalar otimizações</link> no menu ProxMenux Scripts. A desinstalação remove a entrada de <code>installed_tools.json</code>, que desaparece do cartão na próxima atualização."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerCard": "Cartão",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"card": "Idioma da interface",
"endpoint": "localStorage",
"source": "Preferência do navegador <code>proxmenux-ui-language</code>; sem escolha guardada, usa inicialmente o idioma do navegador."
},
{
"card": "Ordem de navegação",
"endpoint": "localStorage",
"source": "Preferência do navegador <code>proxmenux-nav-order</code>; também determina a aba inicial."
},
{
"card": "Unidades de rede",
"endpoint": "/api/settings",
"source": "Guardado na tabela SQLite de definições do painel."
},
{
"card": "Durações do Health Monitor",
"endpoint": "/api/health/settings",
"source": "Duração do silenciamento por categoria na base de dados do Health Monitor."
},
{
"card": "Exclusões de armazenamento / interface",
"endpoint": "/api/storage/exclusions, /api/network/exclusions",
"source": "Tabelas de SQLite <code>excluded_storages</code> e <code>excluded_interfaces</code>."
},
{
"card": "Painel Notificações e IA",
"endpoint": "/api/notifications/*",
"source": "Consulte <notifLink>Notificações</notifLink> e <aiLink>Assistente de IA</aiLink>."
},
{
"card": "Lista de otimizações ProxMenux",
"endpoint": "/api/proxmenux/installed-tools",
"source": "Lê <code>/usr/local/share/proxmenux/installed_tools.json</code>, escrito por chamadas a <code>register_tool</code> nos scripts pós-instalação."
},
{
"card": "Janela do código de otimização",
"endpoint": "/api/proxmenux/tool-source",
"source": "Extrai a função bash associada de <code>auto_post_install.sh</code> ou <code>customizable_post_install.sh</code> no anfitrião; ferramentas antigas podem usar código preservado."
}
]
},
"whereNext": {
"heading": "Para continuar",
"items": [
{
"label": "Aba Aplicações",
"href": "/docs/monitor/dashboard/apps",
"tail": " — o lançador cuja posição se altera na ordem de navegação."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tail": " — canais, controlos por evento, ajustes por canal, histórico e envios de teste."
},
{
"label": "Assistente de IA",
"href": "/docs/monitor/ai-assistant",
"tail": " — fornecedores, modelos, modos de instruções, idiomas e detalhe por canal."
},
{
"label": "Health Monitor → Dispensar alertas e duração do silenciamento",
"href": "/docs/monitor/health-monitor#dismissing-alerts-and-the-suppression-duration",
"tail": " — como funcionam as listas de duração por categoria."
},
{
"label": "ProxMenux Scripts → Pós-instalação automatizada",
"href": "/docs/post-install/automated",
"tailRich": " e <customLink>Pós-instalação personalizável</customLink> — os scripts que registam as otimizações na lista acima."
},
{
"label": "Desinstalar otimizações",
"href": "/docs/post-install/uninstall",
"tail": " — como reverter uma otimização registada acima."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — voltar à visão geral das abas."
}
]
}
}
@@ -0,0 +1,268 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: separador Armazenamento | Documentação ProxMenux",
"description": "O separador Armazenamento reúne quatro vistas: armazenamentos Proxmox com estado, pools ZFS, discos internos com SMART e unidades USB externas. O detalhe de cada disco mostra atributos SMART, desgaste, vida útil e histórico permanente de observações."
},
"header": {
"title": "Painel: separador Armazenamento",
"description": "Todo o armazenamento do anfitrião num ecrã: NFS / CIFS / LVM / ZFS / dir Proxmox, estado dos pools ZFS, discos internos SATA/NVMe com SMART e unidades USB externas. Clique num disco para ver os atributos SMART e o histórico de observações.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Apoiado por três fontes",
"body": "Os armazenamentos Proxmox vêm de <code>pvesm status</code>, ZFS de <code>zpool status</code>, discos de <code>lsblk</code> + <code>smartctl</code> e campos NVMe de <code>nvme</code>. O separador atualiza-se aproximadamente a cada 60 segundos; abrir o detalhe pede uma leitura SMART."
},
"thresholds": {
"title": "Cor do estado e limiares aplicados aqui",
"intro": "O Health Monitor classifica o estado como <green/> <strong>verde</strong> abaixo de Aviso, <amber/> <strong>âmbar</strong> entre Aviso e Crítico e <red/> <strong>vermelho</strong> a partir de Crítico. Seguem-se os valores predefinidos. As barras do painel podem usar outros limites visuais descritos abaixo.",
"items": [
"<strong>Capacidade</strong> (discos do anfitrião, armazenamentos PVE, pools ZFS, montagens LXC) — aviso 85%, crítico 95%.",
"<strong>Temperatura do disco</strong> — HDD 60/65 °C · SSD 70/75 °C · NVMe 80/85 °C · SAS 55/65 °C (alertar / crítico)."
],
"outro": "Cada valor é configurável por anfitrião. <link>Definições → Limites do Health Monitor</link> apresenta os valores de referência e explica como os ajustar."
},
"topRow": {
"heading": "Linha superior: resumo do armazenamento",
"intro": "Ao abrir, quatro cartões resumem capacidade total, utilização local, utilização remota e inventário de discos físicos. Dão respostas rápidas; os cartões abaixo contêm os detalhes.",
"imageAlt": "Separador Armazenamento com quatro cartões: capacidade total, utilização local, utilização remota e discos físicos",
"imageCaption": "Linha superior: capacidade total e número de discos, bytes usados localmente e remotamente e discos físicos por tipo com resumo do estado.",
"headerCard": "Cartão",
"headerWhat": "O que mostra",
"totalLabel": "Armazenamento Total",
"totalWhat": "Capacidade bruta total de todos os discos físicos. O rodapé indica quantos discos foram detetados.",
"localLabel": "Usado Localmente",
"localWhat": "Bytes usados no armazenamento local: LVM / LVM-thin / ZFS / dir nos discos do anfitrião. O valor principal mostra os bytes usados e o rodapé <em>X.XX % de Y TB</em> indica também a percentagem de ocupação.",
"remoteLabel": "Utilização remota",
"remoteWhat": "Mesmo formato da utilização local para armazenamentos remotos NFS / CIFS / PBS / Ceph / iSCSI. São contados separadamente porque as falhas locais e remotas têm efeitos distintos e estes recursos são dimensionados e monitorizados de forma diferente.",
"disksLabel": "Discos físicos",
"disksIntro": "Duas linhas de desagregação do inventário:",
"disksItems": [
"<strong>Por tipo</strong> — número de NVMe a roxo, SSD e HDD a azul. Aparecem os tipos detetados; um anfitrião apenas NVMe mostra só essa contagem.",
"<strong>Por estado</strong> — número de discos <em>normais</em> a verde, com <em>aviso</em> a amarelo e <em>críticos</em> a vermelho. Sem problemas aparece apenas «X normais»; os outros estados surgem quando há ocorrências."
]
},
"pveStorage": {
"heading": "Cartão de armazenamento Proxmox",
"intro": "Uma linha por armazenamento de <code>/etc/pve/storage.cfg</code> com tipo (<code>nfs</code> / <code>cifs</code> / <code>zfspool</code> / <code>lvm</code> / <code>lvmthin</code> / <code>dir</code> / <code>pbs</code>), nome, estado ativo/erro/não monitorizado, percentagem de uso e barra colorida:",
"items": [
"<strong>Até 75%</strong> — barra e valor azuis.",
"<strong>Acima de 75% até 90%</strong> — barra e valor amarelos. Estes limites visuais são distintos dos limites do Health Monitor.",
"<strong>> 90%</strong> — barra e valor vermelhos. Este limite visual é distinto do escalamento do Health Monitor.",
"<strong>Erro</strong> — contorno vermelho da linha se o armazenamento está configurado mas inacessível, por exemplo servidor NFS indisponível ou credenciais CIFS expiradas.",
"<strong>Excluído</strong> — contorno roxo e etiqueta «não monitorizado». Armazenamentos excluídos pelo utilizador, como volumes de arquivo mantidos desligados."
],
"calloutTitle": "Excluir um armazenamento da monitorização",
"calloutBody": "O menu de cada armazenamento permite marcá-lo como <em>excluído da monitorização</em>. A definição fica em <code>excluded_storages</code> e é aplicada pelo painel e Health Monitor: sem notificações nem efeito no estado geral."
},
"zfs": {
"heading": "Cartão ZFS Pools",
"intro": "Aparece apenas com ZFS instalado e pelo menos um pool. Cada linha mostra um pool com estado, tamanho, espaço alocado e livre e ícone de estado:",
"items": [
"<strong>ONLINE</strong> — verde. Tudo saudável.",
"<strong>DEGRADED</strong> — amarelo. O pool fornece dados, mas pelo menos um dispositivo está indisponível; é necessário tratar da substituição.",
"<strong>FAULTED</strong> / <strong>UNAVAIL</strong> / <strong>SUSPENDED</strong> — vermelho. O pool não fornece dados e exige intervenção imediata."
],
"outro": "O estado ZFS e SMART de cada disco contribui para a categoria <em>Discos e E/S</em> do <link>Health Monitor</link>."
},
"physical": {
"heading": "Discos físicos e status SMART",
"intro": "Discos internos (SATA / NVMe). Cada linha condensa os campos mais úteis num relance:",
"items": [
"<strong>Caminho do dispositivo</strong> — <code>/dev/sda</code>, <code>/dev/nvme0n1</code>.",
"<strong>Etiqueta de tipo</strong> — SATA / NVMe e respetivo ícone.",
"<strong>Etiqueta de sistema</strong> — marca laranja dos discos identificados como discos do sistema operativo. A deteção usa as montagens <code>/</code> e <code>/boot</code> e atribui <em>System</em>. A ausência da etiqueta não prova que o disco possa ser apagado ou reutilizado sem risco.",
"<strong>Modelo</strong> — fabricante e modelo de <code>smartctl -i</code>.",
"<strong>Capacidade</strong> — expressa em unidades legíveis.",
"<strong>Temperatura</strong> — valor atual em °C, com cor conforme o tipo de disco; NVMe usa limites mais altos que SATA.",
"<strong>Estado SMART</strong> — aprovado / falhou / desconhecido.",
"<strong>Etiqueta de observações</strong> — se o histórico permanente <code>disk_observations</code> contiver entradas do disco, uma etiqueta azul indica o número, como <em>3 obs.</em>. Clique no disco para as consultar.",
"<strong>Etiqueta de estado</strong> — Saudável / Aviso / Crítico, conforme SMART e as observações recentes."
],
"clickHint": "Um clique na linha abre o detalhe do disco descrito abaixo.",
"warningTitle": "Cuidado com os discos identificados como System",
"warningBody": "Os discos com etiqueta laranja <strong>System</strong> alojam o sistema ativo. A etiqueta ajuda a identificá-los; <link>ProxMenux → Gestor de discos → Formatar / Apagar</link> recusa ações destrutivas sobre eles. Para reutilizar o disco de arranque, use um ambiente de recuperação externo ao Proxmox em execução."
},
"external": {
"heading": "Armazenamento externo (USB)",
"body": "As unidades USB têm um cartão próprio, visível quando alguma está presente. Mostra os mesmos campos dos discos internos e uma etiqueta laranja <strong>USB</strong>. Como são frequentemente ligadas apenas para cópias ou transferências ocasionais, as observações são conservadas, mas os erros de E/S de unidades USB desligadas não são escalados."
},
"drillIn": {
"heading": "Diálogo de detalhe do disco",
"intro": "Clique num disco para abrir quatro separadores: <strong>Visão geral</strong> · <strong>SMART</strong> · <strong>Histórico</strong> · <strong>Agendamento</strong>. O cabeçalho mostra caminho, modelo, capacidade e, se aplicável, a etiqueta laranja <em>System</em>.",
"overviewTitle": "Separador 1 — Visão geral",
"overviewImageAlt": "Detalhe do disco, separador Visão geral com estado, indicador circular de desgaste e vida útil e atributos SMART principais",
"overviewImageCaption": "Visão geral: identificação, estado, vida restante com desgaste atual e dados escritos e atributos SMART principais.",
"overviewIntro": "Separador inicial para consultar o estado do disco sem executar um teste. Três blocos:",
"overviewItems": [
"<strong>Identificação</strong> — modelo, número de série, capacidade e estado Saudável / Aviso / Crítico.",
"<strong>Desgaste e vida útil</strong> — anel da vida restante (97%, 50%, …) com atributo de origem (<em>Media Wearout Indicator</em>, <em>Percentage Used</em>, …), barra da percentagem consumida, projeção <em>Vida estimada</em> em anos e total de dados escritos. NVMe mostra também <em>Available Spare</em>.",
"<strong>Atributos SMART</strong>: os valores principais são apresentados em duas colunas: temperatura, horas de funcionamento com uma duração legível como <em>3 anos e 116 dias</em>, velocidade de rotação ou <em>SSD</em>, ciclos de ligação, estado SMART, setores realocados, setores pendentes e erros CRC. A tabela completa dos atributos encontra-se no separador SMART."
],
"smartTitle": "Separador 2 — SMART",
"smartImageAlt": "Detalhe do disco, separador SMART com testes curto e alargado, último resultado e tabela completa de atributos",
"smartImageCaption": "Separador SMART: execute testes curtos ou alargados, consulte o último resultado e todos os atributos e abra o relatório completo para imprimir ou guardar como PDF.",
"smartIntro": "Ações disponíveis em três secções:",
"smartItems": [
"<strong>Executar teste SMART</strong> — dois botões. <em>Teste curto (~2 min)</em> espera pelo resultado e mostra-o no diálogo. <em>Teste alargado (segundo plano)</em> pode demorar horas em discos grandes, continua no servidor e avisa ao terminar.",
"<strong>Último teste</strong> — tipo, estado (<em>aprovado</em> / <em>falhou</em>) e data e hora da última execução.",
"<strong>Atributos SMART</strong> — tabela completa com ID, nome, valor, pior valor e estado normal, aviso ou crítico. SATA/SAS mostra a lista numerada. NVMe usa <code>nvme smart-log</code>: temperatura, reserva disponível, percentagem usada, unidades lidas/escritas, leituras/escritas do anfitrião, tempo de ocupação do controlador, ciclos de ligação, encerramentos inseguros, erros do suporte, entradas do registo de erros e tempo de temperatura composta em aviso/crítico."
],
"pdfTitle": "Ver relatório SMART completo (PDF)",
"pdfIntro": "No fim de SMART, <strong>Ver relatório SMART completo</strong> abre um relatório imprimível. Use o diálogo de impressão do navegador para o guardar como PDF, arquivar ou partilhar com o suporte num RMA.",
"pdfPreviewAlt": "Primeira página do relatório SMART com resumo executivo, indicador PASSED e informações do disco",
"pdfPreviewCaption": "Primeira página: resumo, indicador PASSED e informações completas do disco. O PDF de exemplo inclui desgaste SSD, todos os atributos SMART e histórico de testes.",
"pdfDownloadLabel": "Transferir relatório SMART de exemplo (PDF)",
"pdfSectionsIntro": "O relatório tem seis secções principais:",
"pdfSections": [
"<strong>Resumo executivo</strong> — estado PASSED/FAILED, avaliação clara do disco — saudável, com desgaste ou a falhar — e quatro dados: data do relatório, último tipo de teste, resultado e atributos verificados.",
"<strong>Informações do disco</strong> — modelo, série, capacidade, tipo HDD/SSD/NVMe, família, formato, interface (SATA 3.3 · 6.0 Gb/s, …), TRIM, temperatura e limite ideal, horas e ciclos de funcionamento, SMART, setores pendentes/realocados e erros CRC.",
"<strong>Desgaste e vida útil SSD</strong> (apenas SSD/NVMe) — vida restante, atributo de origem, desgaste atual, dados escritos e horas de funcionamento.",
"<strong>Atributos SMART completos</strong> — ID, nome, valor, pior valor, limite, valor bruto e estado de cada atributo. Os principais — Reallocated Sector Ct, Power On Hours, Reported Uncorrect, UDMA CRC Error Count, Media Wearout Indicator, … — têm uma breve explicação sob a linha.",
"<strong>Último autoteste e histórico completo</strong> — último teste com tipo, resultado, mensagem final e horas de funcionamento nessa altura, mais tabela numerada de todos os testes guardados.",
"<strong>Recomendações</strong> — ações conforme o resultado. Para discos saudáveis: <em>disco saudável / testes periódicos / estratégia de cópias</em>. Se os atributos saírem dos limites, surgem orientações de substituição."
],
"pdfOutro": "O navegador cria o relatório imprimível; Imprimir e Guardar como PDF abrem o diálogo de impressão. Escolha um nome como <code>SMART-&lt;short-id&gt;.pdf</code>. Conserve cópias datadas para comparar alterações ou partilhar com o suporte.",
"historyTitle": "Separador 3 — Histórico",
"historyImageAlt": "Detalhe do disco, separador Histórico com testes SMART anteriores e ações de transferência e eliminação",
"historyImageCaption": "Histórico SMART do disco. Cada linha mostra tipo, data e hora, antiguidade, marca do último teste e ações de transferência da saída <code>smartctl</code> e eliminação.",
"historyIntro": "Testes curtos e alargados concluídos e guardados para o disco. Cada entrada contém a saída original <code>smartctl</code> e os campos interpretados pelo Monitor para o painel. Ações por linha:",
"historyItems": [
"<strong>Transferir</strong> — guarda a cópia JSON com os dados <code>smartctl -a</code> usados pelo relatório. Útil se o suporte pedir os campos de diagnóstico originais.",
"<strong>Eliminar</strong> — remove manualmente um teste do histórico. A retenção em Agendamento (<em>últimos 5 / 10 / 20</em>) elimina automaticamente os mais antigos."
],
"scheduleTitle": "Separador 4 — Agendamento",
"scheduleImageAlt": "Detalhe do disco, separador Agendamento com interruptor de testes SMART automáticos, lista de horários e botão Adicionar agendamento",
"scheduleImageCaption": "Agendamento: escolha tipo, frequência e retenção; o Monitor configura <code>cron</code> para executar os testes automaticamente.",
"scheduleIntro": "Testes SMART automáticos através de cron, sem terminal. Três áreas:",
"scheduleItems": [
"<strong>Testes SMART automáticos</strong> — interruptor geral de todos os horários do disco. Permite suspendê-los durante a manutenção sem apagar a configuração.",
"<strong>Agendamentos configurados</strong> — uma linha por horário com tipo (<em>curto</em> / <em>longo</em>), expressão cron legível (<em>«Dia 1 do mês às 03:00»</em>, <em>«Todos os domingos às 02:00»</em>), discos abrangidos e retenção.",
"<strong>Adicionar / Editar agendamento</strong> — tipo (<em>curto ~2 min</em> / <em>longo 1–4 h</em>), frequência (<em>diária / semanal / mensal</em>), dia do mês ou semana, hora e resultados guardados (<em>últimos 5 / 10 / 20</em>)."
],
"scheduleOutro": "O horário cria uma entrada cron no anfitrião que chama o Monitor. Os resultados ficam no histórico SMART do separador 3 e a retenção elimina automaticamente os mais antigos quando termina um novo teste.",
"tempTitle": "Diálogo do histórico de temperatura",
"tempIntro": "O Monitor recolhe periodicamente as leituras dos discos com sensor de temperatura e guarda-as num histórico local. O valor atual aparece na Visão geral; um clique abre o histórico de temperatura.",
"tempImageAlt": "Histórico de temperatura com caminho e modelo, períodos de 1 hora, 24 horas, 7 ou 30 dias, indicadores Atual/Mínimo/Média/Máximo e gráfico de linhas colorido conforme os limites do tipo de disco",
"tempImageCaption": "O detalhe de temperatura abre-se na Visão geral se o sensor devolver um valor diferente de zero. O gráfico usa limites HDD / SSD / NVMe / SAS.",
"tempShowsTitle": "Conteúdo do diálogo",
"tempShowsItems": [
"<strong>Seletor de período</strong>: <em>1 hora</em>, <em>24 horas</em> por predefinição, <em>7 dias</em> ou <em>30 dias</em>. Cada pedido adapta a resolução para manter o gráfico legível.",
"<strong>Quatro indicadores</strong>: <em>Atual</em>, <em>Mínimo</em>, <em>Média</em> e <em>Máximo</em> no período. <em>Atual</em> usa os limites do armazenamento e notificações para distinguir temperatura normal, elevada ou muito alta.",
"<strong>Gráfico de linhas</strong> da temperatura no tempo, com linha e área coloridas conforme o tipo de disco:"
],
"tempDiskTypes": [
"HDD — limiares normalmente mais frios.",
"SSD — limiares moderados.",
"NVMe — limiares mais elevados (NVMe corre mais quente por projeto).",
"SAS — aviso a 55 °C e crítico a 65 °C, com limite de aviso diferente do HDD."
],
"tempConfigurable": "Os quatro tipos são configurados em <em>Definições → Limites do Health Monitor</em>.",
"tempWhyTitle": "Porque o histórico é útil",
"tempWhyItems": [
"<strong>Detetar tendências.</strong> Uma leitura isolada não revela que um disco aquece há semanas, por exemplo por falhas de ventilação, pó ou calor próximo. As vistas de 7 e 30 dias mostram a evolução.",
"<strong>Relacionar picos.</strong> Se uma cópia ou reconstrução ultrapassou brevemente o limite, as vistas de 1 e 24 horas mostram se o pico foi isolado ou recorrente.",
"<strong>Ajustar limites.</strong> Antes de os alterar em <em>Definições → Limites do Health Monitor</em>, consulte o gráfico de 30 dias para conhecer o intervalo real de funcionamento do disco."
],
"obsTitle": "Histórico de observações nos separadores",
"obsIntro": "As falhas podem desenvolver-se gradualmente. Um disco pode indicar SMART <strong>PASSED</strong> e registar erros de leitura em dmesg, perder ligações SATA ou mostrar setores pendentes intermitentes. O ProxMenux conserva estes <em>sinais</em> e mostra-os no diálogo junto do estado SMART atual.",
"obsImageAlt": "Visão geral de um disco com SMART aprovado e zero setores realocados/pendentes e erros CRC, mas uma observação de erro E/S com mensagem original do kernel, explicação ATA, primeira e última data e contagem",
"obsImageCaption": "Um disco que <strong>passa no SMART</strong> pode ter observações anteriores. O cartão acrescenta o histórico dos sinais ao estado atual.",
"obsWhatTitle": "O que é uma observação",
"obsWhatIntro": "O ProxMenux regista como <strong>observação</strong> os eventos de disco do registo do kernel, dmesg ou SMART demasiado específicos para uma notificação isolada. Cada linha mostra:",
"obsWhatItems": [
"<strong>Tipo</strong> — erro E/S, SMART, sistema de ficheiros, pool ZFS ou ligação.",
"<strong>Mensagem original do kernel</strong> de dmesg, para copiar para um motor de pesquisa ou pedido de suporte.",
"<strong>Breve explicação</strong> dos códigos ATA conhecidos: <code>IDNF</code>, endereço de setor não encontrado, possível setor ou cabo defeituoso; <code>UNC</code>, erro de leitura irrecuperável, setor defeituoso; e outros códigos padrão.",
"<strong>Primeira e última data</strong> e <strong>número de ocorrências</strong>, agrupadas por assinatura do erro."
],
"obsWhyTitle": "Porque o ProxMenux as regista e mostra",
"obsWhyItems": [
"<strong>As falhas podem evoluir.</strong> Erros do barramento ATA, setores UNC ou erros do suporte podem aparecer antes de SMART <em>FAILED</em>. O buffer dmesg não os conserva após reiniciar; o histórico de observações conserva.",
"<strong>SMART não exclui todas as falhas.</strong> Um disco pode ter atributos verdes e apresentar problemas. As observações conservam outros sintomas, como ICRC, IDNF, reinicializações de ligações SATA ou redução de velocidade.",
"<strong>Distingue o atual do recente.</strong> O Health Monitor resolve automaticamente erros transitórios que deixam de ocorrer. O histórico permite ver dias depois, por exemplo, três erros E/S de uma noite.",
"<strong>Alimenta as notificações por níveis.</strong> disk_io usa a frequência das observações para escolher silêncio, WARNING ou CRITICAL numa janela móvel de 24 horas introduzida em 1.2.1.2."
],
"obsDedupTitle": "Agrupamento de duplicados e novos avisos",
"obsDedupBody1": "As observações são agrupadas por <strong>assinatura</strong>, uma impressão estável do tipo de erro, dispositivo e campos-chave da mensagem. As repetições aumentam <code>occurrence_count</code> na linha existente. Uma <strong>assinatura diferente</strong> cria outra observação e conta como novo evento para as notificações.",
"obsDedupBody2": "Para evitar avisos em cascata, a primeira combinação de disco, assinatura e gravidade notifica o operador. A mesma combinação espera 24 horas antes de novo aviso, mesmo que a contagem aumente. A passagem de WARNING para CRITICAL interrompe a espera e avisa do agravamento.",
"obsDismissTitle": "Histórico permanente e erros ativos",
"obsDismissBody1": "As observações não podem ser descartadas, ocultadas ou apagadas. Cada assinatura tem um cartão; uma repetição aumenta a contagem e atualiza a última data. O histórico segue o número de série: outro disco começa vazio mesmo na mesma porta e uma mudança de nome pelo kernel conserva o histórico.",
"obsDismissBody2": "Resolver ou descartar um erro ativo no Health Monitor não altera as observações. Permanecem após a resolução automática, para que um aviso transitório da semana passada continue visível. Consulte <link>Health Monitor</link> para gerir os erros ativos."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerSection": "Secção da página",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"section": "Cartões de resumo superiores",
"endpoint": "/api/storage/summary",
"source": "Agregado de <code>lsblk</code>, <code>zpool list</code>, <code>vgs</code> / <code>lvs</code>."
},
{
"section": "Inventário por disco",
"endpoint": "/api/storage",
"source": "<code>lsblk -O</code> + <code>smartctl -i</code> por dispositivo, com cache de identidade limpa nos eventos hotplug."
},
{
"section": "Armazenamentos Proxmox",
"endpoint": "/api/proxmox-storage",
"source": "<code>pvesh get /nodes/&lt;node&gt;/storage</code> com o estado ativo/online de cada um."
},
{
"section": "Valores SMART atuais",
"endpoint": "/api/storage/smart/<disk>",
"source": "<code>smartctl -A &lt;dev&gt;</code> é uma consulta disponível; o endpoint de detalhe usa também JSON SMART completo e dados específicos NVMe."
},
{
"section": "Histórico de autotestes SMART",
"endpoint": "/api/storage/smart/<disk>/history",
"source": "Guardado em <code>/usr/local/share/proxmenux/smart/&lt;disk&gt;/</code> como cópias JSON."
},
{
"section": "Observações permanentes",
"endpoint": "/api/storage/observations",
"source": "Tabela SQLite atualizada pelo Health Monitor a cada ciclo e conservada após resolver os erros ativos."
}
],
"outro": "Verificando a cadeia de coleta na máquina:",
"codeComment1": "# Obter o estado atual a partir de um script",
"codeComment2": "# Comparar os dados do painel com os do sistema operativo"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — categoria Discos e E/S e regras de supressão."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints de armazenamento e SMART."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tailRich": " — ações posteriores desencadeadas por <code>disk_io_error</code>, <code>storage_unavailable</code> e <code>smart_test_failed</code>."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — as outras páginas."
},
{
"label": "ProxMenux → Gestor de discos",
"href": "/docs/disk-manager",
"tail": " — ações TUI: formatar, apagar, executar testes SMART e importar discos para VM ou contentores."
},
{
"label": "ProxMenux → Estado e testes SMART do disco",
"href": "/docs/disk-manager/smart-disk-test",
"tail": " — equivalente CLI: agendar testes SMART, exportar o JSON apresentado e consultar os tipos de teste e a sua interpretação."
}
]
}
}
@@ -0,0 +1,120 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: Registos do sistema | Documentação ProxMenux",
"description": "A guia System Logs consolida três fontes em uma tela: ao vivo journalctl com filtros e download, histórico de tarefas Proxmox (UPIDs) e registro de notificações — todos pesquisáveis, filtrados por intervalo de gravidade/tempo, e baixados como pacotes de texto."
},
"header": {
"title": "Painel: Registos do sistema",
"description": "Três subseparadores no mesmo ecrã: journal do sistema (journalctl com filtros), histórico de tarefas do Proxmox e registo de notificações. Todos permitem pesquisar, filtrar e transferir os dados como pacotes de texto.",
"section": "ProxMenux Monitor · Painel"
},
"readOnly": {
"title": "Apenas leitura por design",
"body": "Este separador não altera ficheiros de registo. Os filtros ficam no URL ou no estado da interface; as transferências são preparadas no servidor. O painel nunca apaga entradas. Para a manutenção dos registos, utilize <code>journalctl --vacuum-time=&lt;N&gt;</code> ou <code>logrotate</code> no host."
},
"topRow": {
"heading": "Linha superior: quatro contadores",
"items": [
"<strong>Total de entradas</strong> — número de registos no intervalo do filtro ativo.",
"<strong>Erros</strong> — número de entradas com gravidade ≤ 3 (<code>err</code> / <code>crit</code> / <code>alert</code> / <code>emerg</code>).",
"<strong>Avisos</strong> — número de entradas com gravidade 4 (<code>warning</code>).",
"<strong>Cópias de segurança</strong> — número de entradas de tarefas vzdump / PBS no mesmo intervalo."
]
},
"subtabs": {
"heading": "Três subseparadores",
"logsTitle": "Registros",
"logsIntro": "O journal do sistema, obtido no servidor com <code>journalctl</code>. Filtros disponíveis na barra de ferramentas:",
"logsFilters": [
"<strong>Gravidade</strong> — emerg / alert / crit / err / warning / notice / info / debug, ou qualquer combinação.",
"<strong>Tempo de alcance</strong> — último 5 min / 15 min / 1 h / 6 h / 24 h / 7 d / custom.",
"<strong>Pesquisa livre</strong> — subcadeia ou expressão regular (<code>journalctl --grep</code>).",
"<strong>Filtro por unidade</strong> — restringe a uma unidade systemd específica (<code>pveproxy.service</code>, <code>nginx.service</code>, …)."
],
"logsRowsAfter": "Cada linha mostra a hora, o crachá de gravidade, a unidade de origem e a mensagem. Mensagens longas colapsam com uma opção \"mostrar mais\". A ação <strong>Download</strong> agrupa o filtro atual em um único arquivo <code>.txt</code> via <code>GET /api/logs/download</code> — útil quando você deseja compartilhar uma fatia de diário com alguém.",
"logDetailsModalTitle": "Janela Detalhes do registo",
"logDetailsBody": "Clicar numa linha abre <strong>Detalhes do registo</strong> com todos os campos estruturados que journald capturou para essa entrada, como ao executar <code>journalctl --output=verbose</code> no host.",
"logDetailsImageAlt": "Janela Detalhes do registo — uma entrada do journal expandida com nível, serviço, data e hora, origem, unidade systemd, ID do processo, nome do host e mensagem completa",
"logDetailsImageCaption": "Detalhes do registo — todos os campos estruturados de journald para a entrada, com a mensagem completa sem cortes no final. Útil para registos de cron e serviços quando a linha de comando executada é relevante.",
"fieldsIntro": "Campos mostrados:",
"fields": [
"<strong>Level</strong> — emblema de gravidade colorido (INFO / AVISO / ERRO / CRÍTICO).",
"<strong>Service</strong> — nome curto da unidade / processo que emitiu a entrada.",
"<strong>Timestamp</strong> — data e hora completas da linha de registo.",
"<strong>Source</strong> — origem da entrada (jornal, kernel, auditoria, ...).",
"<strong>Systemd Unit</strong> — a unidade <code>.service</code> / <code>.timer</code> / <code>.socket</code> real se a entrada foi associada a uma.",
"<strong>Process ID</strong> — PID do processo de emissão.",
"<strong>Hostname</strong> — útil quando os periódicos são encaminhados através de nós de cluster.",
"<strong>Mensagem</strong> — mensagem completa sem cortes, num bloco monoespaçado pronto a copiar."
],
"maxLevelStoreTitle": "Journald MaxLevelStore",
"maxLevelStoreBody": "Numa instalação nova do Proxmox, journald utiliza por predefinição <code>MaxLevelStore=warning</code>, que descarta mensagens info. O Monitor deteta isto no arranque e acrescenta um ficheiro de configuração complementar (<code>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</code>) com o limiar <code>info</code>, para guardar mensagens informativas e mais graves. Isto não inclui debug.",
"backupsTitle": "Cópias de segurança",
"backupsBody": "Histórico de tarefas do Proxmox limitado às cópias de segurança. Uma linha por tarefa (<code>vzdump</code>, transferências PBS, recolha de dados não utilizados e verificação), com estado (OK / WARNINGS / ERROR), sistema convidado envolvido, armazenamento de origem, duração e UPID. Clique numa linha para carregar o registo completo através de <code>GET /api/task-log/&lt;upid&gt;</code>: os mesmos dados de <em>Datacenter → Tasks</em>, limitados às cópias de segurança.",
"notificationsTitle": "Notificações",
"notificationsBody1": "Todas as notificações enviadas pelo Monitor: Telegram, Discord, e-mail, Gotify, ntfy, Slack, Teams e webhook. Cada linha mostra data e hora, canal, tipo de evento, gravidade, título e corpo gerados e, se a IA estiver ativa, um controlo para comparar a sua reformulação com o original.",
"notificationsBody2": "Utilize este separador para verificar se um canal entrega notificações e comparar a reformulação da IA com o modelo de base. Os canais configuram-se na página detalhada <link>Notificações</link>."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerSubtab": "Subseparador",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"subtab": "Registos (filtro em direto)",
"endpoint": "/api/logs",
"source": "<code>journalctl --output json --since &lt;range&gt;</code> com filtros de gravidade, unidade e pesquisa aplicados no servidor."
},
{
"subtab": "Transferir",
"endpoint": "/api/logs/download",
"source": "A mesma consulta, devolvida como texto simples para grep / less."
},
{
"subtab": "Cópias de segurança",
"endpoint": "/api/backups",
"source": "Histórico de tarefas PVE filtrado por <code>vzdump</code>, transferências PBS, recolha de dados não utilizados e verificação."
},
{
"subtab": "Detalhes de uma tarefa de cópia de segurança",
"endpoint": "/api/task-log/&lt;upid&gt;",
"source": "Registo completo da tarefa em texto simples, lido de <code>/var/log/pve/tasks/&lt;index&gt;/&lt;upid&gt;</code>."
},
{
"subtab": "Histórico de notificações",
"endpoint": "/api/notifications/history",
"source": "Tabela SQLite <code>notification_history</code> alimentada pelo ciclo de envio."
}
],
"apiIntro": "O filtro em direto e as transferências também estão acessíveis através da API:",
"codeComment1": "# Erros e eventos mais graves da última hora com uma palavra-chave",
"codeComment2": "# Transfira o journal completo das últimas 6 horas como texto simples",
"codeComment3": "# Procure o resultado completo de uma tarefa específica por UPID"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — a categoria Registos do sistema, que deteta padrões persistentes, picos e cascatas."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tail": " — a monitorização do journal lê a mesma origem e transforma correspondências em notificações."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — os endpoints logs e task-log com os respetivos parâmetros de consulta."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — os outros separadores."
}
]
}
}
@@ -0,0 +1,177 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: Visão geral do sistema | Documentação ProxMenux",
"description": "O separador inicial predefinido do ProxMenux Monitor: quatro cartões (CPU, memória, VM e LXC ativos, temperatura) com atualização em direto e minigráfico de tendência, gráfico histórico e resumos de armazenamento e rede ligados aos respetivos separadores."
},
"header": {
"title": "Painel: Página Visão geral do sistema",
"description": "O separador aberto por predefinição: quatro cartões de métricas em direto no topo, gráfico histórico no centro e resumos de armazenamento e rede em baixo, com as mesmas API dos separadores dedicados.",
"section": "ProxMenux Monitor · Painel"
},
"readOnly": {
"title": "Um instantâneo somente de leitura",
"body": "Todos os painéis deste separador são informativos. As ações ficam nos separadores ligados: Armazenamento para gerir discos, VMs e LXCs para iniciar ou parar sistemas convidados e Segurança para configurar a autenticação."
},
"captureAlt": "Página Visão geral do sistema — quatro placas métricas (CPU, memória, VMs ativos, temperatura), gráfico de métricas de nós e placas de resumo de armazenamento / rede",
"captureCaption": "Visão geral do sistema, o separador inicial predefinido. Os quatro cartões atualizam em direto, o gráfico mostra o histórico e os dois cartões inferiores resumem armazenamento e rede.",
"topRow": {
"heading": "Linha superior: cartões de métricas em direto",
"intro": "Quatro cartões em grelha 2×2 no telemóvel e numa linha no computador. Cada um atualiza a partir de <code>/api/system</code> a cada poucos segundos.",
"headerCard": "Cartão",
"headerWhat": "O que mostra",
"headerSource": "Origem",
"rows": [
{
"card": "Uso da CPU",
"what": "Percentagem atual com barra de progresso. Atualiza a cada ~1 s através do amostrador de sinais vitais.",
"source": "psutil.cpu_percent()"
},
{
"card": "Uso de memória",
"what": "GB utilizados, percentagem e GB totais. A barra representa a percentagem.",
"source": "psutil.virtual_memory()"
},
{
"card": "VM ativa e LXC",
"what": "Número de sistemas convidados em execução, com distribuição Em execução / Parados e totais de VM e LXC no rodapé.",
"source": "/api/vms (consolidado)"
},
{
"card": "Temperatura",
"what": "Temperatura CPU em °C com estado (baixa / moderada / alta) e minigráfico dos últimos 5 minutos no fundo. Mostra <em>N/A</em> sem sensor. Clique para abrir os detalhes.",
"source": "sensors / coretemp"
}
],
"thresholdsTitle": "Cor do estado e limiares aplicados aqui",
"thresholdsIntro": "Anéis, barras e minigráficos usam a mesma escala: <green/> <strong>verde</strong> abaixo de Aviso, <amber/> <strong>âmbar</strong> entre Aviso e Crítico, <red/> <strong>vermelho</strong> a partir de Crítico. Valores recomendados incluídos no ProxMenux:",
"thresholdsItems": [
"<strong>Utilização CPU</strong> — aviso 85 %, crítico 95 %.",
"<strong>Memória</strong> — aviso 85 %, crítico 95 %. O swap também ativa Crítico a 5 % de utilização; um host Proxmox saudável deverá utilizá-lo raramente.",
"<strong>Temperatura CPU</strong> — aviso 80 °C, crítico 90 °C."
],
"thresholdsOutro": "Os valores são configuráveis por host. <link>Definições → Limiares do monitor de saúde</link> centraliza os ajustes e explica como os adaptar.",
"sparklineTitle": "O minigráfico mostra a tendência",
"sparklineBody": "A placa de temperatura desenha um traço de 5 minutos abaixo do valor, com a cor da linha e gradiente seguindo o mesmo par Aviso/Crítica documentado acima. É a maneira mais rápida de ver se o hospedeiro está em uma subida térmica sem abrir o modal detalhe."
},
"processes": {
"heading": "Principais processos por CPU / Memória",
"intro": "Os cartões Utilização CPU e Memória abrem uma lista ordenável dos 25 processos principais: por utilização CPU no primeiro caso e por memória residente no segundo.",
"listTitle": "A janela da lista",
"listItems": [
"<strong>Atualização automática</strong> — a lista atualiza a cada 5 segundos enquanto a janela está aberta e deixa de consultar ao fechar.",
"<strong>Filtro</strong> — a pesquisa limita a lista por comando, utilizador ou PID.",
"<strong>Barra inline</strong> — a coluna métrica primária desenha uma barra pequena escalonada para o valor mais alto da lista filtrada, então a classificação permanece visível mesmo quando nenhum processo está perto de 100 %.",
"<strong>Disposição móvel</strong> — abaixo de 640 px, PID e Utilizador ficam ocultos, para Comando, CPU % e Memória caberem sem deslocamento horizontal."
],
"captureListAlt": "Janela de processos por memória — tabela ordenada por RSS com PID, utilizador, comando, CPU % e memória",
"captureListCaption": "O cartão de memória abre a lista ordenada pelo RSS (acento indigo). O cartão CPU abre a mesma lista ordenada pelo uso de CPU (acento azul).",
"detailTitle": "Detalhes de cada processo",
"detailIntro": "Clique numa linha para abrir uma segunda janela com os dados em direto do processo, organizados em quatro secções:",
"detailItems": [
"<strong>Visão geral</strong> — estado, processo pai, número de threads, descritores de ficheiros abertos, utilizador e grupo.",
"<strong>Recursos</strong> — CPU %, memória %, memória residente (RSS), tamanho virtual, swap e totais de E/S de leitura e escrita.",
"<strong>Comando</strong> — nome curto, linha de comando completa, caminho do executável e diretório de trabalho.",
"<strong>Duração</strong> — data e hora de início e tempo de execução decorrido."
],
"detailRefresh": "Os detalhes atualizam a cada 3 segundos. Quando o processo termina, as consultas param e aparece o aviso âmbar <em>Este processo terminou</em>. O último estado capturado mantém-se visível, atenuado, para consultar o que acontecia antes do fim.",
"captureDetailAlt": "Detalhes do processo — Visão geral, Recursos, Comando e Duração para um PID",
"captureDetailCaption": "A janela de detalhes por processo foi aberta a partir de uma linha da lista. A cor do acento corresponde ao cartão que o abriu (azul para CPU, indigo para Memória)."
},
"middle": {
"heading": "Centro: gráficos de métricas do nó",
"body1": "Sob os cartões, <code>NodeMetricsCharts</code> apresenta históricos de CPU, memória e E/S de disco do armazenamento RRD do Proxmox através de <code>/api/node/metrics</code>. O seletor oferece <em>1 hora / 24 horas / 7 dias / 30 dias / 1 ano</em>. A resolução diminui em períodos maiores para manter o gráfico fluido.",
"body2": "Os mesmos gráficos da interface web do Proxmox para um nó, integrados no tema escuro do Monitor e alinhados com os outros painéis."
},
"bottom": {
"heading": "Linha inferior: Resumos de armazenamento e rede",
"storageTitle": "Cartão de visão geral do armazenamento",
"storageIntro": "Vista compacta do estado do armazenamento do host, dividida em três blocos:",
"storageItems": [
"<strong>Capacidade total do nó</strong> — soma dos armazenamentos VM/LXC e do armazenamento local do sistema, com barra em gradiente do espaço utilizado e livre.",
"<strong>Capacidade total / Discos físicos</strong> — capacidade bruta e número de discos físicos detetados.",
"<strong>Armazenamento VM/LXC</strong> — espaço utilizado, livre e percentagem dos armazenamentos dos sistemas convidados, com contagem quando há mais de um.",
"<strong>Armazenamento local (sistema)</strong> — ponto de montagem raiz ou de sistema do host, separado do pool dos sistemas convidados."
],
"storageDrillIn": "Os detalhes estão no <link>separador Armazenamento</link>: SMART por disco, pools ZFS, histórico de observações, etc.",
"networkTitle": "Cartão Visão Geral da Rede",
"networkBody1": "A linha superior mostra a contagem de interfaces ativas (física + pontes combinadas). Abaixo disso, duas fileiras de crachás coloridos para as interfaces que são <code>up</code> — NICs físicos em azul, pontes em uma cor secundária. Um seletor de tempo no topo direito (1 hora / 24 horas / 7 dias / 30 dias / 1 ano) controla um pequeno gráfico de tráfego RX / TX.",
"networkBody2": "Os detalhes por interface (IP/MAC, gráfico RRD, membros da bridge, modo bond, etc.) estão no <link>separador Rede</link>."
},
"refresh": {
"heading": "Modelo de atualização",
"intro": "Cada painel gere o seu estado de carregamento (<code>loadingStates.cpu</code>, <code>loadingStates.storage</code>, …), para que uma origem lenta não bloqueie as outras. Enquanto carrega mostra um marcador pulsante. As falhas são tratadas sem bloquear a vista: sem sensor de temperatura, o cartão mostra <em>N/A</em> em vez de um erro.",
"items": [
"<strong>Cartões superiores</strong> — atualização a cada ~5 s. CPU e temperatura também recebem dados a cada segundo do amostrador de sinais vitais.",
"<strong>Gráfico de métricas do nó</strong> — carrega ao abrir e ao mudar o período ou idioma. Se necessário, volta a tentar após 60 s.",
"<strong>Cartão de armazenamento</strong> — atualização a cada ~60 s. Os dados SMART ficam em cache mais tempo; o separador Armazenamento pede uma nova leitura quando necessário.",
"<strong>Cartão de rede</strong> — resumo a cada 59 s e gráfico de tráfego a cada 60 s no período ativo.",
"<strong>Atualização manual</strong> — o botão Atualizar no cabeçalho volta a carregar todos os painéis imediatamente."
]
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerCard": "Cartão",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"card": "Indicador de estado do cabeçalho",
"endpoint": "/api/health",
"source": "O estado geral em cache produzido pelo Health Monitor cada ciclo."
},
{
"card": "CPU / RAM / Swap / Tempo de atividade",
"endpoint": "/api/system",
"source": "<code>/proc/stat</code>, <code>/proc/meminfo</code>, <code>/proc/uptime</code> com amostragem de CPU de janela curta."
},
{
"card": "Informações da máquina (kernel, BIOS, distro)",
"endpoint": "/api/info",
"source": "<code>uname -a</code>, <code>dmidecode</code>, versão PVE. Cache por processo."
},
{
"card": "Cartões de armazenamento / rede / VMs",
"endpoint": "/api/storage/summary, /api/network/summary, /api/vms",
"source": "Consulte os separadores dedicados. Os cartões do cabeçalho apresentam uma vista compacta dos mesmos endpoints."
},
{
"card": "Frequência de atualização",
"endpoint": "—",
"source": "Sistema a cada 5 s; armazenamento, VM e resumo de rede a cada 59 s. O botão Atualizar no cabeçalho recarrega todos os painéis imediatamente."
}
],
"codeComment1": "# Chamada que alimenta o indicador de estado do cabeçalho",
"codeComment2": "# público, sem token",
"codeComment3": "# Instantâneo autenticado utilizado pelos cartões"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tail": " — a janela do indicador de estado do cabeçalho: dez categorias, avisos dispensados e supressão."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints system, info e health."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tail": " — como os mesmos estados se transformam em mensagens Telegram / Discord / Email."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — os restantes separadores do painel de relance."
},
{
"label": "Arquitetura",
"href": "/docs/monitor/architecture",
"tail": " — as threads em segundo plano e as API que alimentam esta vista."
}
]
}
}
@@ -0,0 +1,174 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: Terminal | Documentação ProxMenux",
"description": "Shell do host Proxmox no navegador: até 4 terminais em grelha, botões de teclado para dispositivos móveis (ESC, TAB, setas, combinações Ctrl), guia de comandos integrado com cheat.sh e proteção JWT."
},
"header": {
"title": "Painel: Terminal",
"description": "Uma sessão shell real no host Proxmox através do navegador. Até quatro terminais em simultâneo, botões de teclado para dispositivos móveis e guia de comandos integrado, com o mesmo tema do resto do painel.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Um PTY real no navegador",
"body": "O terminal cria um PTY no servidor através de <code>flask_terminal_routes</code>, liga-o por WebSocket a <code>xterm.js</code> no navegador e executa-se como <code>root</code>, o utilizador da unidade systemd. Como em <code>ssh root@&lt;host&gt;</code>, pode utilizar <code>vim</code>, <code>tmux</code>, ferramentas ncurses e as CLI Proxmox (<code>qm</code>, <code>pct</code>, <code>pvesh</code>, <code>pvecm</code>). Cada PTY exporta <code>PROXMENUX_TERMINAL=monitor</code>. Todos os processos filhos <code>bash</code>, incluindo um arranque posterior de <code>menu</code>, herdam a variável para reconhecer o terminal do Monitor."
},
"singleAlt": "Página do Terminal ProxMenux Monitor — sessão de terminal único mostrando o resumo do sistema Fastfetch no login",
"singleCaption": "Um terminal da máquina aberto — a barra de ferramentas acima mostra a contagem (<em>1 / 4 terminais</em>), <em>+ Novo</em>, <em>Procurar</em>, <em>Limpar</em> e <em>Fechar</em>. Os ajudantes de teclado móveis aparecem sob o terminal em dispositivos de toque.",
"target": {
"heading": "Alvo da conexão",
"body1": "A aba Terminal abre uma shell no próprio host <strong>Proxmox</strong> — o mesmo login que você teria sobre o SSH. Cada aba abre um novo terminal de host.",
"body2": "Para chegar a um container <strong>LXC</strong> do navegador, use o botão dedicado <em>Console</em> em cada cartão CT em execução na aba <link>VMs & LXCs</link>. Ele abre um modal que executa <code>pct enter &lt;vmid&gt;</code> e reutiliza a mesma barra de ferramentas amigável para dispositivos móveis descrita abaixo."
},
"menuGuard": {
"heading": "Proteção da atualização de menu neste terminal",
"body1": "Após confirmação, <code>menu</code> substitui a sua árvore de scripts e volta a carregar. Isto funciona por SSH ou consola Proxmox, mas no navegador fecharia o PTY da shell e interromperia o WebSocket. Para o evitar, <code>check_updates_stable</code>, <code>check_updates_beta</code> e <code>apply_release_channel</code> leem <code>PROXMENUX_TERMINAL</code> e detetam o contexto Monitor.",
"body2": "O diálogo sim/não é então substituído por uma mensagem com o comando oficial do instalador: <code>bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"</code> para stable e o URL equivalente de <code>install_proxmenux_beta.sh</code> para beta. Execute a atualização por SSH ou consola do host Proxmox; o terminal do navegador serve apenas para ler e confirmar a mensagem."
},
"fourTerminals": {
"heading": "Até quatro terminais ao mesmo tempo",
"intro": "A página permite- lhe abrir quatro terminais da máquina simultaneamente. Cada um tem o seu próprio PTY e o seu próprio WebSocket — são sessões totalmente independentes. Dois layouts alternam com os ícones ao lado do botão \"Novo\":",
"items": [
"<strong>Vista por separadores</strong> — um terminal visível, os outros como separadores com nome no topo (<em>Terminal 1</em>, <em>Terminal 2</em>…). Útil para uma tarefa, mantendo as outras em segundo plano.",
"<strong>Vista em grelha</strong> — todos os terminais abertos numa grelha 2×2. Permite observar <code>htop</code> num, <code>iftop</code> noutro e editar num terceiro sem mudar de separador."
],
"outro": "A barra indica a contagem (<em>1/4 terminais</em>, <em>4/4 terminais</em>). <strong>+ Novo</strong> abre um separador; o pequeno <code>×</code> do cabeçalho fecha esse separador. O botão vermelho grande <strong>Fechar</strong> no topo fecha todos os terminais."
},
"gridAlt": "Página do Terminal ProxMenux Monitor — vista em grelha com quatro terminais de máquinas em execução ls, configuração de rede, iftop e o menu principal ProxMenux lado a lado",
"gridCaption": "Vista em grelha (4 / 4 terminais) — quatro PTY independentes em paralelo: listagem de diretório, <code>/etc/network/interfaces</code>, <code>iftop</code> e menu principal ProxMenux. O seletor de disposição da barra alterna entre grelha e separadores.",
"keyboard": {
"heading": "Botões de teclado para dispositivos móveis",
"intro": "Os teclados de telemóvel e tablet geralmente não incluem ESC, TAB, setas ou combinações com modificadores. São necessárias para utilizar <code>vim</code>, <code>nano</code>, <code>htop</code> ou menus TUI. Terminal apresenta uma fila de botões táteis por baixo quando o ecrã é pequeno ou o dispositivo aceita toque:",
"headerButton": "Botão",
"headerSends": "Envia",
"headerUse": "Utilização típica",
"rows": [
{
"button": "ESC",
"sends": "\\x1b",
"use": "Sair do modo de inserção em <code>vim</code>, cancelar uma janela TUI, deixar uma pesquisa."
},
{
"button": "TAB",
"sends": "\\t",
"use": "Conclusão automática de caminhos e navegação entre campos em dialog/whiptail."
},
{
"button": "↑ ↓ ← →",
"sends": "\\x1bO[ABCD]",
"use": "Histórico da shell, movimento do cursor, navegação do menu."
},
{
"button": "↵ Enter",
"sends": "\\r",
"use": "Confirmar. Alguns teclados no ecrã substituem Enter por Ir/Concluído; este botão evita ambiguidades."
},
{
"button": "Ctrl ▾",
"sends": "Lista pendente",
"useRich": true
}
],
"ctrlIntro": "Três sequências de controlo:",
"ctrlItems": [
"<code>Ctrl+C</code> — cancelar / interromper o comando em execução (<code>\\x03</code>).",
"<code>Ctrl+X</code> — sair de <code>nano</code> (<code>\\x18</code>).",
"<code>Ctrl+R</code> — pesquisa inversa no histórico bash (<code>\\x12</code>)."
],
"modalTitle": "A mesma barra na janela da consola LXC",
"modalBody": "A consola aberta em <link>VMs e LXCs → Consola</link> apresenta os mesmos botões de teclado sob a janela. Ao ligar, introduz automaticamente <code>pct enter &lt;vmid&gt;</code> para entrar diretamente no contentor."
},
"lxcAlt": "Janela de consola LXC do ProxMenux Monitor — Terminal: ubuntu (ID: 103), com a mesma barra móvel (ESC, TAB, setas, Enter, Ctrl) por baixo",
"lxcCaption": "Consola LXC aberta em <em>VMs e LXCs → Consola</em>. O cabeçalho identifica o contentor de destino (<em>Terminal: ubuntu (ID: 103)</em>) e a mesma barra tátil aparece sob o terminal.",
"search": {
"heading": "Pesquisar comandos — guia de referência integrado",
"intro": "O botão azul <strong>Pesquisar</strong> abre uma pesquisa aproximada de comandos. Escreva algumas letras de um comando Linux ou Proxmox (<code>ls</code>, <code>tar</code>, <code>qm</code>, <code>pct</code>, <code>zpool</code>, <code>systemctl</code>…) para ver exemplos com <em>Enviar para o terminal ativo</em> num toque. Assim pode consultar opções sem mudar de separador.",
"modalAlt": "Janela Pesquisar comandos do ProxMenux Monitor — pesquisa aproximada de comandos Linux e Proxmox com cheat.sh e vários exemplos de ls",
"modalCaption": "Pesquisa de <code>ls</code> — cada resultado mostra comando, descrição e uma pequena seta de envio para o terminal ativo. A origem dos dados aparece no canto inferior direito (<em>Fornecido por cheat.sh</em>).",
"aboutLabel": "Sobre o cheat.sh:",
"aboutBody": "é um guia de referência de código aberto mantido pela comunidade, com exemplos curtos e práticos para centenas de comandos Linux, ferramentas de administração e linguagens de programação. Criado para ser consultado com <code>curl cheat.sh/&lt;command&gt;</code>, também funciona no navegador. O ProxMenux Monitor encaminha as consultas por um proxy no servidor para manter a mesma origem do painel.",
"headerSource": "Origem",
"headerWhen": "Quando é usado",
"headerWhat": "O que você vê",
"onlineLabel": "(em linha)",
"onlineWhen": "Quando o host tem acesso à internet e o proxy cheat.sh responde.",
"onlineWhat": "Vários exemplos práticos por comando, com a descrição por cima. O ponto de estado no cabeçalho é <green>verde</green>.",
"fallbackLabel": "Alternativa local",
"fallbackWhen": "Quando cheat.sh é inacessível (host offline, firewall restritivo, falha de cheat.sh).",
"fallbackWhat": "Uma lista incluída de comandos Linux e Proxmox comuns. O catálogo é menor, mas sempre disponível. O ponto de estado é <red>vermelho</red>.",
"sendingNote": "<strong>Como funciona o envio</strong>: a seta junto ao resultado envia o texto para o terminal ativo (separador selecionado ou último terminal clicado na grelha). A janela fecha automaticamente para poder premir Enter."
},
"auth": {
"heading": "Autenticação",
"items": [
"O navegador pede primeiro um ticket de utilização única através de <code>POST /api/terminal/ticket</code>, com JWT no cabeçalho <code>Authorization</code>. Envia depois o ticket ao abrir o WebSocket. Expira após 5 segundos; com autenticação ativa, um ticket ausente ou inválido fecha a ligação antes de criar um PTY.",
"Se o Monitor estiver atrás de um proxy inverso, este tem de encaminhar os upgrades WebSocket. Exemplos Nginx / Caddy / Traefik na página <link>Acesso e autenticação</link>."
]
},
"clipboard": {
"heading": "Área de transferência, rolagem e redimensionamento",
"items": [
"<strong>Copiar e colar</strong> — utiliza a área de transferência do navegador. Selecione texto com rato ou trackpad e use o atalho do sistema (<code>Cmd+C</code> em macOS, <code>Ctrl+Shift+C</code> em Linux/Windows). Os ambientes Linux também permitem colar com o botão central.",
"<strong>Histórico do ecrã</strong> — deslocamento com roda ou dois dedos. xterm.js mantém em memória os últimos milhares de linhas.",
"<strong>Redimensionamento</strong> — o terminal ajusta a janela PTY quando redimensiona o painel, para apresentar corretamente <code>htop</code> e <code>vim</code>.",
"<strong>Reconexão ao voltar ao separador</strong> — mudar de aplicação no telemóvel ou tablet, sobretudo no iPad, pode cortar o WebSocket. Terminal deteta a mudança de visibilidade e volta a ligar ao regressar, com um tempo limite de 15 segundos para VPN lentas."
]
},
"disconnect": {
"heading": "Causas de desconexão",
"intro": "As causas mais comuns do fim de uma sessão e como resolver cada uma:",
"headerCause": "Causa",
"headerFix": "Solução",
"rows": [
{
"cause": "JWT da sessão expirado ao abrir ou voltar a ligar um terminal (período de 24 h).",
"fix": "Atualizar a página e iniciar sessão novamente. O terminal não foi projetado para sessões sem acompanhamento, então a vida útil do JWT corresponde ao login regular do painel."
},
{
"cause": "Tempo limite de inatividade do proxy inverso.",
"fix": "Aumente <code>proxy_read_timeout</code> no Nginx ou o equivalente no Caddy / Traefik (exemplos em Acesso e autenticação)."
},
{
"cause": "Telemóvel ou tablet em suspensão.",
"fix": "Quando o dispositivo retoma, o separador volta a ligar automaticamente (tempo limite de 15 s para ligações VPN). Se falhar, recarregue-o."
},
{
"cause": "O serviço reinicia na máquina.",
"fix": "Reiniciar <code>proxmenux-monitor.service</code> fecha todos os PTY. Abra novos terminais quando o painel terminar de recarregar."
}
]
},
"warning": {
"title": "O terminal é uma shell root no host",
"body": "O terminal herda o utilizador da unidade systemd (<code>root</code>) e tem todos os privilégios no host Proxmox. Configure utilizador, palavra-passe e 2FA em <authLink>Acesso e autenticação</authLink> antes de permitir acesso fora da rede local. Com a autenticação desativada, qualquer pessoa que alcance a porta 8008 pode abrir uma shell root sem confirmações adicionais ou credenciais SSH. Para acesso externo, utilize <gatewayLink>Secure Gateway</gatewayLink> (Tailscale) ou um proxy inverso HTTPS em vez de publicar a porta na Internet."
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Acesso e autenticação",
"href": "/docs/monitor/access-auth",
"tail": " — exemplos de proxy inverso com as linhas de upgrade WebSocket necessárias para o terminal."
},
{
"label": "Arquitetura",
"href": "/docs/monitor/architecture",
"tail": " — transporte WebSocket (HTTP via flask-sock e HTTPS / WSS via gevent)."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints WebSocket /ws/terminal e /ws/script/<sid>, com o resto da API."
},
{
"label": "Integração → Portal seguro",
"href": "/docs/monitor/integrations",
"tail": " — para aceder ao terminal fora da LAN sem expor a porta 8008."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tail": " — os outros separadores."
}
]
}
}
@@ -0,0 +1,245 @@
{
"meta": {
"title": "Separador App LXC: deteção, ligações e versões | ProxMenux",
"description": "Descubra e registre aplicativos LXC, crie links web e, opcionalmente, rastreie versões instaladas e disponíveis."
},
"header": {
"title": "Separador App LXC: deteção, ligações e versões",
"description": "Dê a cada aplicação LXC uma identidade persistente, acesso web e dados opcionais de versão sem ligar o registo às atualizações."
},
"intro": {
"p1": "A aba <strong>App</strong> registra quais aplicativos pertencem a um LXC. Um registro pode conter apenas um nome e web link, ou também incluir um detector de versão instalado e uma fonte upstream.",
"p2": "O procedimento que altera o software configura-se no <link>separador Atualizações</link>. Guardar uma aplicação nunca executa um instalador nem atualizador.",
"callout": "Registro, rastreamento de versões e atualização são três capacidades independentes. Qualquer um pode ser usado sem exigir os outros dois.",
"dashboardTitle": "Desde o registo até ao lançador Apps",
"dashboard": "Cada ligação web guardada aqui aparece também como cartão no <appsLink>separador Apps</appsLink> principal. Esta página LXC continua a ser a referência para nome, logótipo, ligações e acompanhamento de versões."
},
"overview": {
"heading": "O que um registro de aplicação pode fornecer",
"lead": "Um único registro salvo pode incluir:",
"items": [
"Um nome visível e um logótipo adaptado ao tema.",
"Um ou mais links web clicáveis construídos a partir do endereço LXC, esquema e porta salva.",
"Um detector opcional para a versão atualmente instalada dentro do LXC.",
"Uma fonte opcional GitHub, HTTP JSON ou Docker Hub para a última versão disponível.",
"Notificações de novas versões e preferências de inclusão no contador de atualizações por aplicação.",
"Uma seção correspondente na aba Atualizações, mesmo quando o rastreamento de versões está desativado."
]
},
"discovery": {
"heading": "Deteção em cache e Procurar aplicações",
"lead": "As sugestões de aplicação fazem parte do cache modal per-LXC. A varredura inicial prepara-os em segundo plano para que a abertura da aba App possa mostrar resultados em cache imediatamente.",
"items": [
"Abrir a guia Aplicativo <strong>não</strong> inicia uma nova varredura de catálogo e não consulta repetidamente o LXC.",
"<strong>Procurar aplicações</strong> executa uma nova deteção nesse LXC. Utilize após instalar software enquanto o ProxMenux já está em execução.",
"A lista anterior permanece visível enquanto a varredura explícita é executada. Novas correspondências são adicionadas quando terminar.",
"Se não houver novas correspondências, o resultado aparece junto às ações e <strong>Registar aplicação</strong> continua disponível para introdução manual.",
"Salvar, remover ou restaurar um aplicativo atualiza o mesmo cache imediatamente. Iniciando ou restaurando um LXC atualiza apenas esse hóspede através de seu evento de ciclo de vida existente."
],
"callout": "Uma sugestão não é um registo. Mantém-se só de leitura até premir <strong>Registar</strong> e guardar o formulário."
},
"registration": {
"heading": "Registar uma aplicação",
"lead": "Uma sugestão detectada e um registro manual usam o mesmo editor:",
"steps": [
"Prima <strong>Registar</strong> numa sugestão ou <strong>Registar aplicação</strong> para escolher no catálogo ou introduzir um nome personalizado.",
"Reveja o nome e logotipo propostos pelo catálogo.",
"Adicione os links da web necessários. Portas de escuta detectadas são oferecidas como atalhos, mas nenhuma é salva automaticamente.",
"Deixe <strong>Acompanhar versão disponível</strong> desativado em registos só com ligações ou ative-o e reveja o detetor da versão instalada e a origem da versão disponível.",
"Com acompanhamento ativo, utilize <strong>Testar detetor</strong> e guarde o registo.",
"Prima <strong>Concluído</strong> após editar. App e Atualizações usam o mesmo registo atualizado em cache."
]
},
"catalog": {
"heading": "Registo assistido por catálogo",
"lead": "O catálogo fornece padrões, mas o registro salvo permanece editável.",
"items": [
"Os resultados da pesquisa podem preencher o nome canônico, logotipo e portas web comuns.",
"Detectores de versão conhecidos são baseados em nomes de pacotes reais, binários, arquivos, distribuições Python, etiquetas OCI ou comandos em vez de uma suposição universal <code>/root/.app</code>.",
"As sobreposições de tempo de execução verificadas têm precedência quando uma instalação usa um caminho que difere dos metadados do instalador.",
"Marcadores Proxmox VE Helper-Scripts como <code>/root/.slug</code> continuam a ser um sinal de compatibilidade para novas instalações auxiliares, não o único detector.",
"Cada valor proposto pode ser editado antes de salvar para cobrir instaladores oficiais e instalações manuais."
]
},
"docker": {
"heading": "Como Docker LXCs são representados",
"lead": "Para um LXC cuja plataforma primária é Docker, <strong>Docker</strong> é o aplicativo registrado no nível LXC.",
"items": [
"Uma carga de trabalho containerizada como Portainer, Frigate ou Vaultwarden não é sugerida como uma aplicação nativa independente LXC.",
"Os serviços Docker em execução com portas TCP publicadas são propostos como ligações web opcionais no editor Docker.",
"Cada link sugerido mostra o serviço, porta host e porta container. Apenas os links que fornecem uma interface web devem ser salvos.",
"O logotipo Docker global é usado quando um link não tem logotipo específico. Um logotipo por-link substitui-o quando um está configurado.",
"Após o registro do Docker, o Docker Engine e as atualizações de imagem são mostradas juntos em sua seção na aba Atualizações."
],
"callout": "Esta estrutura impede que uma carga de trabalho Docker pareça um software instalado diretamente no LXC preservando links rápidos para suas interfaces."
},
"webLinks": {
"heading": "Ligações Web e logotipos",
"lead": "Os links Web funcionam com ou sem rastreamento de versões.",
"items": [
"Cada link armazena um esquema, porta, descrição opcional e URL de logotipo opcional.",
"A URL exibida usa o endereço atual já detectado para o LXC; o endereço não é duplicado em cada registro de aplicativo.",
"Um link sem seu próprio logotipo cai de volta para o logotipo de nível de aplicativo.",
"Vários links podem representar uma interface de administração, API, UI secundária ou outro endpoint do mesmo aplicativo.",
"Um aplicativo salvo somente para links também aparece nas Atualizações, onde um atualizador personalizado pode ser configurado mais tarde."
]
},
"tracking": {
"heading": "Rastreamento opcional da versão",
"lead": "O acompanhamento combina um detetor da versão instalada com uma origem opcional da versão disponível. Os dois lados são verificados separadamente.",
"colMethod": "Método de versão instalada",
"colUse": "Usar",
"detectorRows": [
{
"method": "dpkg / apk",
"use": "Lê a versão de pacotes instalada a partir de metadados de pacotes Debian, Ubuntu ou Alpine."
},
{
"method": "binary",
"use": "Executa um caminho binário absoluto ou um nome de comando com argumentos de versão."
},
{
"method": "file + regex",
"use": "Lê um arquivo real e extrai a versão com um grupo de captura."
},
{
"method": "docker label / docker exec",
"use": "Lê um rótulo de versão OCI ou executa um comando de versão dentro de um recipiente Docker."
},
{
"method": "python distribution",
"use": "Usa importlib.metadata através do interpretador Python selecionado."
},
{
"method": "command",
"use": "Executa um comando avançado de estilo argv sem uma shell e extrai a versão de sua saída."
},
{
"method": "manual",
"use": "Armazena uma versão inserida manualmente; ela deve ser alterada após atualizar o aplicativo."
},
{
"method": "OCI image",
"use": "Para contentores instalados por OCI manager Apps. Lê as versões da aplicação e da imagem no registo da instalação e compara o digest instalado com o publicado pelo registo de imagens. Não requer configuração."
}
],
"sourcesHeading": "Origens da versão disponível",
"sources": [
"<strong>GitHub repositório</strong>: última versão ou tag de um repositório público <code>owner/name</code>.",
"<strong>HTTP JSON</strong>: um endpoint público mais um caminho pontilhado como o <code>data.version</code> ou o <code>releases[0].tag_name</code>.",
"<strong>Docker Hub</strong>: tags versionadas filtradas por uma expressão regular. Uma pré-visualização ao vivo mostra etiquetas de correspondência reais antes do registro ser salvo.",
"Etiquetas móveis como <code>latest</code>, <code>stable</code> ou <code>lts</code> não contêm versão. Acompanhe essas imagens por digest nas atualizações de imagens Docker."
],
"regexHeading": "Escrever a expressão de captura",
"regexLead": "A expressão regular tem de devolver a versão no <strong>primeiro grupo de captura</strong>.",
"regexRules": [
"Coincidir com o texto emitido pelo binário, ficheiro, comando ou origem da marca seleccionado; não adivinhar um caminho genérico.",
"Escape os pontos literais como <code>\\.</code> para não corresponderem a caracteres arbitrários.",
"Permita um <code>v</code> inicial apenas se a origem o puder incluir.",
"Inclua sufixos como pré-lançamento ou revisões distro apenas quando eles são significativos para a comparação.",
"Utilize <strong>Testar detetor</strong> antes de guardar e confirme que a versão instalada apresentada corresponde ao LXC."
],
"regexExampleLead": "Captura comum de versão semântica:",
"regexExample": "v?(\\d+\\.\\d+\\.\\d+)",
"regexCallout": "Uma correspondência regex bem sucedida não é prova de que o caminho do detector está correto. O caminho ou pacote também deve existir na instalação real que está sendo registrada."
},
"updater": {
"heading": "Rastreamento e atualização de versões são independentes",
"lead": "O <link>separador Atualizações</link> cria uma secção de aplicação logo que um registo é guardado.",
"items": [
"Um registro somente de links mostra que o rastreamento de versões não está configurado, mas ainda pode receber um comando de atualização personalizado.",
"Um aplicativo com rastreamento mas sem um método executável mostra uma mensagem neutra pedindo um comando personalizado.",
"Um aplicativo com um wrapper Proxmox VE Helper-Scripts verificado pode usar esse updater integrado mesmo quando o registro começou a partir de um link da web.",
"Adicionar ou editar um updater não altera o detector ou fonte upstream armazenado na aba App."
]
},
"states": {
"heading": "Os estados da versão no cartão App",
"colState": "Estado",
"colDisplay": "Visualização",
"colMeaning": "Significado",
"rows": [
{
"state": "Atualização disponível",
"display": "Versão disponível em roxo com um ícone de seta para cima",
"meaning": "As versões instaladas e a montante diferem."
},
{
"state": "Atual",
"display": "Versões instaladas e mais recentes sem o alerta roxo",
"meaning": "A última verificação não encontrou nenhuma versão mais recente a montante."
},
{
"state": "Rastreamento pendente",
"display": "Verificação ou estado pendente",
"meaning": "O registro está configurado, mas ainda não completou ambas as verificações."
},
{
"state": "Rastreamento desativado",
"display": "Apenas ligações Web; nenhum bloco de comparação de versões",
"meaning": "O registro permanece válido e ainda pode ter um updater."
},
{
"state": "Erro de verificação",
"display": "Explicação a âmbar no cartão",
"meaning": "O estado guardado anterior continua visível enquanto é comunicado o erro do detetor ou da origem da versão disponível."
}
]
},
"management": {
"heading": "Gerenciar aplicativos salvos e sugeridos",
"lead": "As ações na parte inferior da aba têm papéis distintos:",
"items": [
"<strong>Procurar aplicações</strong> atualiza a deteção apenas neste LXC.",
"<strong>Registe outra aplicação</strong> abre o catálogo e o editor manual sem voltar a analisar o LXC.",
"<strong>Editar</strong> mostra em cada cartão Remover, Verificar, notificações e Editar campos.",
"<strong>Ocultar</strong> remove uma sugestão indesejada. As deteções ocultas podem ser restauradas na vista de registo.",
"<strong>Verificar</strong> atualiza os dados de versão da aplicação guardada selecionada; não procura novas aplicações."
]
},
"troubleshooting": {
"heading": "Situações comuns",
"colProblem": "Situação",
"colResolution": "Resolução",
"rows": [
{
"problem": "O software foi instalado após o início do ProxMenux",
"resolution": "Prima Procurar aplicações. A análise explícita atualiza as sugestões em cache desse LXC."
},
{
"problem": "Nenhuma aplicação foi detectada",
"resolution": "Registre-o manualmente. Um nome e um link web são suficientes; o rastreamento pode ser adicionado mais tarde."
},
{
"problem": "O detector sugerido devolve a versão errada",
"resolution": "Abra Editar campos, escolha o pacote, binário ou caminho de ficheiro real e teste o detetor antes de guardar."
},
{
"problem": "Uma carga de trabalho Docker não é oferecida como uma aplicação LXC",
"resolution": "Registre o Docker e adicione a interface publicada da carga de trabalho como um link web do Docker. As atualizações de imagem permanecem na seção Docker."
},
{
"problem": "Um aplicativo salvo não tem botão de atualização",
"resolution": "Abra a aba Atualizações e configure seu método de atualização. O rastreamento de versões sozinho não define como uma atualização é instalada."
}
]
},
"figures": {
"catalog": {
"alt": "Catálogo de registro de aplicativos com resultados de busca, logotipos, portas e campos de detectores",
"caption": "Metadados de catálogo aceleram o registro enquanto cada valor proposto permanece editável."
},
"webLinks": {
"alt": "Cartão de aplicação LXC salvo contendo um link web clicável",
"caption": "Um registo só com ligações é válido: o acompanhamento pode ficar desativado e o atualizador pode ser adicionado separadamente."
},
"tracking": {
"alt": "Campos opcionais do detetor da versão instalada e da origem da versão disponível",
"caption": "A detecção de versão instalada e a fonte upstream são configuradas e testadas separadamente."
},
"card": {
"alt": "Cartão de aplicação salvo com versões instaladas e disponíveis, além de um link para a web",
"caption": "O cartão combina identidade, evidência de versão e acesso à web sem executar ações de atualização desta aba."
}
}
}
@@ -0,0 +1,203 @@
{
"meta": {
"title": "Atualizações LXC: sistema, aplicações e Docker | ProxMenux",
"description": "Configure e execute atualizações do sistema operativo, aplicações, Docker Engine e imagens Docker num contentor LXC."
},
"header": {
"title": "Atualizações LXC: sistema, aplicações e Docker",
"description": "Reveja cada alvo de atualização em um só lugar, execute-o de forma independente ou combine alvos selecionados em uma ação em massa controlada."
},
"intro": {
"p1": "O separador <strong>Atualizações</strong> separa a deteção de versões da instalação. O registo e o acompanhamento opcional ficam no <link>separador App</link>; os métodos executáveis gerem-se aqui.",
"p2": "Um aplicativo salvo aparece nas Atualizações mesmo quando contém apenas um link web. O rastreamento de versões é opcional e um atualizador pode ser configurado independentemente.",
"callout": "Registar uma aplicação não seleciona o atualizador. Se for detetado um atualizador Helper-Scripts correspondente, escolha e guarde <strong>Helper-Scripts</strong> ou <strong>Comando personalizado</strong>. A deteção não garante compatibilidade. A escolha pertence a cada aplicação, mesmo num LXC partilhado."
},
"overview": {
"heading": "Qual a composição da aba",
"lead": "Cada alvo disponível tem sua própria seção e ação:",
"items": [
"<strong>Pacotes do sistema</strong> para contentores Debian, Ubuntu e Alpine.",
"Uma secção por <strong>aplicação registada</strong>, incluindo registos apenas com ligações.",
"Uma seção <strong>Docker</strong> quando o Docker está registrado, com Docker Engine e imagens etiquetadas agrupadas.",
"Uma secção <strong>Atualização em bloco</strong> configurável, seguida de opções de cópia de segurança, reinício e agendamento."
]
},
"mechanisms": {
"heading": "Como um método de atualização é selecionado",
"lead": "O caminho integrado Proxmox VE Helper-Scripts segue o mecanismo oficial <helper>update-apps</helper>. Outros tipos de instalação usam o pacote correspondente, Docker ou caminho personalizado.",
"officialReference": "Referência oficial: a <helper>documentação update-apps de Proxmox VE Helper-Scripts</helper> abrange modos interativo e sem supervisão, cópias de segurança, simulações, recursos temporários de compilação, registos e códigos de saída.",
"colSource": "Origem",
"colAction": "Ação exibida",
"colNotes": "O que é executado",
"rows": [
{
"source": "Pacotes APT ou APK",
"action": "Aplicar atualizações do sistema operacional",
"notes": "Actualiza os pacotes de contentores. Aplicativos registrados instalados como pacotes dpkg ou apk são cobertos por este mesmo passe."
},
{
"source": "Proxmox VE Helper-Scripts",
"action": "Aplicar atualização",
"notes": "Após selecionar expressamente Helper-Scripts, executa o script oficial identificado pelo wrapper /usr/bin/update validado. Um marcador ou correspondência do catálogo nunca permite a execução por si só."
},
{
"source": "Comando personalizado",
"action": "Execute o atualizador",
"notes": "Executa o comando salvo dentro do LXC e substitui qualquer atualizador de aplicativo integrado para esse registro."
},
{
"source": "Docker Engine",
"action": "Atualizar Docker Engine",
"notes": "Atualiza apenas os pacotes Docker instalados e as dependências necessárias. Não altera outros pacotes do sistema nem contentores."
},
{
"source": "Imagem Docker",
"action": "Atualizar imagem",
"notes": "Transfere a imagem selecionada e recria o grupo de serviços Compose ou o contentor independente protegido."
}
],
"callout": "Um comando personalizado <strong>substitui</strong> Helper-Scripts nessa aplicação. As execuções manuais, em bloco e agendadas respeitam a escolha guardada. Mantêm-se os comandos existentes e as seleções antigas expressamente guardadas em planos em bloco ou agendamentos ativos; um agendamento antigo nunca inclui uma aplicação recém-registada."
},
"docker": {
"heading": "Docker Engine e imagens Docker",
"lead": "Após o Docker estar registrado na aba App, seu motor e inventário de imagens aparecem dentro da mesma seção <strong>Docker</strong>.",
"items": [
"O rastreamento de versão do Docker Engine é separado do contador do pacote OS e tem seu próprio botão de atualização.",
"As imagens locais com etiqueta são comparadas com o registo através de digests imutáveis. <strong>Verificar agora</strong> atualiza o inventário sem transferir imagens nem reiniciar contentores.",
"Os serviços Compose são atualizados a partir do projeto declarado. As imagens do mesmo grupo são tratadas juntas para evitar recriar o projeto repetidamente.",
"Um contentor independente é recriado com a configuração atual. O processo protegido conserva dados de reversão e restaura o contentor anterior se a recriação falhar.",
"Cada imagem pode ser selecionada separadamente em atualizações manuais, em massa e agendadas, exceto dependências declaradas Compose que devem seguir seu serviço pai."
],
"callout": "Os containers em funcionamento dentro de Docker não são mostrados como aplicações independentes LXC. Suas portas web publicadas podem ser salvas como links sob o registro Docker, enquanto as atualizações de imagem permanecem na seção Docker."
},
"actions": {
"heading": "Acções individuais e cores do estado",
"lead": "Cada seção permanece independentemente acionável, seja ou não uma atualização em massa está configurada.",
"items": [
"<strong>Configurar</strong> abre a seleção do atualizador quando não há método; <strong>Editar</strong> altera uma escolha guardada. Os botões informativos explicam as opções, ligam a documentação oficial e mostram um exemplo de script personalizado. Selecionar não executa a opção.",
"Com acompanhamento de versão desativado mas atualizador disponível, aparece a ação neutra <strong>Executar atualizador</strong>. O ProxMenux não afirma que há uma atualização pendente.",
"Sem um atualizador Helper-Scripts disponível, configure um comando personalizado. Desativar um método não seleciona silenciosamente outro; as seleções de plano/agenda existentes permanecem salvas e alvos indisponível são reportados.",
"<strong>Atualizar imagem</strong> aplica-se apenas à unidade Docker selecionada; não atualiza Docker Engine nem imagens não relacionadas."
],
"statusColState": "Estado conhecido",
"statusColAppearance": "Aparência",
"statusColMeaning": "Significado",
"statusRows": [
{
"state": "Actualização verificada disponível",
"appearance": "Texto roxo, ícone de seta ascendente e ação roxa",
"meaning": "As versões instaladas e disponíveis ou os digests das imagens diferem."
},
{
"state": "Atualizado e verificado",
"appearance": "Marca de verificação verde e ação Atualizado a verde",
"meaning": "A última verificação completa confirma que o alvo está atual."
},
{
"state": "Versão desconhecida",
"appearance": "Texto neutro e ação neutra",
"meaning": "O atualizador pode ser executado, mas faltam dados de versão para determinar se o alvo está atualizado ou tem atualização pendente."
}
]
},
"custom": {
"heading": "Comandos personalizados de actualização",
"lead": "Use um comando personalizado quando a instalação não tiver nenhum atualizador integrado verificado, ou quando seu procedimento normal deve ser substituído.",
"items": [
"Abra <strong>Configurar</strong> se o campo estiver vazio ou <strong>Editar</strong> se já houver um método.",
"Para um aplicativo integrado ou Docker Engine, o editor mostra o comando atualmente utilizado. Salvar conteúdo diferente transforma-o na sobreposição explícita para esse registro.",
"Teste o procedimento completo no terminal LXC primeiro. Deve ser não-interativo, usar o diretório de trabalho correto e retornar um status de saída não-zero na falha.",
"Não inclua <code>pct exec</code>; o ProxMenux já entra no contentor e executa como root."
],
"exampleLead": "Exemplo de procedimento completo dentro do contentor:",
"example": "cd /opt/my-app && ./update.sh",
"callout": "Um comando de versão como o <code>myapp --version</code> só lê uma versão; não é um updater. Comandos executados com privilégios administrativos, então o conteúdo armazenado deve ser revisado com o mesmo cuidado que um comando root shell."
},
"bulk": {
"heading": "Atualização em bloco",
"lead": "A atualização em massa cria uma ação reutilizável para um conjunto exato de alvos no LXC. É colocado após a aplicação individual e as secções Docker e antes de <strong>Opções</strong>.",
"items": [
"Os pacotes do sistema são obrigatórios. Selecione pelo menos uma aplicação, Docker Engine ou uma unidade de imagem Docker adicional.",
"Aplicações e unidades Docker são selecionadas individualmente. O serviço principal Compose mostra as dependências atualizadas com ele.",
"Alvos indisponíveis ou removidos são marcados como obsoletos e têm de ser retirados antes de guardar.",
"<strong>Aplicar atualizações</strong> é roxo se algum alvo tiver uma atualização verificada, verde se todos estiverem verificados como atualizados e neutro se o resultado for desconhecido.",
"A remoção da configuração em massa não remove métodos de atualização individuais ou configurações de atualização agendada."
],
"callout": "A atualização em massa não substitui os botões individuais. É um atalho opcional para uma seleção que deve ser executada em conjunto."
},
"options": {
"heading": "Opções de backup e reinicialização",
"lead": "As mesmas opções aplicam-se às execuções manuais, em bloco e agendadas:",
"items": [
"<strong>Snapshot antes de aplicar</strong> cria um backup vzdump no armazenamento selecionado. Se o backup necessário falhar, a atualização não será iniciada.",
"<strong>Reiniciar após a aplicação</strong> reinicia o LXC apenas após uma execução bem sucedida.",
"As seleções são armazenadas por LXC e permanecem independentes da lista alvo."
]
},
"scheduled": {
"heading": "Atualizações agendadas",
"lead": "Atualizações agendadas usam os mesmos alvos executáveis e opções de segurança como ações manuais.",
"items": [
"Escolha uma frequência predefinida ou expressão cron e depois os alvos exatos: pacotes do sistema, aplicações, Docker Engine, unidades Docker independentes ou grupos de serviços Compose.",
"O atraso após o lançamento aplica-se apenas a aplicações selecionadas com acompanhamento de versão. Sem acompanhamento, o atualizador é executado em cada agendamento.",
"O estado da última execução distingue sucesso, conclusão parcial, falha, suspensão de segurança e ausência de atualizações pendentes. Após a primeira execução agendada, <strong>Atualizações → Atualizações agendadas → Ver registo</strong> abre toda a saída do atualizador e dos scripts secundários invocados.",
"Após cada execução, o ProxMenux verifica o marcador padrão Debian reboot-required. Quando é necessário reiniciar, a aba Atualizações e a notificação de conclusão dizem isso; o aviso é apagado quando o LXC inicia ou reinicia.",
"No host Proxmox, os logs de execução programados são armazenados em <code>/usr/local/share/proxmenux/logs/lxc-updates/</code> usando o nome <code>&lt;VMID&gt;-scheduled-&lt;run-id&gt;.log</code>. Os últimos dez logs são mantidos por LXC e arquivos mais antigos são removidos automaticamente.",
"Este histórico retido se aplica às atualizações agendadas. Uma atualização manual exibe sua saída ao vivo na janela de execução do Monitor e não cria um log de execução agendado nesse diretório.",
"Os agendamentos externos no host detetados a partir de Proxmox VE Helper-Scripts aparecem separadamente para mostrar automações sobrepostas."
],
"callout": "Execute cada método manualmente antes de ativar um agendamento. Os comandos agendados não podem responder a perguntas interativas."
},
"completion": {
"heading": "O que acontece depois de uma atualização",
"lead": "A atualização não é considerada terminada quando o comando terminal simplesmente termina.",
"items": [
"A mesma execução registra seu resultado final e atualiza o estado do pacote OS, versões de aplicativos registrados e inventário Docker, conforme aplicável.",
"As execuções agendadas conservam a saída do terminal e indicam se ainda é preciso reiniciar para terminar de aplicar as alterações aos pacotes.",
"O cache LXC é substituído pelo estado de pós-atualização verificado, para que os crachás e botões não mantenham o resultado anterior.",
"Ao iniciar um LXC parado ou restaurado, o evento de ciclo de vida volta a atualizar os dados. O inventário Docker espera que o daemon esteja pronto sem guardar um resultado inicial vazio como definitivo.",
"As notificações habilitadas são emitidas a partir da execução finalizada, incluindo falhas parciais e resultados agrupados de imagem Docker."
]
},
"troubleshooting": {
"heading": "Situações comuns",
"colProblem": "Situação",
"colResolution": "Resolução",
"rows": [
{
"problem": "Nenhum método de atualização foi identificado",
"resolution": "Abra Configurar, adicione o procedimento oficial não-interativo e teste-o manualmente antes de agendar."
},
{
"problem": "Uma identidade Proxmox VE Helper-Scripts é mostrada mas nenhuma ação existe",
"resolution": "O LXC tem dados de identificação antigos, mas nenhum wrapper /usr/bin/update verificado. Adicione uma opção personalizada só depois de confirmar o procedimento correto."
},
{
"problem": "As imagens Docker estão temporariamente vazias após a inicialização ou restauração",
"resolution": "Aguarde que o Docker fique pronto ou pressione Verificar agora. O inventário repete a inicialização e não trata um resultado vazio transitório como final."
},
{
"problem": "Um alvo em massa salvo não está mais disponível",
"resolution": "Edite a configuração em massa, remova o alvo obsoleto e selecione sua substituição atual se existir."
},
{
"problem": "Um comando personalizado falhou",
"resolution": "Execute-o no terminal LXC e reveja caminho, dependências, parâmetros não interativos e código de saída."
},
{
"problem": "Uma atualização agendada diz que é necessário reiniciar",
"resolution": "Abra Ver registo para rever a execução concluída e reinicie esse LXC. O ProxMenux limpa o aviso quando o evento de ciclo de vida deteta o novo arranque."
}
]
},
"figures": {
"osPending": {
"alt": "Seção de pacotes do sistema operacional com contagem de atualizações pendentes e de segurança",
"caption": "A seção sistema operacional mantém atualizações de pacotes independentes de aplicativos e ações Docker."
},
"options": {
"alt": "Opções de atualização LXC com backup pré-atualização e reinicialização pós-atualização",
"caption": "As preferências de backup e reinicialização se aplicam às execuções manuais, em massa e agendadas."
}
}
}
@@ -0,0 +1,244 @@
{
"meta": {
"title": "ProxMenux Monitor — Painel: VM e LXC | Documentação ProxMenux",
"description": "Inventário dos sistemas convidados com CPU, memória e disco em direto. Os detalhes mostram configuração, recursos, cópias de segurança, resultados recentes do registo Proxmox, notas e Iniciar / Desligar / Reiniciar / Forçar paragem."
},
"header": {
"title": "Painel: VM e LXC",
"description": "Inventário completo dos sistemas convidados: quatro métricas no topo, lista ordenável de VM e LXC e detalhes com configuração, recursos, cópias de segurança, registos e controlos Iniciar / Desligar / Reiniciar / Forçar paragem.",
"section": "ProxMenux Monitor · Painel"
},
"intro": {
"title": "Controlos dos sistemas convidados",
"body": "Este separador controla o ciclo de vida dos sistemas convidados. As ações passam por <code>POST /api/vms/&lt;vmid&gt;/control</code> com confirmação explícita e atualizam a linha do sistema. O desligamento forçado exige o botão específico Forçar paragem."
},
"topRow": {
"heading": "Linha superior: quatro cartas estatísticas",
"intro": "Quatro cartões resumem o estado dos sistemas convidados: totais, uso CPU, memória atribuída face à capacidade do host e espaço de disco atribuído.",
"imageAlt": "Página VMs & LXCs — linha superior de quatro placas estatísticas: Total de VMs & LXCs, Total de CPU, Memória Total, Disco Total",
"imageCaption": "Linha superior: totais e estados Em execução / Parados, uso CPU, memória utilizada / atribuída a sistemas ativos / atribuída total com indicador Dentro dos limites e espaço de disco atribuído.",
"headerCard": "Cartão",
"headerWhat": "O que mostra",
"totalLabel": "Total de VMs e LXCs",
"totalWhat": "Contagem total com dois emblemas — <em>X Running</em> (verde) e <em>Y parado</em> (vermelho, apenas quando > 0). O número que vês quando algo não aparece depois de uma reinicialização.",
"cpuLabel": "CPU total",
"cpuWhat": "Utilização CPU total em direto dos sistemas convidados, como percentagem da CPU física do host, com o texto <em>“Uso CPU atribuído”</em>.",
"memoryLabel": "Memória total",
"memoryIntro": "Três leituras empilhadas verticalmente:",
"memoryItems": [
"<strong>Utilizada atualmente</strong> — valor principal, como <em>15.4 GB</em>, e <em>X.X % de Y GB</em> face à RAM do host. A barra azul indica a percentagem.",
"<strong>Atribuída aos ativos</strong> + <strong>Atribuída total</strong> — soma de <code>maxmem</code> dos sistemas <em>em execução</em> e de <em>todos</em>, incluindo os parados. A primeira importa agora, a segunda ao iniciá-los todos.",
"<strong>Dentro dos limites</strong>, a verde, muda para <em>Sobre-alocada</em> se o total ultrapassar a RAM do host. Uma sobre-alocação controlada pode funcionar com KSM; o indicador avisa quando a margem diminui."
],
"diskLabel": "Disco total",
"diskWhat": "Soma do espaço em disco alocado em todos os hóspedes, na unidade apropriada (GB / TB), com a linha de rodapé <em>\"Espaço em disco alocado\"</em>."
},
"inventory": {
"heading": "Lista de máquinas virtuais e contentores",
"intro": "Uma fila por convidado. A lista é de origem única a partir de <code>/api/vms</code>, que consolida <code>qm list</code> + <code>pct list</code> + <code>pvesh /cluster/resources</code> no host.",
"imageAlt": "Lista de máquinas virtuais e contentores — uma linha por sistema, com estado, tipo, nome, ID e percentagens CPU/memória/disco",
"imageCaption": "O layout otimizado para dispositivos móveis do inventário — os mesmos dados que a área de trabalho mostra, recolocado em uma única coluna com as porcentagens e indicadores de status mantidos compactos.",
"rowsIntro": "Cada linha mostra:",
"rows": [
"<strong>Ícone de estado</strong> — triângulo verde para Em execução ou quadrado vermelho para Parado. O restante da linha fica atenuado nos sistemas parados.",
"<strong>Tipo</strong> — <em>LXC</em> a ciano para contentores, <em>VM</em> a roxo para máquinas virtuais.",
"<strong>Nome</strong> — nome do host ou nome apresentado do sistema convidado.",
"<strong>VMID</strong> — o ID numérico Proxmox abaixo do nome.",
"<strong>Metricas em linha</strong> — três percentagens com o seu ícone (CPU %, Memória %, Disco %). Cada ícone fica laranja quando a métrica cruza um limiar de atenção (por exemplo, memória acima de 90 %), então uma varredura rápida lhe diz qual hóspede está sob pressão sem abri-lo."
],
"clickHint": "Clique numa linha para abrir os detalhes, esteja o sistema em execução ou parado.",
"mobileTitle": "Lista concebida para dispositivos móveis",
"mobileBody": "Em telemóveis e janelas estreitas, tipo, nome, ID e três percentagens ficam empilhados numa coluna, como na imagem. Em ecrãs largos distribuem-se na horizontal. Toda a linha permite abrir os detalhes."
},
"drillIn": {
"heading": "Janela de detalhes do sistema convidado",
"intro": "A janela mostra nome, VMID, tipo, estado e tempo de atividade. Os separadores adaptam-se ao sistema: <strong>Estado</strong>, <strong>App</strong> e <strong>Atualizações</strong> para aplicações LXC, <strong>Montagens</strong> quando existem, <strong>Registos</strong> para contentores OCI manager Apps, <strong>Cópias de segurança</strong> e <strong>Firewall</strong>. A barra fixa mantém os controlos de ciclo de vida e o terminal LXC disponíveis.",
"statusTitle": "Página 1 — Estado",
"statusImageAlt": "Detalhes do sistema — Estado com CPU, memória e disco em direto, E/S de disco e rede, logótipo do sistema e Recursos / Endereços IP",
"statusImageCaption": "Estado: CPU, memória e disco com barras no topo; totais de E/S (disco lido/escrito, rede recebida/enviada); depois Recursos com Notas, + Info e lista de endereços IP.",
"statusIntro": "O separador inicial permite verificar o estado do sistema. Três blocos:",
"liveTitle": "1. Linha de métricas ao vivo",
"liveItems": [
"<strong>Utilização CPU (X núcleos)</strong> — percentagem com barra. O número de núcleos configurados no cabeçalho esclarece o que significa 100 %.",
"<strong>Memória</strong> — <em>utilizada / máxima</em> em GB com barra.",
"<strong>Disco</strong> — <em>utilizado / máximo</em> da imagem de disco principal, no mesmo formato."
],
"ioTitle": "2. Total I/O + Logótipo do sistema operacional",
"ioItems": [
"<strong>E/S de disco</strong> — totais de leitura (↓) e escrita (↑) desde o arranque. Ajuda a detetar aumentos súbitos face à atividade habitual do sistema convidado.",
"<strong>E/S de rede</strong> — receção (↓) e envio (↑) acumulados, com o mesmo princípio.",
"<strong>Logótipo do sistema</strong> — ícone Debian / Ubuntu / Alpine / Windows / etc. conforme o sistema detetado. Ajuda a identificar as janelas abertas."
],
"resourcesTitle": "3. Bloco de recursos",
"resourcesIntro": "Configuração segundo o Proxmox: núcleos CPU, memória (<code>maxmem</code> configurado) e swap. Duas secções expansíveis no cabeçalho:",
"resourcesItems": [
"<strong>Notas</strong> — descrição editável do sistema convidado. Guardar chama <code>PUT /api/vms/&lt;vmid&gt;/config</code> e escreve em <code>/etc/pve/qemu-server/&lt;vmid&gt;.conf</code> ou <code>/etc/pve/lxc/&lt;vmid&gt;.conf</code>.",
"<strong>+ Info</strong> — campos extras que são muito verbosos para a visualização padrão: modo bios, tipo de máquina, estado do agente, entradas hostpci passthrough, pontos de montagem (CT), ordem de inicialização."
],
"ipsTitle": "4. Endereços IP",
"ipsBody": "Cada endereço IPv4 ou IPv6 aparece numa etiqueta verde. A lista fica vazia com o sistema parado ou numa VM sem agente QEMU; os LXC comunicam os endereços diretamente.",
"appTitle": "Página 2 — Aplicação (LXC apenas)",
"appIntro": "Regista aplicações LXC, guarda ligações web e compara versões opcionalmente. As sugestões vêm da cache inicial; <strong>Procurar aplicações</strong> repete a deteção neste LXC após novas instalações.",
"appLinkLead": "Veja o",
"appLinkLabel": "página de aplicação dedicada",
"appLinkTail": "para descoberta em cache, registro assistido por catálogo, links web Docker e detectores de versões.",
"updatesTitle": "Página 3 — Actualizações (LXC apenas)",
"updatesIntro": "Mantém separados <strong>pacotes do sistema</strong>, aplicações, <strong>Docker Engine</strong> e imagens Docker. Cada alvo pode ser executado sozinho ou selecionado para uma ação em bloco ou agendada.",
"updatesLinkLead": "Veja o",
"updatesLinkLabel": "página de atualizações dedicadas",
"updatesLinkTail": "para atualizadores integrados e personalizados, recriação Docker, seleção em bloco, opções de segurança e agendamento.",
"mountsTitle": "Tab 4 — Montagens (LXC apenas, quando presente)",
"mountsImageAlt": "Detalhes LXC, Montagens: volumes PVE, bind mounts do host ou armazenamento PVE e NFS/CIFS montados no CT. Cada cartão mostra tipo, capacidade, bytes utilizados/totais, opções e estado: verde normal, âmbar só leitura/divergente, vermelho inacessível.",
"mountsImageCaption": "Montagens só aparece em LXC com pelo menos um ponto de montagem ou montagem remota adicionada. Sem montagens, o separador está ausente.",
"mountsIntro": "O Proxmox mostra montagens configuradas como <code>mpX</code>, mas não as adicionadas depois no CT com <code>mount.cifs</code>, NFS via <code>autofs</code>, etc. Este separador reúne <strong>as duas vistas</strong>: montagens configuradas <strong>e</strong> detetadas no contentor, com estado e capacidade quando o servidor a consegue obter.",
"mountTypesTitle": "Tipos de montagem detectados",
"mountTypesItems": [
"<strong>Volume PVE</strong> — armazenamento gerido pelo Proxmox, como subvolume ZFS, diretório ou Ceph RBD. A capacidade vem das estatísticas PVE e coincide com o Proxmox.",
"<strong>Bind de armazenamento PVE</strong> — entrada <code>mpX</code> que aponta para um caminho de armazenamento conhecido pelo PVE.",
"<strong>Bind do host</strong> — entrada <code>mpX</code> com um caminho arbitrário do host (<code>/mnt/something</code>). A capacidade vem de <code>df</code> desse caminho.",
"<strong>Ad-hoc dentro de CT</strong> — montagem que <em>somente</em> existe no namespace de montagem do contêiner (por exemplo, um compartilhamento NFS que o CT monta sozinho). A capacidade é lida por meio de <code>pct exec &lt;vmid&gt; df</code>, que é a única maneira de vê-la - <code>/proc/&lt;pid&gt;/root</code> do host não expõe as estatísticas reais da montagem remota."
],
"mountStateTitle": "Ponto de estado e avisos por cartão",
"mountStateItems": [
"<green/> <strong>Verde</strong> — montagem normal e acessível.",
"<amber/> <strong>Âmbar</strong> — configurado mas não montado, só leitura ou <em>bind zombie</em>. A origem desapareceu do host mas o CT ainda a vê montada, por exemplo após desligar um disco USB ou executar <code>umount</code> no host.",
"<red/> <strong>Vermelho</strong> — inacessível: a verificação não alcança a montagem, por exemplo uma partilha NFS com servidor indisponível."
],
"mountsCalloutTitle": "Informação adicional face ao Proxmox",
"mountsCalloutBody": "Vista dos caminhos lidos e escritos pelo contentor e respetiva capacidade. Partilhas NFS/CIFS montadas no CT, invisíveis no Proxmox, têm aqui a mesma apresentação e controlo. Montagens inacessíveis e binds zombie são assinalados antes de causarem problemas numa cópia de segurança.",
"logsTitle": "Tab 5 — Registos (apenas contentores OCI)",
"logsBody": "Só para contentores OCI manager Apps. Mostra a consola do processo principal da imagem em <code>/var/log/proxmenux/oci/VMID.console.log</code>: últimas 100, 500 ou 1000 linhas, acompanhamento em direto enquanto ativo, filtro e transferência. Relê o ficheiro ao abrir, mesmo com o contentor parado. Detalhes: <ociLink>Contentores OCI no ProxMenux Monitor</ociLink>.",
"backupsTitle": "Página 6 — Cópias de segurança",
"backupsImageAlt": "Detalhes do sistema — Cópias de segurança com lista de cópias disponíveis, destinos, tamanhos e botão Criar cópia",
"backupsImageCaption": "Todas as cópias do sistema nos armazenamentos Proxmox configurados, da mais recente à mais antiga. O cabeçalho mostra a contagem.",
"backupsIntro": "Lista as cópias do sistema nos armazenamentos Proxmox, da mais recente à mais antiga. O contador no título permite ver se existem cópias. Cada linha mostra:",
"backupsItems": [
"<strong>Data e hora</strong> — momento da execução.",
"<strong>Destino</strong> — armazenamento (PBS-Cloud, PBS-Local, NFS-Backup, …), colorido conforme o estado.",
"<strong>Tamanho</strong> — tamanho final em disco da cópia."
],
"backupsOutro": "<strong>+ Criar cópia de segurança</strong> inicia uma cópia no armazenamento marcado “Backup target” no Proxmox. O restauro faz-se na interface web Proxmox; o Monitor mostra as cópias recentes do sistema e permite criar novas.",
"firewallTitle": "Página 7 — Firewall",
"firewallIntro": "Lê o registo do firewall Proxmox de cada sistema diretamente do host, sem serviço adicional nem consultas periódicas. O separador está sempre presente; o conteúdo depende da ativação do firewall e de uma regra registar pacotes.",
"firewallItems": [
"<strong>Firewall desativado</strong> — um aviso a laranja indica onde o ativar no Proxmox (<em>&lt;Container|VM&gt; → Firewall → Options</em>) e recorda que pelo menos uma regra precisa de <code>log: info</code> ou nível superior para os pacotes aparecerem.",
"<strong>Firewall ativo, sem eventos</strong> — a vista vazia lembra o requisito de registo, útil logo após a ativação.",
"<strong>Eventos presentes</strong> — painel monoespaçado com deslocamento e entradas originais por ação: <green>ACCEPT</green> verde, <orange>REJECT</orange> laranja, <red>DROP</red> vermelho. O contador no cabeçalho mostra as entradas carregadas."
],
"firewallRefresh": "<em>Atualizar</em> carrega as entradas recentes a pedido. Sem atualização automática, a lista mostra o momento da abertura ou do último clique. A origem é <code>/var/log/pve-firewall.log</code>, filtrada por VMID através de <code>GET /api/vms/&lt;vmid&gt;/firewall/log</code>.",
"firewallCalloutTitle": "Porquê tê-lo aqui quando a UI Proxmox já o mostra?",
"firewallCalloutBody": "Evita mudar para o Proxmox e mantém a vista do mesmo VMID: inicie o sistema, verifique montagens e eventos do firewall e volte a pará-lo no painel. As regras editam-se no Proxmox; o Monitor não as altera.",
"actionBarTitle": "Barra de ação inferior",
"actionBarIntro": "Sempre visível no pé do modal, independentemente da aba ativa:",
"consoleItem": "<strong>Consola</strong>, apenas em LXC ativos, abre <code>pct enter &lt;vmid&gt;</code> no contentor. Usa xterm.js e WebSocket como o <link>separador Terminal</link>, com a <strong>barra móvel</strong>: ESC, TAB, setas, Enter e Ctrl+C / Ctrl+X / Ctrl+R. Funciona em telemóvel ou tablet. Para VM use a consola Proxmox noVNC.",
"lifecycleIntro": "Quatro botões em grelha 2×2 enviam <code>POST /api/vms/&lt;vmid&gt;/control</code> com a <code>action</code> correspondente. A disponibilidade depende do estado do sistema.",
"headerButton": "Botão",
"headerEnabled": "Activado quando",
"headerAction": "Acção enviada para a máquina",
"lifecycleRows": [
{
"button": "Iniciar",
"color": "green",
"enabled": "O hóspede está parado.",
"action": "qm start / pct start"
},
{
"button": "Desligar",
"color": "blue",
"enabled": "O sistema convidado está em execução.",
"action": "qm shutdown / pct shutdown — desligamento ordenado, ACPI"
},
{
"button": "Reiniciar",
"color": "blue",
"enabled": "O sistema convidado está em execução.",
"action": "qm reboot / pct reboot — reinício ordenado"
},
{
"button": "Forçar parada",
"color": "red",
"enabled": "O sistema convidado está em execução.",
"action": "qm stop / pct stop — desligamento forçado"
}
],
"forceStopTitle": "Forçar paragem interrompe imediatamente a execução",
"forceStopBody": "<strong>Forçar paragem</strong> ignora o desligamento, como cortar a alimentação. Use <strong>Desligar</strong> enquanto o sistema responder. Force apenas se o desligamento bloquear e aceitar o risco de perda de dados. O botão vermelho e a etiqueta ajudam a evitar cliques acidentais."
},
"dataCollected": {
"heading": "Como os dados são coletados",
"headerSection": "Secção da página",
"headerEndpoint": "Endpoint",
"headerSource": "Origem",
"rows": [
{
"section": "Lista de inventários",
"endpoint": "/api/vms",
"source": "<code>pvesh get /cluster/resources --type vm</code> para VMs e CTs."
},
{
"section": "Painel de detalhes (configuração, rede, discos)",
"endpoint": "/api/vms/<vmid>",
"source": "<code>qm config &lt;id&gt;</code> para VMs / <code>pct config &lt;id&gt;</code> para CTs."
},
{
"section": "Gráfico de métricas do sistema convidado",
"endpoint": "/api/vms/<vmid>/metrics",
"source": "Dados PVE RRD (<code>pvesh get /nodes/&lt;node&gt;/qemu/&lt;id&gt;/rrddata</code>) condensados a uma forma amigável a gráficos."
},
{
"section": "Resultados recentes do registo Proxmox",
"endpoint": "/api/vms/<vmid>/logs",
"source": "<code>pvesh get /nodes/&lt;node&gt;/&lt;qemu|lxc&gt;/&lt;vmid&gt;/log --start 0 --limit 1000</code>. Uma falha devolve uma lista vazia; não fornece todos os registos internos do sistema convidado."
},
{
"section": "Backups disponíveis para hóspedes",
"endpoint": "/api/vms/<vmid>/backups",
"source": "<code>pvesm list &lt;storage&gt;</code> filtrado por VMID."
},
{
"section": "Registo do firewall do sistema convidado (separador Firewall)",
"endpoint": "/api/vms/<vmid>/firewall/log",
"source": "<code>/var/log/pve-firewall.log</code> filtrado por VMID."
},
{
"section": "Botões de energia (Iniciar / Parar / Reiniciar / Desligar)",
"endpoint": "/api/vms/<vmid>/control",
"source": "Equivalências <code>qm start|stop|reboot|shutdown</code> ou <code>pct</code>."
}
],
"codeComment1": "# Comparar os dados do painel com PVE",
"codeComment2": "# Inspecionar a configuração do sistema como aparece na janela",
"codeComment3": "# VM",
"codeComment4": "# CT"
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Monitor de Saúde",
"href": "/docs/monitor/health-monitor",
"tailRich": " — a categoria VMs & Containers (boot falhado, tempo limite QMP, falhas de desligamento CT)."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tailRich": " — o que os acontecimentos <code>vm_*</code>, <code>ct_*</code>, <code>migration_*</code> e <code>backup_*</code> provocam a jusante."
},
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tailRich": " — endpoints de VM e cópias de segurança."
},
{
"label": "Índice do painel",
"href": "/docs/monitor/dashboard",
"tailRich": " — os outros separadores."
},
{
"label": "ProxMenux → Criar VM",
"href": "/docs/create-vm",
"tailRich": " — criação de sistemas: modelos NAS (Synology e outros), VM Linux/Windows e valores adaptados ao Proxmox."
}
]
}
}