{
"meta": {
"title": "Integrações Proxmox — Homepage, Home Assistant, Grafana, Prometheus | ProxMenux Monitor",
"description": "Exemplos para copiar e ligar o ProxMenux Monitor ao Homepage, Home Assistant, Grafana via Prometheus e Uptime Kuma, com a configuração necessária, endpoints API e cabeçalho de autenticação.",
"ogTitle": "Integrações Proxmox — Homepage, Home Assistant, Grafana, Prometheus",
"ogDescription": "Guia para ligar o ProxMenux Monitor ao Homepage, Home Assistant, Grafana, Prometheus e Uptime Kuma.",
"twitterTitle": "Integrações Proxmox | ProxMenux Monitor",
"twitterDescription": "Receitas para Homepage, Home Assistant, Grafana, Prometheus e Uptime Kuma."
},
"header": {
"title": "Integrações",
"description": "Exemplos para copiar para as ferramentas do seu homelab: Homepage, Home Assistant, Grafana via Prometheus e Uptime Kuma. Cada exemplo mostra a configuração esperada, o endpoint do Monitor utilizado e o cabeçalho de autenticação necessário.",
"section": "Monitor do ProxMenux"
},
"intro": {
"title": "O que você pode construir a partir desta página",
"body": "Copie cada exemplo para a ferramenta escolhida. Os endpoints estão na Referência da API; esta página explica como usá-los no Homepage, Home Assistant e Grafana. As imagens mostram o resultado das configurações."
},
"auth": {
"heading": "Autenticação: a única coisa que cada receita precisa",
"intro": "A maioria dos endpoints usados por essas integrações são autenticados. Tem duas maneiras de satisfazer esse requisito.",
"optAtitle": "Opção A — API token (recomendado para integrações)",
"optAbody1": "Abra Definições → Segurança → Tokens API. Clique em Gerar token, dê-lhe um nome como homepage, home-assistant ou prometheus e copie-o: é apresentado uma única vez. Expira ao fim de um ano por predefinição e pode ser revogado individualmente. Use-o em clientes externos ao navegador.",
"optAbody2": "A partir desse ponto cada pedido é apenas:",
"optBtitle": "Opção B – fluxo de login (nome de usuário + senha)",
"optBbody": "Útil para scripts que autenticam como um usuário humano. O token retornado é de curta duração; a maioria das integrações deve preferir a Opção A.",
"outro": "O campo TOTP só é necessário com autenticação de dois fatores ativa. A rotação e revogação dos tokens, a política de palavras-passe e o registo de auditoria estão em Acesso e autenticação.",
"httpsTitle": "Usando HTTPS em vez de HTTP",
"httpsIntro": "Cada receita abaixo usa http:// nas URLs para manter os exemplos curtos. Se você ativou TLS no Monitor (Configurações → Segurança → SSL/HTTPS), troque http:// para https:// em cada URL — essa é a única mudança. Duas notas específicas para certos instrumentos:",
"httpsItems": [
"Certificados autoassinados. A integração Home Assistant rest: verifica TLS por predefinição. Para um certificado autoassinado do Monitor, adicione verify_ssl: false a cada bloco REST junto de scan_interval:, ou importe a CA do Monitor para os certificados de confiança. O mesmo se aplica a outras ferramentas que verificam certificados.",
"Prometheus já inclui scheme: https no exemplo abaixo. Ative ou mantenha https se TLS estiver ativo no Monitor."
]
},
"homepage": {
"heading": "Homepage",
"headingHref": "https://gethomepage.dev",
"intro": "Homepage é um painel de aplicações estático e personalizável. O ProxMenux Monitor liga-se pelo widget integrado customapi: adicione um serviço a services.yaml, reinicie o Homepage e o cartão mostra valores atualizados.",
"iconCalloutTitle": "O logótipo oficial do ProxMenux está em dashboardicons.com",
"iconCalloutBody": "Os exemplos usam icon: proxmenux.png. O Homepage procura nomes simples em dashboardicons.com, uma biblioteca de ícones para painéis autoalojados. A entrada ProxMenux está em dashboardicons.com/icons/external/proxmenux e é carregada na primeira apresentação. Funciona para milhares de ferramentas como Telegram, Discord, Grafana e Tailscale: indique icon: <name>.png no serviço.",
"imageAlt": "Painel Homepage com três cartões ProxMenux Monitor (EDGE, VOID, DREAM), com tempo de funcionamento, CPU, RAM e temperatura de cada anfitrião",
"imageCaption": "Três instâncias ProxMenux Monitor como cartões Homepage: tempo de funcionamento, CPU, RAM e temperatura lidos de /api/system em cada anfitrião a cada 10 s.",
"basicTitle": "Elemento básico — sem autenticação",
"basicIntro": "Use isso quando o ProxMenux Monitor estiver em uma rede confiável e você ainda não tiver habilitado a autenticação no lado Monitor. A entrada services.yaml mais simples possível:",
"authedTitle": "Elemento autenticado",
"authedIntro": "Gere um token API em Configurações → Segurança → API Tokens no Monitor, copie-o e cole-o no cabeçalho Authorization abaixo — substitua o token de exemplo mostrado após Bearer pelo que você acabou de copiar:",
"authedOutro": "Reinicie o Homepage para apresentar valores atualizados. Reutilize o token nos widgets que consultam a mesma instância do Monitor.",
"multiTitle": "Configuração multi-widget — sistema, armazenamento, rede",
"multiIntro": "Para mais detalhes, crie três cartões com endpoints diferentes: sistema, armazenamento e rede. Use o mesmo token para esta instância do Monitor.",
"multiCalloutTitle": "Múltiplas máquinas Proxmox",
"multiCalloutBody": "Repita o bloco por anfitrião para obter os cartões mostrados. Cada entrada usa http://<host>:8008 da sua instância. Gere e guarde um token por anfitrião: cada instalação tem a sua chave de assinatura, pelo que um token não funciona automaticamente noutra."
},
"homeAssistant": {
"heading": "Home Assistant",
"headingHref": "https://www.home-assistant.io",
"intro": "Os exemplos usam a integração rest do Home Assistant, sem componente HACS específico. Lê os endpoints da Referência da API e cria sensores e atributos para automações. A configuração fornece cerca de 25 sensores de recursos, estado, VMs/CTs, armazenamento, rede e atualizações. Adicione-a a configuration.yaml e recarregue ou reinicie o HA.",
"imageAlt": "Painel Home Assistant mostrando entidades ProxMenux Monitor — emblema de estado de saúde, CPU / RAM / medidores de temperatura, contagem de VM, uso de armazenamento e contador de erros ativos",
"imageCaption": "ProxMenux Monitor como integração Home Assistant de primeira classe — sensores construídos a partir da receita YAML abaixo.",
"step1Title": "1 · Guardar o token API",
"step1Body": "Guarde o token em secrets.yaml para o separar da configuração principal. Inclua o prefixo Bearer e o token num valor utilizável como cabeçalho. O ficheiro não é cifrado e também deve permanecer privado. A localização depende da instalação, normalmente /config/secrets.yaml em HA OS ou Container.",
"step2Title": "2 · Adicionar a configuração REST",
"step2Body": "Seis blocos REST cobrem as áreas principais. O scan_interval acompanha a frequência das alterações: recursos a cada 30 s, estado a cada 60 s, inventários a cada 5–10 min. Cole em configuration.yaml:",
"step3Title": "3 · Adicionar sensores binários e auxiliares de modelos",
"step3Body": "Dois sensores binários e dois sensores de modelo completam a integração, simplificando automações e cartões condicionais Lovelace sem repetir expressões Jinja em todo o lado.",
"step4Title": "4 · Recarregar e verificar",
"step4Body": "Verifique primeiro a sintaxe em Ferramentas de programador → YAML → Verificar configuração. Recarregue Toda a configuração YAML ou reinicie o HA. Em Definições → Dispositivos e serviços → Entidades, filtre por proxmenux. As cerca de 25 entidades deverão receber valores num intervalo de leitura.",
"replaceTitle": "Substituindo uma versão anterior desta receita?",
"replaceBody": "Após uma versão anterior, o registo pode conservar IDs obsoletos e os cartões mostrar Entidade não encontrada. Remova os blocos antigos rest: e template: de configuration.yaml e recarregue. Em Definições → Dispositivos e serviços → Entidades, filtre por proxmenux e remova as entradas antigas restauradas ou indisponíveis. Adicione o YAML atual e recarregue para registar as novas.",
"step5Title": "5 · Painel Lovelace",
"step5Body": "O YAML cria um cartão vertical-stack com logótipo, indicadores, sistema, VMs, armazenamento, rede e problemas condicionais. Abra o painel, escolha o lápis, Adicionar cartão e depois Manual no fundo, e cole:",
"viewTipTitle": "Quer como uma visão completa do painel em vez de uma única carta?",
"viewTipBody": "Abra o menu de três pontos → Editor de configuração em bruto e adicione uma vista com este cabeçalho acima da lista cards::",
"viewTipOutro": "Isso lhe dá uma guia/visão dedicada em seu painel com seu próprio ícone e título, em vez de uma carta longa em uma visão existente.",
"altViewTitle": "Alternativa — uma visão específica do painel",
"altViewIntro": "Para criar um separador num painel existente, adicione uma vista com o YAML abaixo. Uma vista é um separador do painel e não cria uma entrada na barra lateral. Passos:",
"altViewSteps": [
"Abra o painel onde deseja a nova guia.",
"Clique no lápis (painel de edição) na parte superior direita.",
"Clique na aba + no final das abas existentes para criar uma nova visão.",
"Na janela, escolha Editor de código no canto superior direito para alternar entre o editor visual e YAML.",
"Colar o YAML abaixo.",
"Guarde. A vista ProxMenux Monitor aparece como separador no painel com os seus cartões."
],
"twoEditorsTitle": "Dois editores YAML no HA — escolha o certo",
"twoEditorsIntro": "Home Assistant tem dois editores YAML que parecem semelhantes, mas esperam formatos diferentes:",
"twoEditorsItems": [
"Editor de uma vista — por + ou Editar vista → Editor de código. Espera uma vista com title:, path: e cards: no nível superior, sem traço inicial.",
"Editor em bruto do painel completo — pelo menu de três pontos. Espera toda a lista views:, com cada vista como item iniciado por -."
],
"twoEditorsOutro": "O formato errado pode criar uma Vista sem nome e cards: []. O YAML abaixo destina-se ao editor de uma vista; copie-o como está.",
"viewImageAlt": "Vista Home Assistant para o ProxMenux Monitor: cabeçalho picture-entity, indicadores glance e cartões de sistema, VMs, armazenamento e rede em várias colunas",
"viewImageCaption": "A vista ProxMenux Monitor num ecrã largo. A disposição Masonry organiza os cartões em colunas; o resultado depende do tipo de vista configurado.",
"twoColTipTitle": "Deseja um layout fixo de duas colunas em vez do layout automático?",
"twoColTipBody": "Agrupe dois cartões, como Sistema + VMs ou Armazenamento + Rede, num horizontal-stack para os apresentar lado a lado a qualquer largura:",
"twoColTipOutro": "No telemóvel, a linha continua comprimida. A disposição automática do HA sem horizontal-stack adapta-se melhor a ecrãs estreitos.",
"step6Title": "6 · Automação",
"step6Body": "Três automações para os cenários reativos mais comuns: substitua notify.mobile_app_<your_phone> pelo serviço de notificação que usa.",
"logoTitle": "Sobre o logotipo ProxMenux",
"logoBody": "O cartão picture-entity carrega o logótipo oficial de dashboardicons.com, uma biblioteca gratuita para painéis autoalojados. A entrada está em dashboardicons.com/icons/external/proxmenux. O Home Assistant obtém o SVG por HTTPS na primeira apresentação e guarda-o em cache.",
"logoBrokenTitle": "Se o cartão de logotipo mostrar uma imagem quebrada",
"logoBrokenIntro": "Algumas instalações HA (redes firewalled, bloqueadores de conteúdo, hosts sem internet pública) não podem alcançar jsdelivr.net no tempo de renderização. A correção é uma cópia local:",
"logoBrokenSteps": [
"Baixar o SVG de cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/proxmenux.svg.",
"Salve-o em /config/www/icons/proxmenux.svg em seu host HA.",
"No Lovelace YAML, substitua o URL image: por /local/icons/proxmenux.svg. Salvar e recarregar — a imagem renderiza do arquivo local, sem necessidade de internet."
],
"scanTipTitle": "Regra prática para scan_interval",
"scanTipBody": "Comece por consultar /api/system a cada 30 s. /api/health/full usa normalmente um resultado válido até seis minutos; consultar a cada 60 s não ignora essa cache. Experimente cinco minutos para /api/storage/summary e uma hora para /api/proxmenux/update-status. Adapte ao hardware e número de anfitriões."
},
"grafana": {
"heading": "Prometheus + Grafana",
"promHref": "https://prometheus.io",
"grafanaHref": "https://grafana.com",
"intro": "O ProxMenux Monitor disponibiliza GET /api/prometheus no formato de texto Prometheus 0.0.4. Com autenticação ativa exige um token Bearer. Configure o Prometheus para recolher as métricas e o Grafana para visualizar a base de séries temporais.",
"imageAlt": "Painel Grafana com métricas ProxMenux: medidor CPU, série temporal da memória, número de VMs em execução e tráfego de rede",
"imageCaption": "Um painel Grafana com os dados ProxMenux recolhidos pelo Prometheus: CPU, memória, VMs em execução e tráfego de rede. O catálogo completo está em Referência da API → Métricas Prometheus.",
"step1Title": "1 · Adicionar a tarefa de recolha ao Prometheus",
"step1Body": "Passe o token API pelo bloco nativo authorization do Prometheus, que também permite credenciais num ficheiro.",
"step1After": "Recarregue o Prometheus com kill -HUP <PID> (substitua PID pelo ID do processo), systemctl reload prometheus se suportado ou docker compose restart prometheus no contentor. Em Status → Targets, proxmenux deverá passar a UP num intervalo. A etiqueta node=\"<hostname>\" distingue os anfitriões.",
"tokenTipTitle": "Guardar o token num ficheiro separado",
"tokenTipBody": "Em produção separe o token da configuração. Com credentials_file: /etc/prometheus/secrets/proxmenux.token, o Prometheus lê-o de um ficheiro com permissões 0600.",
"step2Title": "2 · Verificar a recolha com algumas consultas",
"step2Body": "Antes do Grafana, confirme que o Prometheus tem os dados. Abra http://<prometheus-host>:9090, escolha Query e execute uma destas consultas. Deverá obter valores atuais do anfitrião Proxmox:",
"headerQuery": "Consulta",
"headerConfirms": "O que confirma",
"verifyRows": [
{
"query": "up{job=\"proxmenux\"}",
"confirms": "Devolve 1 se o Prometheus recolher corretamente os dados do Monitor, ou 0 se falhar. A verificação inicial mais rápida."
},
{
"query": "proxmox_cpu_usage",
"confirms": "Utilização atual de CPU % da máquina Proxmox. Deve mudar se você atualizar a consulta com alguns segundos de intervalo."
},
{
"query": "proxmox_vms_running",
"confirms": "Número de máquinas convidadas em execução. Compare com a interface do Proxmox."
},
{
"query": "proxmox_uptime_seconds / 86400",
"confirms": "Tempo de funcionamento em dias. Deve corresponder ao valor que você verá em uptime no shell Proxmox."
}
],
"calloutTitle": "Um 401 ao abrir diretamente o URL do endpoint pode ser normal",
"calloutBody": "Com autenticação ativa, a ligação em Status → Targets abre /api/prometheus no navegador sem o cabeçalho Bearer do Prometheus. A resposta pode conter '{'\"error\":\"Authentication required\"'}'. Verifique o verdadeiro State: UP do destino para confirmar a recolha pelo Prometheus.",
"step3Title": "3 · Adicionar o Prometheus como fonte de dados no Grafana",
"step3Body": "No Grafana, abra Connections → Data sources → Add new → Prometheus. Indique o URL, por exemplo http://prometheus.lan:9090, guarde e teste. Se o Prometheus exigir autenticação, configure-a aqui separadamente. O token do Monitor pertence à tarefa de recolha do Prometheus.",
"step4Title": "4 · Construir painéis com estas consultas PromQL",
"step4Body": "Uma seleção inicial das métricas habitualmente acompanhadas num anfitrião Proxmox:",
"headerPanel": "Ideia do painel",
"headerPromql": "Consulta do PromQL",
"panelRows": [
{
"panel": "Medidor de utilização CPU por máquina",
"promql": "proxmox_cpu_usage"
},
{
"panel": "Medidor de utilização da memória por máquina",
"promql": "proxmox_memory_usage_percent"
},
{
"panel": "Memória usada e total (séries temporais)",
"promql": "proxmox_memory_used_bytes / 1024 / 1024 / 1024"
},
{
"panel": "VMs/CTs em execução por anfitrião",
"promql": "proxmox_vms_running"
},
{
"panel": "Temperatura da CPU",
"promql": "proxmox_cpu_temperature_celsius"
},
{
"panel": "Tráfego de rede RX (bytes/s)",
"promql": "rate(proxmox_interface_bytes_received_total[5m])"
},
{
"panel": "Transferência de rede TX (bytes/s)",
"promql": "rate(proxmox_interface_bytes_sent_total[5m])"
},
{
"panel": "Média de carga (1m)",
"promql": "proxmox_load_average{period=\"1m\"}"
},
{
"panel": "Espaço em disco usado % por ponto de montagem",
"promql": "proxmox_disk_usage_percent"
},
{
"panel": "Carga da bateria UPS",
"promql": "proxmox_ups_battery_charge_percent"
},
{
"panel": "Temperatura da GPU por slot",
"promql": "proxmox_gpu_temperature_celsius"
}
],
"outro": "Adicione cada consulta como painel Grafana, com Stat para valores e Time series para tendências, e agrupe por categoria. Use node como variável do painel (Settings → Variables → New → Query → label_values(proxmox_cpu_usage, node)) para filtrar por anfitrião."
},
"uptimeKuma": {
"heading": "Uptime Kuma e outras ferramentas de verificação de estado",
"href": "https://github.com/louislam/uptime-kuma",
"intro": "Para verificar uma palavra-chave, use GET /api/system-info. Esta rota não exige token e devolve nome, tempo de funcionamento e estado como healthy, warning ou critical. É pública, ao contrário dos endpoints detalhados protegidos.",
"kumaTitle": "Uptime Kuma — Monitor de palavras-chave HTTP",
"kumaSteps": [
"Em Uptime Kuma, clique em + Adicionar Novo Monitor.",
"Tipo de monitor: HTTP(s) - Palavra-chave.",
"Nome amigável: ProxMenux Monitor — pve01.",
"URL: http://pve01.lan:8008/api/system-info.",
"Palavra-chave: healthy (o valor de health.status quando a máquina está OK).",
"Intervalo de verificação: 60 segundos são suficientes.",
"Guarde. A rota system-info não exige um cabeçalho Bearer."
],
"healthchecksTitle": "healthchecks.io / pings de tarefas cron",
"healthchecksBody": "Uma tarefa cron pode consultar /api/system-info e testar .health.status == \"healthy\". Só após sucesso deve enviar um ping ao seu URL Healthchecks.io. O serviço recebe pings das tarefas; não consulta o Monitor. Um HTTP 2xx, por si só, não prova o bom estado do anfitrião.",
"richTitle": "Quer dados de saúde mais ricos",
"richBody": "Para o estado completo — dez categorias, erros ativos e suprimidos — use GET /api/health/full. Uma resposta contém os dados da janela do painel. Com autenticação ativa exige um token Bearer."
},
"workflows": {
"heading": "n8n, Zapier e scripts personalizados",
"intro": "Workflows e scripts podem enviar notificações por POST para /api/notifications/send, por exemplo após falha CI ou tarefa demasiado longa. O envio direto ignora a fila e o intervalo entre impressões digitais dos eventos. Mantém a formatação, IA opcional e entrega por canal. Controle os duplicados na origem.",
"n8nBody": "No n8n use um nó HTTP Request com POST, o URL acima e o mesmo JSON do curl. Escolha credenciais genéricas Header Auth: nome Authorization e valor Bearer YOUR_API_TOKEN, substituindo o marcador. Ligue um agendamento, webhook ou outro nó para iniciar o pedido.",
"severityBody": "A gravidade usa INFO, WARNING ou CRITICAL em maiúsculas. O objeto data fornece o contexto do evento e os campos do modelo. Neste endpoint, a reformulação por IA recebe apenas o título e a mensagem; os campos de data não são enviados ao fornecedor. Veja Notificações → Catálogo de eventos para o significado dos eventos."
},
"pveWebhook": {
"heading": "Webhook nativo Proxmox VE (entrada)",
"intro1": "O sistema de notificações surgiu no PVE 8.1; os destinos webhook nativos exigem Proxmox VE 8.3 ou posterior. Ativar notificações nas definições tenta registar o Monitor como destino. Os avisos PVE encaminhados para lá, como relatórios de cópia ou replicação, entram no fluxo de envio. A configuração tem de estar disponível e permitir escrita.",
"intro2": "O funcionamento, o modelo enviado pelo PVE, as entradas em /etc/pve/notifications.cfg e o comportamento em cluster estão em Notificações → Integração do webhook PVE."
},
"whereNext": {
"heading": "Para onde seguir",
"items": [
{
"label": "Referência da API",
"href": "/docs/monitor/api",
"tail": " — endpoints com método, caminho e catálogo completo de métricas Prometheus."
},
{
"label": "Notificações",
"href": "/docs/monitor/notifications",
"tail": " — fontes de eventos, canais, processo de envio e integração do webhook PVE."
},
{
"label": "Assistente de IA",
"href": "/docs/monitor/ai-assistant",
"tail": " — reformulação opcional dos modelos em linguagem simples antes do envio para Telegram, Discord, e-mail ou Gotify."
},
{
"label": "Acesso e autenticação",
"href": "/docs/monitor/access-auth",
"tail": " — criação e revogação dos tokens API destes exemplos, registo de auditoria e configuração TLS."
}
]
}
}