Installa e configura uno script PHP personalizzato per monitorare uptime, RAM, disco, rete e processi sul tuo Synology NAS. Guida completa per DSM 7.x con Web Station.
Introduzione
Questo script PHP rappresenta una soluzione leggera e immediata per monitorare le metriche fondamentali del tuo NAS Synology direttamente da browser. A differenza di pacchetti complessi come Controllo Risorse di DSM, questa pagina web personalizzata offre una visione snapshot delle risorse di sistema con un'interfaccia moderna e responsive.
Lo script legge dati da /proc/meminfo, /proc/net/dev, esegue comandi come uptime e ps aux, e calcola lo spazio disco su volumi specifici. È ideale per chi desidera una dashboard minimalista integrata nel proprio ecosistema web senza dipendere da container Docker o servizi esterni.
Cosa Fa Questo Script
Metriche Monitorate
Lo script raccoglie e visualizza le seguenti informazioni di sistema:
- Uptime del sistema: Mostra il tempo di attività del NAS e il carico medio tramite il comando
uptime. - Utilizzo RAM: Legge
/proc/meminfoper mostrare memoria totale, usata e disponibile in formato leggibile (B, KB, MB, GB, TB). - Spazio disco: Monitora un volume specifico (default
/volume3) usando le funzioni PHPdisk_total_space()edisk_free_space(). - Traffico di rete: Estrae i byte ricevuti (RX) e trasmessi (TX) da tutte le interfacce di rete attive leggendo
/proc/net/dev, escludendo il loopbacklo. - Top 5 processi per CPU: Esegue
ps aux --sort=-%cpu | head -n 6per elencare i processi più avidi di risorse CPU. - Info ambiente: Mostra versione PHP, server software (es. Apache/Nginx) e data/ora corrente.
Formattazione Intelligente
La funzione fmtBytes() converte automaticamente i byte in unità leggibili (B, KB, MB, GB, TB) con due decimali, rendendo i dati immediatamente comprensibili.
L'interfaccia è costruita con CSS moderno (sfondo scuro #020617, card con ombreggiature, layout responsive con CSS Grid) e si adatta a desktop e mobile.
Prerequisiti di Sistema
Prima di installare lo script, verifica di avere:
- Synology DSM 7.0 o superiore (testato su DSM 7.2 e 7.4).
- Web Station installato dal Package Center di DSM.
- Profilo PHP attivo (PHP 7.4 o superiore consigliato).
- Permessi di lettura su
/proc/meminfo,/proc/net/deve accesso alla shell pershell_exec(). - Gruppo
httpcon permessi sulla cartellawebcondivisa.
Installazione Passo Passo
1. Installa Web Station e PHP
Accedi al DSM del tuo Synology e apri il Package Center.
Cerca e installa:
- Web Station (se non già presente)
- PHP (seleziona una versione recente come PHP 7.4 o 8.0)
2. Configura il Profilo PHP
Apri Web Station dal menu principale.
Vai su Impostazioni linguaggio script > PHP.
Seleziona il profilo PHP predefinito (o creane uno nuovo) e clicca su Modifica.
Nella scheda Estensioni, assicurati che tutte le estensioni siano abilitate (specialmente quelle di sistema).
Nella scheda Impostazioni generali, verifica che shell_exec non sia disabilitato (alcuni hosting condivisi lo bloccano, ma su DSM dedicato è attivo di default).
Salva le modifiche.
3. Crea il File dello Script
Apri File Station e naviga nella cartella condivisa web.
Questa è la root del server web di Web Station.
Crea un nuovo file chiamato metriche-nas.php (o il nome che preferisci) e incolla il codice PHP fornito.
Assicurati che il file abbia estensione .php e non .txt.
4. Imposta i Permessi della Cartella
Nella stessa finestra di File Station, seleziona la cartella web, clicca con il tasto destro e scegli Proprietà®».
Vai alla scheda Autorizzazioni e verifica che il gruppo http abbia almeno i permessi di Lettura (meglio se Lettura/Scrittura per evitare problemi).
Se il gruppo http non esiste, crealo o usa l'utente http creato automaticamente da Web Station.
5. Configura il Percorso del Disco
Nel codice PHP, cerca la riga:
$path = '/volume3';Modifica /volume3 con il percorso del volume che desideri monitorare (es. /volume1, /volume2, ecc.).
Se vuoi monitorare più volumi, puoi duplicare il blocco di codice o creare un array di percorsi e iterarci sopra.
6. Accedi alla Pagina
Apri il browser e digita:
http://<IP-del-tuo-NAS>/metriche-nas.phpSostituisci <IP-del-tuo-NAS> con l'indirizzo IP locale del tuo Synology (es. 192.168.1.100).
Dovresti vedere la dashboard con tutte le metriche in tempo reale.
Configurazione Avanzata
Abilitare shell_exec su DSM
Se la pagina mostra errori o dati mancanti per uptime e processi, shell_exec potrebbe essere disabilitato.
Su DSM, shell_exec è attivo di default per i profili PHP di Web Station, ma puoi verificarlo creando un file test.php con:
<?php
phpinfo();
?>Carica il file via browser e cerca la sezione shell_exec.
Se è disabilitato, modifica il file php.ini del profilo PHP:
1. Apri Web Station > Impostazioni linguaggio script > PHP.
2. Clicca su Modifica sul profilo attivo.
3. Vai alla scheda Impostazioni generali.
4. Cerca disable_functions e rimuovi shell_exec dalla lista.
5. Salva e riavvia il servizio HTTP da Pannello di controllo > Servizi terminali e applicazioni > Servizio HTTP > Riavvia.
In alternativa, modifica direttamente il file php.ini via SSH:
sudo vi /usr/local/etc/php74/php.iniCerca la riga:
disable_functions = shell_exec, ...Rimuovi shell_exec e salva.
Riavvia Web Station o il servizio HTTP.
Monitorare Più Volumi
Per estendere il monitoraggio a più volumi, modifica la sezione del disco così:
$volumes = ['/volume1', '/volume2', '/volume3'];
foreach ($volumes as $path) {
$diskTotal = @disk_total_space($path);
$diskFree = @disk_free_space($path);
$diskUsed = ($diskTotal !== false && $diskFree !== false) ? $diskTotal - $diskFree : 0;
echo "<h2>Disco " . htmlspecialchars($path) . "</h2>";
echo "<table>";
echo "<tr><th>Totale</th><td>" . ($diskTotal !== false ? fmtBytes($diskTotal) : 'N/D') . "</td></tr>";
echo "<tr><th>Usato</th><td>" . ($diskTotal !== false ? fmtBytes($diskUsed) : 'N/D') . "</td></tr>";
echo "<tr><th>Libero</th><td>" . ($diskTotal !== false ? fmtBytes($diskFree) : 'N/D') . "</td></tr>";
echo "</table>";
}
Questo ciclo stamper๲ una card per ogni volume specificato.
Personalizzare l'Interfaccia
Il CSS incluso è già responsive e moderno, ma puoi modificarlo per adattarlo al tuo stile.
Per esempio, per cambiare il colore di sfondo:
body {
background: #1a1a2e; / Nuovo colore scuro /
color: #e5e7eb;
}Per aggiungere un logo o un'intestazione personalizzata, inserisci un tag <img> prima del titolo <h1>:
<img src="/logo.png" alt="Logo" style="height:40px; margin-bottom:12px;">Assicurati che il file logo.png sia nella cartella web o in una sottocartella accessibile.
Risoluzione dei Problemi
La pagina mostra solo codice PHP o scarica il file
Questo errore indica che PHP non è configurato correttamente in Web Station.
Verifica:
- Il file è nella cartella
web(non in una sottocartella non configurata). - Il profilo PHP è selezionato in Web Station > Servizio Web > Modifica > Backend HTTP e Profilo PHP.
- L'estensione del file è
.phpe non.txto.php.txt.
Errori di permesso su /proc/meminfo o /proc/net/dev
Se le sezioni RAM o Rete mostrano "Nessun dato disponibile", il processo PHP non ha permessi di lettura.
Soluzioni:
- Assicurati che il gruppo
httpabbia permessi di lettura su/proc. - Esegui da SSH:
sudo chmod 644 /proc/meminfo
sudo chmod 644 /proc/net/dev- Verifica che
open_basedirnon sia impostato su una directory restrittiva inphp.ini.
shell_exec non restituisce dati per uptime o processi
Se le sezioni Uptime e Top processi sono vuote, shell_exec potrebbe essere disabilitato o bloccato.
Controlla:
- In Web Station > PHP > Impostazioni generali, la voce
disable_functionsnon includashell_exec. - Da SSH, esegui
uptimeeps auxmanualmente per verificare che i comandi funzionino. - Se usi un profilo PHP personalizzato, modifica il file
php.inicorrispondente (es./usr/local/etc/php74/php.ini) e rimuovishell_execdadisable_functions.
La pagina è lenta o non si carica
Se il caricamento è lento, i comandi shell_exec potrebbero bloccarsi.
Aggiungi un timeout ai comandi:
$uptimeRaw = trim(shell_exec('timeout 2 uptime 2>&1'));
$psRaw = shell_exec('timeout 2 ps aux --sort=-%cpu | head -n 6 2>&1');Questo limita l'esecuzione a 2 secondi per comando.
Sicurezza e Best Practice
Limitare l'Accesso alla Pagina
Questa pagina espone informazioni sensibili sul tuo sistema (processi attivi, uso risorse, interfacce di rete).
Per proteggerla:
- Accesso solo da rete locale: Configura il firewall di DSM per permettere l'accesso alla porta HTTP (80 o 8080) solo da indirizzi IP locali (es.
192.168.1.0/24). - Autenticazione HTTP: Crea un file
.htaccessnella cartellawebper richiedere username e password:
AuthType Basic
AuthName "Area Riservata"
AuthUserFile /volume1/web/.htpasswd
Require valid-userGenera il file .htpasswd con:
htpasswd -c /volume1/web/.htpasswd username- HTTPS obbligatorio: Configura un certificato SSL in Pannello di controllo > Sicurezza > Certificato e forza la redirect su HTTPS.
Non Esporre la Pagina su Internet
Evita di esporre questa pagina su Internet pubblico senza protezioni adeguate (firewall, autenticazione, VPN).
Se devi accedervi da remoto, usa:
- VPN (OpenVPN o WireGuard su DSM)
- QuickConnect con autenticazione a due fattori
- Reverse proxy con autenticazione (es. Nginx Proxy Manager)
Aggiornare lo Script
Tieni lo script aggiornato se moduli DSM o PHP.
Verifica periodicamente:
- Che i percorsi
/proc/*siano ancora leggibili - Che
shell_execnon sia stato disabilitato da aggiornamenti di sicurezza - Che le funzioni
disk_total_space()edisk_free_space()funzionino con nuovi volumi o configurazioni RAID
Alternative e Integrazioni
Controllo Risorse di DSM
DSM include già uno strumento nativo chiamato Controllo risorse che mostra CPU, RAM, disco e rete in tempo reale con grafici storici.
Tuttavia, questo script PHP offre:
- Maggiore personalizzazione dell'interfaccia
- Integrazione in pagine web esistenti
- Leggerezza (nessun container o servizio aggiuntivo)
- Accesso diretto via URL senza login DSM (se configurato)
Monitoraggio con Docker
Se cerchi funzionalità avanzate (alert, storici, dashboard multiple), considera container Docker come:
- Uptime Kuma: Monitoraggio uptime e latenza di servizi.
- Netdata: Dashboard in tempo reale con metriche dettagliate.
- Grafana + Prometheus**: Soluzione enterprise per monitoraggio e alerting.
Conclusione
Questo script PHP trasforma il tuo Synology NAS in una dashboard di monitoraggio accessibile da browser, senza dipendenze esterne o configurazioni complesse.
Seguendo questa guida, avrai installato e configurato una pagina web che mostra uptime, RAM, disco, rete e processi in tempo reale, con un'interfaccia moderna e responsive.
Per ulteriori personalizzazioni, integra lo script con altri strumenti di monitoraggio o estendilo per includere metriche aggiuntive (temperatura CPU, stato SMART dei dischi, ecc.).
Buon monitoraggio!
Commenti e Feedback (0)
Devi aver effettuato l'accesso per poter scrivere un commento su questo progetto.
Accedi al tuo Account oppure Registrati