PassioniInformatica › Sito web

Come è nato armandopassaro.it — stack tecnologico e architettura

03/03/2026

La scelta dello stack

Il sito armandopassaro.it è stato progettato con un obiettivo: velocità, semplicità e controllo totale. Niente CMS pesanti, niente framework JavaScript.

Stack tecnologico

  • Backend: PHP 8.2 nativo — nessun framework, codice pulito e leggero
  • Database: MySQL (MariaDB) per articoli, log, conteggi
  • Web server: Apache su Debian 12 con mod_rewrite
  • Hosting: VM dedicata su infrastruttura Proxmox privata
  • SSL: Let’s Encrypt con rinnovo automatico
  • Reverse proxy: Apache su server separato per SSL termination

Struttura file

/var/www/html/
  index.php           # Router principale
  pages/              # Tutte le pagine del sito
  includes/           # Header, footer, menu
  admin/              # Pannello di amministrazione
  api/                # Endpoint API
  cache/              # Cache JSON
  cron/               # Script schedulati

Perché PHP nativo?

Con un framework come Laravel avrei avuto migliaia di file e dipendenze. PHP nativo mi dà il controllo totale, tempi di risposta sotto i 50ms e zero dipendenze esterne.

Risultato: Un sito veloce, sicuro e completamente sotto il mio controllo.

Sistema di routing e gestione pagine dinamiche

02/03/2026

Il router PHP di armandopassaro.it

Il cuore del sito è un sistema di routing custom basato su una whitelist di pagine autorizzate.

Whitelist

$allowed_pages = [
  "home", "curriculum", "news", "photogallery",
  "contatti", "homelab", "youtube", ...
];

Gestione 404 con logging

Ogni richiesta a una pagina non autorizzata genera un 404 e viene loggata su MySQL per monitorare scanner automatici.

Header e footer condivisi

Ogni pagina viene wrappata automaticamente con header, menu, contenuto e footer. Un unico punto di controllo per meta tag, CSS e JavaScript.

Sottopagine

Alcune pagine supportano sottosezioni tramite parametro sub, permettendo navigazione gerarchica come Passioni → Informatica → Linux.

Risultato: Router leggero, sicuro e facile da estendere senza dipendenze esterne.

Dashboard Homelab — monitoraggio infrastruttura in tempo reale

28/02/2026

La pagina Homelab

La sezione Homelab è il cuore del monitoraggio dell’infrastruttura. Mostra in tempo reale lo stato di tutti i server, VM, GPU e tool di sicurezza.

Componenti

  • Stato server: 3 nodi Proxmox con ping check in tempo reale
  • Conteggio VM: query API Proxmox su tutti i nodi (auto-discovery)
  • GPU Status: temperatura, utilizzo e VRAM di 6 GPU
  • Security Audit: score live da Secure-Box
  • Storage totale: aggregazione spazio disco su tutti i server

Dati live

I dati vengono raccolti tramite API Proxmox (autenticazione con ticket), cache JSON aggiornate ogni minuto e ping check con soglia di 1 risposta su 3.

Layout responsivo

Ogni sezione è una card con bordo colorato in base allo stato. CSS Grid con breakpoint per mobile.

Risultato: Dashboard per monitorare 100+ VM, 6 GPU e tutti i servizi da un’unica pagina.

Integrazione GPU Status — dati live da 3 server

26/02/2026

Monitoraggio GPU in tempo reale

Il sito mostra temperatura, utilizzo e VRAM di 6 GPU: 2x RTX 3060, 2x Tesla P4, 2x Tesla P100.

Raccolta dati

Uno script cron ogni minuto raccoglie i dati tramite nvidia-smi e li salva in un JSON nella cache del sito.

Visualizzazione

Ogni GPU viene mostrata con barra di utilizzo colorata, temperatura, VRAM usata/totale, nome server e modello GPU.

Gestione errori

Se un server non risponde, la card mostra stato "offline" con ultimo dato disponibile dalla cache.

Risultato: Monitoraggio real-time di 6 GPU su 3 server con aggiornamento automatico.

Sistema di news e articoli con MySQL

24/02/2026

Gestione contenuti

Gli articoli del sito sono gestiti tramite database MySQL con tabelle post e sottocategorie.

Schema

Tabella post con: titolo, contenuto HTML, fonte, link, categoria, sottocategoria, data pubblicazione. Tabella sottocategorie con slug e relazione gerarchica.

Sitemap dinamica

La sitemap viene generata automaticamente includendo tutte le pagine statiche e tutti gli articoli dal database. Oltre 500 URL indicizzati.

