
Una sera di novembre 2010, casa di mio padre, scrivania con due monitor scompagnati, sotto un Pentium 4 single core a 2.8 GHz con tre dischi SATA da 80 GB scelti senza criterio sui mercatini di Catania. Sullo schermo principale gira l’installer di Ubuntu 10.04 Lucid Lynx, sul secondario c’è FileZilla aperto sul mio piccolo VPS Aruba a 4 € al mese. L’FTP è il deploy: trascini i file PHP sulla destra, refreshi il browser, vedi se il sito carica. Se non carica, riapri Notepad++, salvi, ritrascini. Lo stack LAMP, Linux Apache MySQL PHP, è l’unica grammatica che conosco e l’unica che serve sapere. Sedici anni dopo, nello stesso modo in cui allora installavo Apache da apt-get install, oggi monto un mini PC Proxmox per girarci modelli LLM da 26 GB di pesi in VRAM. Tra quella sera e oggi ci sono quattro ere distinte di home lab, ognuna con una logica tecnica precisa. Negli altri post di Workshop racconto come questa sensibilità è diventata il sistema nervoso di Romiltec. Qui ricostruisco le quattro ere come le ho vissute.
Era 1, 2010-2014: il Pentium 4, LAMP, l’FTP che era il deploy
Nel 2010 avevo 25 anni e una tesi di robotica appena chiusa con uno script Python che parlava XML-RPC con un robot EUROBOT. Il PC sotto la scrivania era un assemblato Pentium 4 con 2 GB di RAM DDR, scheda madre ASUS recuperata, alimentatore di seconda mano e dissipatore stock che ululava come un asciugacapelli sotto carico. Sopra ci girava Ubuntu 10.04 server, niente desktop environment, e lo stack era LAMP standard: Apache 2.2, MySQL 5.0, PHP 5.3 con mod_php, una vhost per ogni progetto.
Cosa funzionava bene di quella configurazione: era prevedibile. Apache leggeva /etc/apache2/sites-available/, MySQL ascoltava su 3306, PHP era un modulo che caricava nel processo Apache. Se un sito andava giù, tail -f /var/log/apache2/error.log ti diceva tutto. Niente container, niente reverse proxy davanti, niente service mesh. Un solo binario, una sola configurazione, un solo log.
Cosa era una guerra: le dipendenze PHP. Le librerie venivano da PEAR e da pacchetti .deb che a volte non erano allineati. MySQL 5.0 aveva un comportamento dei JOIN che oggi nessuno ricorda più, niente JSON nativo, niente CTE. La replica master-slave si configurava a mano modificando my.cnf su entrambi i nodi e copiando il binlog manuale dopo aver fatto FLUSH TABLES WITH READ LOCK. Se sbagliavi un offset del binlog, partiva una notte di smanettamento.
L’FTP era il deploy in senso letterale. Niente git, niente CI, niente pipeline. La parola git push per me è arrivata nel 2012. Prima era FileZilla, profilo “produzione”, trascinamento file, e una preghiera che il PHP non avesse un parse error. La differenza tra questa preghiera e una pipeline GitHub Actions di oggi è la differenza tra due ere.
Una memoria precisa dei quegli anni: la prima scheda audio Sound Blaster comprata da ragazzino per far girare un gioco che non si avviava senza driver. Era il 1996, il PC era un 486 DX2 a 66 MHz, il gioco era Doom, la scheda audio costò una mensilità di paghetta. Imparai a smontare quel PC per montarla bene, mio padre mi guardò aprire il case con un misto di preoccupazione e fierezza. È lì che ho capito una cosa che ancora oggi guida ogni mia scelta tecnica: il piacere di mettere le mani sull’hardware ti dà la consapevolezza di andare al nocciolo dei problemi. È la stessa frase che ho ripetuto al WP Meetup di Pisa il mese scorso, e che ancora oggi spiego a chi entra in Romiltec come junior.
Era 2, 2014-2018: efficienza energetica, Raspberry Pi, container
Nel 2014 il PC desktop sotto la scrivania iniziava a essere un problema diverso. Non era più una questione di potenza, era una questione di consumo. Tenere un Pentium 4 acceso 24/7 costava ~30 € al mese in bolletta, faceva rumore, scaldava. La risposta arrivò da un oggetto che cambiò il rapporto performance/consumo del mondo home lab: il Raspberry Pi.
Il primo Pi 2 model B che ho preso aveva un quad-core ARM Cortex-A7 a 900 MHz, 1 GB di RAM, costava 35 €, consumava 4 W. Quattro Watt. Sopra ci girava Raspbian e, sotto Raspbian, una manciata di servizi che il Pentium 4 non aveva mai gestito bene: un DNS locale con dnsmasq, un server VPN con OpenVPN, un piccolo Nextcloud per i backup delle foto, un job di rsync notturno verso un disco USB.
Era 2 fu l’era in cui imparai una cosa che oggi sembra ovvia ma allora non lo era: l’efficienza energetica è un parametro architetturale, non un bonus. Se un Pi può fare il 70% del lavoro di un Pentium 4 al 5% del consumo, l’architettura giusta è quella che mette il 70% di lavoro sui Pi e il 30% di lavoro pesante su una macchina più grossa accesa solo quando serve. Da lì ho iniziato a pensare all’home lab come a un cluster di ruoli, non come un singolo server.
I container arrivarono in coda a questa era. Docker 1.0 è del giugno 2014, ma per i primi due anni era ancora roba da early adopter. Lo iniziai a usare seriamente nel 2016, su un primo NUC i3 che avevo aggiunto al lab per i progetti che chiedevano più CPU. Lì capii la seconda lezione: container non vuol dire macchina virtuale leggera. Container vuol dire processo isolato con il suo filesystem e la sua rete, ma kernel condiviso con l’host. Se la pratica era diversa dalla teoria, la pratica era nei docker-compose.yml lunghi una pagina che diventavano la nuova grammatica del deploy.
A fine era 2 il mio home lab era diventato: un Pentium 4 ancora acceso per la legacy LAMP, due Raspberry Pi 3 in due stanze diverse per servizi sempre-on a basso consumo, un NUC i3 per i container Docker. Tre macchine, tre logiche, tre profili energetici. Era la prima volta che ragionavo da architetto e non da hobbista.
Era 3, 2018-2022: ARM matura, Home Assistant, Plex, Nextcloud
L’era 3 inizia per me con un Raspberry Pi 4 da 4 GB di RAM e un disco SATA esterno collegato via USB 3.0. Sopra ci installai Home Assistant OS, e da lì non sono più tornato indietro. Le luci di casa, il termostato, i sensori di temperatura per stanza, la presenza via Bluetooth, la routine di buongiorno che apre le tapparelle alle 7:30 nei giorni di scuola dei miei figli e alle 9:00 nei weekend: tutto su un Pi da 35 €.
In parallelo arrivò Plex su un mini PC Intel NUC i5 con 16 GB di RAM e un disco da 4 TB, e Nextcloud su un altro NUC dedicato. La logica era la stessa: ogni ruolo su una macchina, niente convivenze, ogni macchina con il suo profilo energetico ottimizzato. Il Pi consumava 4 W, il NUC Plex consumava 15 W in idle e 35 W sotto transcoding, il NUC Nextcloud stava sui 12 W sempre.
Era 3 fu l’era in cui ARM smise di essere “il processore del Pi” e iniziò a essere un’opzione architetturale seria. Apple lanciò gli M1 nel 2020, Ampere e AWS Graviton portarono ARM nei datacenter, e l’home lab diventò il banco di prova naturale per capire dove ARM aveva senso e dove no. Per task I/O bound (DNS, VPN, automation, web statici) era nettamente meglio. Per task CPU bound con set di istruzioni x86 specifiche (transcoding video con encoder Intel Quick Sync, alcune librerie ML legacy) restava x86 il riferimento.
In quell’era ho anche iniziato a capire il valore degli snapshot. Su Nextcloud feci due o tre upgrade andati storti che mi costarono mezza giornata di rollback manuale. Quando passai a Proxmox come hypervisor, lo snapshot pre-upgrade diventò la cosa più naturale del mondo: faccio snapshot, lancio l’upgrade, se va male ripristino lo snapshot in trenta secondi. La differenza tra un home lab da hobbista e un home lab da pratica professionale è esattamente questa: la disciplina di fare snapshot prima di toccare niente di disruptive.
Verso la fine dell’era 3, sul finire del 2022, l’home lab era maturo: un cluster Proxmox a due nodi con un piccolo NAS Synology come storage condiviso, una decina di VM e LXC, Home Assistant, Plex, Nextcloud, Vaultwarden, un piccolo n8n che girava workflow personali. Funzionava bene, consumava complessivamente sui 60 W medi, costava ~150 € l’anno di energia. Era esattamente il livello di sofisticazione che pensavo di voler tenere a vita.
E poi è arrivata l’era 4, e ho dovuto ripensare tutto.
Era 4, 2023-2026: GPU dedicate, LLM in casa, la rivincita dei super-consumi
Tra novembre 2022 (ChatGPT pubblico) e fine 2023 il mondo dei modelli di linguaggio è esploso. La svolta tecnica per l’home lab, però, non è stata ChatGPT: è stata la pubblicazione dei pesi di LLaMA da parte di Meta, e poi la cascata di modelli aperti che ne è seguita (Mistral, Mixtral, Qwen, GLM, GPT OSS). All’improvviso, far girare un LLM serio in casa diventava possibile. Il vincolo non era più il talento o l’accesso ai dati, era la VRAM.
Qui l’home lab ha fatto un giro a U che non mi aspettavo. Per quindici anni avevo ottimizzato per consumo basso, ARM, container leggeri, mini PC. Improvvisamente la cosa più sensata da mettere sotto la scrivania era una GPU consumer da 350 W di TDP. Una RTX 5080 da 16 GB di VRAM ti permette di far girare modelli da ~14 GB di pesi più contesto. Una RTX 5090 da 32 GB ti permette di girare un Qwen3 30B MoE quantizzato a Q4 con tutto il contesto in VRAM, oppure un GLM 4.7 Flash che a uso pratico, su task di codice via Claude Code self-hosted, mi è arrivato a una qualità simile a un Sonnet 3.5. Totalmente offline.
La regola tecnica è una sola, e l’ho ripetuta abbastanza volte in conferenza da averla imparata a memoria: il modello deve entrare interamente in VRAM, pesi più contesto. Se va in offload su CPU, la GPU gira al 5%, la CPU gira al 100%, e un task che la scheda risolverebbe in un minuto diventa un job da tre giorni. Una scheda grafica fa in un minuto quello che un PC senza scheda fa in tre giorni. Non c’è mezza via.
Il mio setup attuale (i nomi-codice li tengo per non confondermi io stesso quando faccio ssh) è un cluster Proxmox a quattro nodi: un mini PC 8 core 16 thread con 32 GB di RAM che tiene i backup di produzione e qualche LXC sempre-on, un server con RTX 5080 16 GB per AI generale e VM, un server con RTX 5090 32 GB dedicato solo a inference LLM, una macchina di casa per media center e foto. A questi si aggiungono due NAS, uno con cinque NVMe gen4 in RAID-Z2 e uno legacy con cinque SSD SATA recuperati sempre in RAID-Z2, entrambi su TrueNAS.
L’era 4 ha riportato i super-consumi. Il nodo con la 5090, a pieno carico inference, sta sui 450 W. Il nodo con la 5080 sui 320 W. Il consumo medio dell’home lab è triplicato rispetto all’era 3. Non perché sono peggiorato come architetto: perché il workload è cambiato. I workload di linguaggio richiedono parallelizzazione massiva su unità di calcolo “stupide”, e quelle unità di calcolo si chiamano GPU, e le GPU consumano. Ogni era ha avuto le sue ragioni, e l’era 4 ha la sua.
L’analogia con i cellulari
C’è una cosa che ho detto al meetup di Pisa e che mi è rimasta in testa per giorni dopo. I cellulari hanno fatto la stessa parabola dell’home lab, in scala compressa. Anni ’90 e primi 2000: cellulari sempre più piccoli, perché la portatilità era il vincolo. Il Motorola StarTAC era il sogno, il Nokia 8210 era l’oggetto del desiderio. Poi, dal 2007 in poi con l’iPhone, la traiettoria si inverte: schermi sempre più grandi, batterie sempre più capienti, processori sempre più potenti, perché la portatilità non bastava più. Il vincolo era diventato un altro: ci serviva un computer in tasca, non un telefono.
L’home lab ha fatto lo stesso movimento. Era 1: forza bruta, l’home server era un PC desktop. Era 2: miniaturizzazione e basso consumo, perché il desktop era troppo. Era 3: maturità della miniaturizzazione, ARM matura. Era 4: ritorno alla forza bruta, perché i workload AI hanno cambiato il vincolo. Ogni inversione è arrivata quando il vincolo dominante è cambiato, non perché qualcuno ha smesso di voler ottimizzare.
Capire che le ere tecnologiche non sono una scala ascendente ma una pulsazione attorno a vincoli che cambiano è una delle cose più utili che ho preso da sedici anni di home lab. Mi guarda dalla scrivania ogni volta che qualcuno mi propone una scelta architetturale come “il futuro”. Le scelte architetturali sono buone se rispondono al vincolo dominante di adesso, non se aderiscono a una traiettoria astratta.
Cosa porto a casa da sedici anni di hardware sotto la scrivania
Tre cose, che scrivo qui per ritrovarle.
Una. La sensibilità tecnica vera si fa in laboratorio, non in slide. Posso leggere venti articoli sull’efficienza ARM o posso comprare un Pi e tenerlo acceso un anno. Le due esperienze non sono confrontabili. Da quando assumo, in Romiltec do peso al fatto che un candidato abbia un home lab proprio, anche piccolo. Non per snobismo, per un motivo tecnico preciso: chi ha smontato un PC, configurato un router, installato un OS da zero, ha una mappa mentale dei sistemi che chi ha solo fatto npm install non ha. La mappa mentale conta più della familiarità con un singolo strumento.
Due. Le ere sono cumulative, non sostitutive. La LAMP del 2010 non è “vecchia”: è il livello base di consapevolezza che permette di capire perché Docker isola il filesystem, perché Kubernetes ha bisogno di un pod, perché un LLM in offload CPU diventa inutilizzabile. Se chi entra in un team senza aver mai visto Apache da apt-get mette un container in produzione, il primo problema serio gli è opaco. La storia tecnica si studia perché serve in operativa, non per nostalgia.
Tre. L’home lab non è un hobby parallelo al lavoro. È il laboratorio R&D di Romiltec a costo zero. Il cluster Proxmox di casa è la prima macchina su cui testo migrazioni, snapshot, deploy WordPress in container, modelli LLM nuovi, automazioni Home Assistant da portare in cantieri clienti. Quando una scelta è validata in casa, va in produzione con un livello di rischio che chi non ha laboratorio non può raggiungere. L’home lab paga il suo consumo energetico in due cantieri salvati l’anno.
Quel Pentium 4 del 2010 non c’è più da dieci anni, ma il modo di pensare con cui lo accendevo la sera per smanettare ce l’ho ancora. È la cosa più preziosa che ho costruito in sedici anni di home lab, e nessun corso, nessuna certificazione, nessun MBA me l’avrebbe data.
