{ "meta": { "title": "ProxMenux Monitor — Painel da Web auto-hospedado para Proxmox VE | ProxMenux", "description": "ProxMenux Monitor é um painel web auto-hospedado para Proxmox VE: métricas de host em tempo real, armazenamento e dados SMART, rede, VMs e contêineres, hardware, logs, um terminal web integrado, um Health Monitor proativo, notificações para Telegram / Discord / Email, um assistente de IA opcional, um REST API e integrações com ferramentas como Homepage e Home Assistant.", "ogTitle": "ProxMenux Monitor — Painel da Web auto-hospedado para Proxmox VE", "ogDescription": "Painel Proxmox VE em tempo real: métricas de host, armazenamento SMART, rede, VMs e contêineres, hardware, logs, terminal web, Health Monitor, notificações, assistente de IA, REST API.", "twitterTitle": "ProxMenux Monitor | ProxMenux", "twitterDescription": "Painel Proxmox VE auto-hospedado com Health Monitor, notificações, assistente de IA e REST API." }, "header": { "title": "ProxMenux Monitor", "description": "Um painel web Proxmox VE alojado no próprio host e distribuído como AppImage. Corre como serviço systemd único, escuta na porta TCP 8008 e serve API e interface no mesmo processo.", "section": "ProxMenux Monitor" }, "atGlance": { "title": "Resumo", "body": "Único AppImage no host Proxmox → Flask backend (porta 8008) coletando dados ao vivo via psutil, pvesh, smartctl, journalctl → Painel Next.js servido no mesmo processo. Autenticação opcional (senha + 2FA), assistente de IA opcional, notificações opcionais, REST API para integrações." }, "hero": { "alt": "ProxMenux Monitor painel — tela de visão geral do sistema com CPU, widgets de memória, temperatura e tempo de atividade", "caption": "Tela de destino padrão: visão geral das métricas e do estado de integridade no nível do host." }, "coverage": { "heading": "O que o painel cobre", "intro": "Oito secções principais, cada uma com os seus endpoints API:", "tableSection": "Seção", "tableWhat": "O que mostra", "sections": [ { "name": "Monitor de Saúde", "description": "Alertas ativos e dispensados em CPU, memória, armazenamento, discos, rede, serviços, logs, VMs, atualizações e segurança. Aciona o mecanismo de notificação." }, { "name": "Armazenamento", "description": "Pools de armazenamento Proxmox, discos físicos (SATA / NVMe / USB), atributos SMART, estado dos pools ZFS, desgaste e vida útil, atividade E/S." }, { "name": "Rede", "description": "Todas as interfaces (físicas, ligações, pontes, OVS), IP/MAC/estado, gráficos RX/TX em tempo real, dados históricos de RRD por interface." }, { "name": "VMs e contêineres", "description": "Inventário VM/LXC com estado, recursos e tempo de atividade. Os detalhes mostram configuração, métricas históricas, transferência de registos Proxmox e ações iniciar/parar/reiniciar/desligar. Os registos dependem do endpoint Proxmox; não é um arquivo completo do sistema convidado." }, { "name": "Hardware", "description": "CPU modelo e topologia, layout de memória, dispositivos PCIe, lista GPU com driver e monitoramento em tempo real por slot (NVIDIA / Intel iGPU)." }, { "name": "Registros e eventos", "description": "journalctl ativo com filtros de gravidade/intervalo de tempo/palavra-chave, histórico de tarefas Proxmox, log de notificação, pacotes de log para download." }, { "name": "Terminal", "description": "Shell do host e consolas VM/CT suportadas no navegador via xterm.js e WebSockets. As sessões não são auditadas por comando." }, { "name": "Segurança", "description": "Falhas de autenticação, estado das jails do Fail2Ban, bloqueios recentes e integração com a jail [proxmenux] do host." } ], "footer": "Cada seção tem uma página de documentação dedicada em Painel na barra lateral." }, "howItRuns": { "heading": "Como funciona", "intro": "O ProxMenux Monitor é distribuído como uma AppImage autónoma. Uma única unidade systemd (proxmenux-monitor.service) inicia um processo Flask que:", "bullets": [ "Ouve em TCP 8008 no host (HTTP).", "Serve o painel Next.js como ficheiros estáticos em / e a API em /api/* no mesmo processo.", "Extrai dados ativos com ferramentas de host padrão: psutil, pvesh, smartctl, journalctl, zpool, ip, nvidia-smi, etc.", "Persiste seu próprio estado em um banco de dados local SQLite (/usr/local/share/proxmenux/health_monitor.db): alertas descartados, observações de disco, configuração de notificação, configuração de IA. O estado de autenticação reside separadamente em /root/.config/proxmenux-monitor/auth.json." ], "footer": "O fluxo completo da solicitação, o layout do arquivo e a integração systemd estão descritos em Arquitetura." }, "noAgent": { "title": "Nenhum agente nos convidados", "body": "O Monitor recolhe todos os dados a partir do host. Não é necessário instalar agentes nas VM ou nos CT: os dados vêm da API do Proxmox e das informações que o kernel do host disponibiliza sobre os sistemas convidados em execução." }, "access": { "heading": "Acessando o painel", "intro": "Dois padrões de acesso são suportados e o aplicativo detecta qual deles está em uso:", "codeComment1": "# 1) Acesso direto no host", "codeComment2": "# 2) Via proxy reverso (Nginx/Caddy/Traefik)", "afterCode": "O proxy inverso deve definir X-Forwarded-For, X-Forwarded-Proto e X-Forwarded-Host corretamente e encaminhar WebSockets. Nas portas padrão o navegador usa a origem atual. O backend só confia nos IPs encaminhados com PROXMENUX_TRUST_PROXY=1 explícito; restrinja o acesso direto ao backend ao ativá-lo.", "footer": "Configuração de primeira inicialização, senha + TOTP 2FA e snippets de proxy reverso são abordados em Acesso e autenticação." }, "mobile": { "heading": "Uso móvel e instalação na tela inicial", "intro": "O painel é responsivo e vem como um Progressive Web App. O pacote public/manifest.json declara display: standalone com um nome de aplicativo, ícone e cor de tema, portanto, adicionar o URL à tela inicial produz um verdadeiro iniciador independente - sem barra de endereço do navegador, splash personalizado, tema escuro correspondente ao painel.", "phoneAlt": "ProxMenux Monitor em execução em um telefone — visualização do painel principal", "phoneCaption": "Painel principal em um telefone: o layout reflui para pequenas janelas de visualização.", "addHeading": "Adicionar à tela inicial", "iosLabel": "iOS Safari:", "iosBody": "botão compartilhar → Adicionar à tela inicial. O ícone vem de /apple-touch-icon.png enviado no AppImage.", "androidLabel": "Android Chrome/Edge:", "androidBody": "menu de três pontos → Instalar aplicativo (ou Adicionar à tela inicial em versões mais antigas).", "afterInstall": "Depois de instalado, abrir o ícone inicia o painel em modo independente com sua própria entrada no alternador de tarefas.", "onlineOnlyTitle": "Requer ligação à rede", "onlineOnlyBody": "A PWA pode ser instalada, mas não funciona offline: não inclui um service worker. O atalho comporta-se como uma aplicação nativa, mas o dispositivo tem de conseguir contactar o host através de TCP 8008, por LAN, VPN ou HTTPS com proxy inverso, para carregar o painel." }, "health": { "heading": "Monitor de integridade e notificações", "alt": "Tela do Health Monitor mostrando as categorias 10 rastreadas (CPU, memória, armazenamento, discos, rede, serviços, logs, VMs, atualizações, segurança) com status atual", "caption": "Visualização do Health Monitor — as categorias 10 monitoradas, com seu status atual. Alertas ativos e dispensados aparecem aqui quando o sistema gera algum.", "body1": "O Health Monitor corre em segundo plano e gera eventos estruturados: temperatura CPU elevada, avisos SMART, degradação dos pools ZFS, processos terminados por OOM, falhas VM/CT e incidentes de segurança. Cada evento tem categoria, gravidade (INFO / WARNING / CRITICAL) e error_key estável para agrupar duplicados sem encher o ecrã.", "feedsIntro": "Os eventos alimentam três coisas ao mesmo tempo:", "feedsHealth": "A visualização do Health Monitor no painel (listas ativas + dispensadas).", "feedsChannels": "O mecanismo de notificação — Telegram, Discord, E-mail, Gotify, Pushover e Apprise (multicanal). Cada canal é configurado de forma independente e as categorias por evento podem ser silenciadas.", "feedsAI": "O assistente de IA opcional — quando ativado, o provedor configurado (OpenAI, Anthropic, Gemini, Groq, Ollama ou OpenRouter) explica os eventos recebidos em linguagem simples e, se habilitado nas configurações de IA, propõe as próximas etapas.", "suppressionTitle": "Supressão em vez de silenciar tudo", "suppressionBody": "Cada categoria tem sua própria Duração de supressão: quando você dispensa um alerta, o mesmo alerta é silenciado para aquela janela (padrão 24 horas, configurável por categoria até permanente). Escalações reais - por ex. CPU temperatura ultrapassando o limite crítico — sempre aciona novamente, independentemente da supressão." }, "api": { "heading": "REST API e integrações", "intro": "Os endpoints REST expõem dados de monitorização JSON por HTTP/HTTPS para Homepage, Home Assistant, Uptime Kuma e scripts. Grafana pode usar o exportador de texto Prometheus separado em /api/prometheus. As chamadas podem usar curl.", "tokens": "Tokens API de longa duração (365 dias) são gerados em Configurações → API Tokens de acesso ou via POST /api/auth/generate-api-token.", "bearer": "Envie tokens com Authorization: Bearer …. /api/health também espera o cabeçalho Bearer, pelo que os testes de disponibilidade precisam de um token read_only. Em /api/auth/* existem tanto rotas públicas de configuração/início/estado como rotas protegidas de contas e tokens; nem todas são anónimas.", "catalog": "O catálogo de endpoints, rotação de tokens e segurança estão na Referência da API; exemplos para Homepage, Home Assistant, Grafana, Uptime Kuma e cURL estão em Integrações." }, "serviceControl": { "heading": "Controle de serviço", "intro": "Diariamente, o Monitor é gerenciado exatamente como qualquer outro serviço systemd. Ele também é exposto como duas entradas dentro da TUI ProxMenux em Configurações:", "codeComment": "# Controle manual", "footer": "Consulte Configurações → ProxMenux Monitor para alternar no menu e fluxo de verificação de status." }, "nextSteps": { "heading": "Para onde ir", "items": [ { "label": "Arquitetura", "description": "— back-end Flask, unidade systemd, esquema SQLite, provedores de IA, canais de notificação." }, { "label": "Acesso e autenticação", "description": "— primeira inicialização, configuração de senha, TOTP 2FA, configuração de proxy reverso, integração Fail2Ban." }, { "label": "Painel", "description": "— cada secção da interface, uma página por secção." }, { "label": "Referência da API", "description": "— cada endpoint, formato de solicitação/resposta e gerenciamento de token." }, { "label": "Integrações", "description": "— Homepage, Home Assistant, Grafana / Prometheus, Uptime Kuma e padrão cURL genérico." } ] } }