Tempo di lettura

Ogni articolo mostra il tempo stimato calcolato contando le parole e dividendo per 200 (media parole al minuto).

Risultato: CMS leggero e personalizzato, senza overhead di WordPress.

Ottimizzazioni performance — GZIP, WebP e cache

22/02/2026

Come ho velocizzato il sito

1. Compressione GZIP

Abilitata tramite zlib.output_compression in PHP. Riduce il peso delle pagine del 60-70%.

2. Immagini WebP

Tutte le immagini convertite in WebP con risparmio del 40-50%.

3. Cache browser

Configurata con mod_expires: 1 mese per immagini, 1 settimana per CSS/JS.

4. Preconnect e preload

Hint al browser per risorse esterne nel header HTML.

5. Security headers

HSTS, CSP restrittiva, X-Frame-Options, X-Content-Type-Options.

6. Cookie GDPR

Banner con "Solo necessari" e "Accetta tutti", scelta salvata in localStorage.

Risultato: Pagine sotto 1 secondo, A+ su SSL Labs.

Sicurezza del sito: CSP, hardening e protezione antivirus

20/02/2026

Hardening di armandopassaro.it

1. Content Security Policy

CSP restrittiva che limita origini di script, stili, immagini e frame.

2. Apache hardening

  • ServerTokens Prod — nasconde versione Apache
  • ServerSignature Off
  • Options -Indexes — blocca directory listing
  • File sensibili bloccati (.bak, .sql, .env, .log)

3. Robots.txt e noindex

Le pagine con tool tecnici sono escluse dall’indicizzazione. Meta noindex applicato automaticamente.

4. Rate limiting

mod_evasive sul reverse proxy per protezione DDoS base.

5. Terminologia sicura

Le pagine pubbliche usano terminologia professionale per evitare falsi positivi degli scanner antivirus.

Risultato: Sito hardened con CSP, header di sicurezza e zero falsi positivi AV.

Servers Update — ticker real-time con import da Git

18/02/2026

Diario di bordo dell’infrastruttura

La pagina Servers Update mostra un feed in tempo reale degli aggiornamenti, con ticker stile Matrix.

Ticker animato

Ultimi 30 messaggi su sfondo nero con testo verde (#00ff41), animazione 120 secondi.

Import automatico da Git

Uno script cron ogni 15 minuti importa i commit dell’infrastruttura, filtrando commit automatici e quelli con dati sensibili.

Admin panel

Pagina admin dedicata per inserimento manuale e cancellazione messaggi.

Risultato: Feed automatico con import Git e gestione manuale.

Gestione multi-Proxmox — API e auto-discovery VM

16/02/2026

Monitoraggio di 3 nodi Proxmox via API

Architettura

3 server Proxmox con GPU dedicate, interrogati via API REST con auto-discovery dei nodi.

Autenticazione

Login API con ticket e CSRFPreventionToken, poi query a /nodes/{node}/qemu per elenco VM.

Gestione timeout

Timeout 5 secondi per host. Se un nodo non risponde, mostrato come offline con dati dall’ultima cache.

VM nascoste

File JSON nell’admin per nascondere VM di sistema senza eliminarle.

Risultato: Monitoraggio unificato di 100+ VM su 3 nodi con auto-discovery e gestione timeout.

Backup automatico del sito su NAS via NFS

14/02/2026

Sistema di backup settimanale

Architettura

  • Sorgente: VM web server Debian 12
  • Destinazione: dataset ZFS su NAS (20 TB)
  • Protocollo: NFS v4 con mount automatico
  • Frequenza: settimanale (domenica alle 3:00)

Flusso

  1. Mount automatico share NFS
  2. Backup tar.gz di /etc, /var/www, configurazioni
  3. Copia locale per il check audit
  4. Retention: 10 copie remote, 1 locale
  5. Smontaggio NFS e notifica Telegram

Monitoraggio

Il Security Audit controlla automaticamente l’età dell’ultimo backup. Oltre 7 giorni = warning nello score.

Risultato: Backup automatico, monitorato e con notifica su storage ZFS ridondante.

Nuovo sito web

24/05/2025

Nuovo sito web semplice, veloce, dotato di autonomia nella ricerca di Notizie e di Notizie sui Comuni che ricopro. Dotato di intelligenza artificiale.

Sito web

24/05/2025

E' online il nuovo sito web, semplice e funzionale, in Php e completamente autonomo, scarica le News da solo, cerca le notizie dei Comuni che ricopro, e in parte manuale dove posso inserire notizie ed info sulle mie passioni e sul mio curriculum.