{ "meta": { "title": "ProxMenux Monitor — Dashboard Web self-hosted per Proxmox VE | ProxMenux", "description": "ProxMenux Monitor è un dashboard web self-hosted per Proxmox VE: parametri host in tempo reale, archiviazione e dati SMART, rete, VM e contenitori, hardware, log, un terminale web integrato, un monitoraggio dello stato proattivo, notifiche a Telegram / Discord / Email, un assistente AI opzionale, un REST API e integrazioni con strumenti come Homepage e Home Assistant.", "ogTitle": "ProxMenux Monitor: dashboard Web self-hosted per Proxmox VE", "ogDescription": "Dashboard Proxmox VE in tempo reale: parametri host, archiviazione SMART, rete, VM e contenitori, hardware, log, terminale web, Health Monitor, notifiche, assistente AI, REST API.", "twitterTitle": "ProxMenux Monitor | ProxMenux", "twitterDescription": "Dashboard Proxmox VE self-hosted con Health Monitor, notifiche, assistente AI e REST API." }, "header": { "title": "ProxMenux Monitor", "description": "Una dashboard web per Proxmox VE sul proprio host, distribuita come AppImage. Funziona come singolo servizio systemd, ascolta sulla porta TCP 8008 e serve API e interfaccia dallo stesso processo.", "section": "ProxMenux Monitor" }, "atGlance": { "title": "In sintesi", "body": "Singolo AppImage sull'host Proxmox → Flask backend (porta 8008) che raccoglie dati in tempo reale tramite psutil, pvesh, smartctl, journalctl → Dashboard Next.js servito dallo stesso processo. Autenticazione opzionale (password + 2FA), assistente AI opzionale, notifiche opzionali, REST API per integrazioni." }, "hero": { "alt": "ProxMenux Monitor dashboard: schermata di panoramica del sistema con CPU, widget di memoria, temperatura e tempo di attività", "caption": "Schermata di destinazione predefinita: parametri a livello di host e stato di integrità a colpo d'occhio." }, "coverage": { "heading": "Cosa copre il dashboard", "intro": "Otto sezioni principali, ciascuna con i propri endpoint API:", "tableSection": "Sezione", "tableWhat": "Cosa mostra", "sections": [ { "name": "Monitoraggio dello stato", "description": "Avvisi attivi e ignorati su CPU, memoria, archiviazione, dischi, rete, servizi, log, VM, aggiornamenti e sicurezza. Gestisce il motore di notifica." }, { "name": "Archiviazione", "description": "Pool di archiviazione Proxmox, dischi fisici (SATA / NVMe / USB), attributi SMART, stato dei pool ZFS, usura e vita utile, attività I/O." }, { "name": "Rete", "description": "Tutte le interfacce (fisiche, bond, bridge, OVS), IP/MAC/stato, grafici RX/TX in tempo reale, dati RRD storici per interfaccia." }, { "name": "VM e contenitori", "description": "Inventario VM/LXC con stato, risorse e tempo di attività. I dettagli mostrano configurazione, metriche storiche, download dei log Proxmox e azioni avvio/arresto/riavvio/spegnimento. I log dipendono dall’endpoint Proxmox; non è un archivio completo del sistema guest." }, { "name": "Hardware", "description": "CPU modello e topologia, layout della memoria, dispositivi PCIe, elenco GPU con driver e monitoraggio in tempo reale per slot (NVIDIA / Intel iGPU)." }, { "name": "Registri ed eventi", "description": "journalctl in tempo reale con filtri di gravità/intervallo di tempo/parole chiave, cronologia delle attività Proxmox, registro delle notifiche, pacchetti di registri scaricabili." }, { "name": "Terminale", "description": "Shell host e console VM/CT supportate nel browser tramite xterm.js e WebSocket. Le sessioni non sono sottoposte ad audit per singolo comando." }, { "name": "Sicurezza", "description": "Tentativi di autenticazione falliti, stato dei jail di Fail2Ban, blocchi recenti e integrazione con il jail [proxmenux] dell’host." } ], "footer": "Ogni sezione ha una pagina di documentazione dedicata sotto Dashboard nella barra laterale." }, "howItRuns": { "heading": "Come funziona", "intro": "ProxMenux Monitor viene distribuito come AppImage autonoma. Una singola unità systemd (proxmenux-monitor.service) avvia un processo Flask che:", "bullets": [ "Ascolta su TCP 8008 sull'host (HTTP).", "Serve la dashboard Next.js come file statici in / e l’API in /api/* dallo stesso processo.", "Estrae dati in tempo reale con strumenti host standard: psutil, pvesh, smartctl, journalctl, zpool, ip, nvidia-smi, ecc.", "Salva lo stato in un database SQLite locale (/usr/local/share/proxmenux/health_monitor.db): avvisi ignorati, osservazioni dei dischi, configurazioni notifiche e AI. L’autenticazione è conservata separatamente in /root/.config/proxmenux-monitor/auth.json." ], "footer": "Il flusso completo della richiesta, il layout del file e l'integrazione di systemd sono descritti in Architettura." }, "noAgent": { "title": "Nessun agente sui guest", "body": "Il Monitor legge tutti i dati dall’host. Non occorre installare agenti nelle VM o nei CT: i dati provengono dall’API di Proxmox e dalle informazioni che il kernel dell’host rende disponibili sui sistemi guest in esecuzione." }, "access": { "heading": "Accesso al dashboard", "intro": "Sono supportati due modelli di accesso e l'applicazione rileva quale è in uso:", "codeComment1": "# 1) Accesso diretto sull'host", "codeComment2": "# 2) Tramite proxy inverso (Nginx / Caddy / Traefik)", "afterCode": "Il proxy inverso deve impostare X-Forwarded-For, X-Forwarded-Proto e X-Forwarded-Host correttamente e inoltrare gli upgrade WebSocket. Sulle porte standard il browser usa l’origine attuale. Il backend considera attendibili gli IP inoltrati solo con PROXMENUX_TRUST_PROXY=1 esplicito; limita l’accesso diretto al backend quando lo abiliti.", "footer": "La configurazione al primo avvio, la password + TOTP 2FA e gli snippet proxy inverso sono trattati in Accesso e autenticazione." }, "mobile": { "heading": "Utilizzo mobile e installazione dalla schermata iniziale", "intro": "La dashboard è reattiva e viene fornita come app Web progressiva. Il pacchetto public/manifest.json dichiara display: standalone con il nome dell'app, l'icona e il colore del tema, quindi l'aggiunta dell'URL alla schermata iniziale produce un vero launcher autonomo: nessuna barra degli indirizzi del browser, splash personalizzato, tema scuro abbinato al dashboard.", "phoneAlt": "ProxMenux Monitor in esecuzione su un telefono: visualizzazione dashboard principale", "phoneCaption": "Dashboard principale su un telefono: il layout si adatta per le finestre di piccole dimensioni.", "addHeading": "Aggiungi alla schermata iniziale", "iosLabel": "iOS Safari:", "iosBody": "pulsante di condivisione → Aggiungi alla schermata principale. L'icona proviene da /apple-touch-icon.png fornito in AppImage.", "androidLabel": "Android Chrome/Edge:", "androidBody": "menu a tre punti → Installa app (o Aggiungi alla schermata Home su versioni precedenti).", "afterInstall": "Una volta installata, aprendo l'icona si avvia la dashboard in modalità autonoma con la propria voce di commutazione attività.", "onlineOnlyTitle": "Richiede una connessione", "onlineOnlyBody": "La PWA è installabile, ma non funziona offline: non include un service worker. Il collegamento si comporta come un’app nativa, ma il dispositivo deve comunque poter raggiungere l’host sulla porta TCP 8008, tramite LAN, VPN o HTTPS con proxy inverso, per caricare la dashboard." }, "health": { "heading": "Il monitoraggio dello stato e le notifiche", "alt": "Schermata Health Monitor che mostra le 10 categorie tracciate (CPU, memoria, archiviazione, dischi, rete, servizi, registri, VM, aggiornamenti, sicurezza) con lo stato corrente", "caption": "Vista Health Monitor: le categorie 10 monitorate, con il loro stato attuale. Gli avvisi attivi e ignorati vengono visualizzati qui quando il sistema ne genera qualcuno.", "body1": "Il Health Monitor lavora continuamente in background e genera eventi strutturati: temperatura CPU elevata, avvisi SMART, degrado dei pool ZFS, terminazioni OOM, guasti VM/CT e incidenti di sicurezza. Ogni evento ha categoria, gravità (INFO / WARNING / CRITICAL) e una error_key stabile per raggruppare i duplicati senza riempire lo schermo.", "feedsIntro": "Gli eventi alimentano tre cose contemporaneamente:", "feedsHealth": "La vista Monitoraggio integrità nel dashboard (elenchi attivi + ignorati).", "feedsChannels": "Il motore di notifica — Telegram, Discord, Email, Gotify, Pushover e Apprise (multicanale). Ogni canale è configurato in modo indipendente e le categorie per evento possono essere silenziate.", "feedsAI": "L'assistente AI opzionale: se abilitato, il provider configurato (OpenAI, Anthropic, Gemini, Groq, Ollama o OpenRouter) spiega gli eventi in arrivo in un linguaggio semplice e, se abilitato nelle impostazioni AI, propone i passaggi successivi.", "suppressionTitle": "Sopprimere singoli avvisi anziché silenziare tutto", "suppressionBody": "Ogni categoria ha la propria Durata di soppressione: una volta ignorato un avviso, lo stesso avviso viene silenziato per quella finestra (predefinito 24 ore, configurabile per categoria fino a permanente). Escalation reali – ad es. CPU temperatura che supera la soglia critica: riattivazione sempre indipendentemente dalla soppressione." }, "api": { "heading": "REST API e integrazioni", "intro": "Gli endpoint REST espongono dati di monitoraggio JSON via HTTP/HTTPS per Homepage, Home Assistant, Uptime Kuma e script. Grafana può usare l’esportatore testuale Prometheus separato su /api/prometheus. Le richieste possono usare curl.", "tokens": "I token API a lunga durata (365 giorni) vengono generati in Impostazioni → Token di accesso API o tramite POST /api/auth/generate-api-token.", "bearer": "Invia i token con Authorization: Bearer …. Anche /api/health richiede l’intestazione Bearer, quindi i controlli di disponibilità necessitano di un token read_only. Sotto /api/auth/* ci sono sia rotte pubbliche di configurazione/login/stato sia rotte protette per account e token; non sono tutte anonime.", "catalog": "Catalogo degli endpoint, rotazione dei token e sicurezza sono nel Riferimento API; esempi per Homepage, Home Assistant, Grafana, Uptime Kuma e cURL sono in Integrazioni." }, "serviceControl": { "heading": "Controllo del servizio", "intro": "Giorno per giorno, il Monitor è gestito esattamente come qualsiasi altro servizio systemd. Viene inoltre esposto come due voci all'interno della TUI ProxMenux in Impostazioni:", "codeComment": "# Controllo manuale", "footer": "Vedi Impostazioni → ProxMenux Monitor per l'attivazione/disattivazione del menu e il flusso di verifica dello stato." }, "nextSteps": { "heading": "Dove proseguire", "items": [ { "label": "Architettura", "description": "— Flask backend, unità systemd, schema SQLite, fornitori di intelligenza artificiale, canali di notifica." }, { "label": "Accesso e autenticazione", "description": "— primo avvio, impostazione della password, TOTP 2FA, configurazione proxy inverso, integrazione Fail2Ban." }, { "label": "Dashboard", "description": "— ogni sezione dell’interfaccia, una pagina per ciascuna." }, { "label": "Riferimento API", "description": "— ogni endpoint, forma di richiesta/risposta e gestione dei token." }, { "label": "Integrazioni", "description": "— Homepage, Home Assistant, Grafana / Prometheus, Uptime Kuma e modello cURL generico." } ] } }