Transcription
Gestire un Homelab è un'occasione unica per fare, disfare e sperimentare con nuove tecnologie senza la paura di sbagliare. Magari inizi con un servizio per stare sul semplice, poi due, poi tre, alla fine ti fai prendere la mano e ti trovi con una marea di servizi dall'utilità più o meno discutibile. NAS, server multimediale, Portainer, Grafana, Palle e chi più ne ha più ne metta e ognuno col suo indirizzo IP e con la sua porta. Ricordarli tutti inizia a diventare difficile.
Ma se vi dicessi che esiste uno strumento pensato esattamente per risolvere questo problema, sto parlando di Homepage, una dashboard minimale e open source per monitorare lo stato dei tuoi container, organizzare le app per categorie e mostrare statistiche in tempo reale sul loro stato. È o non è bellissimo?
Questo è un pannello di controllo centralizzato dove ogni icona è un lanciatore per un servizio che ho nel mio Homelab. Eccetto questo che in realtà è YouTube Studio e in realtà sì, posso avere link arbitrari anche a siti esterni, non necessariamente servizi nel mio Homelab, ma ci arriviamo poi. Comunque qui ho il vantaggio di avere tutto raggruppato. Posso anche raggruppare per categoria, ad esempio qui ho messo sotto YouTube e ogni categoria è collassabile. Voilà. Quindi potete avere quante categorie volete e mantenere tutto ordinato, ma se ancora non fosse sufficiente e doveste avere troppe applicazioni con barra spaziatrice potete fare una ricerca. Ad esempio, diciamo che io voglia cercare che so Bookstack. Eccolo qua, trovato. Servizio. C'è anche l'integrazione con un motore di ricerca, se volete, ma comunque eccolo qua, mi porta dritto al servizio, installato con le credenziali di default, come da tradizione. Ah no, ah no, ah no, in realtà l'ho anche sono stato anche bravo, in realtà le ho anche cambiate, solo che sono stato così bravo che non ho nemmeno aggiornato il password manager, a quanto pare. Ma lasciamo stare.
Comunque questa è una figata perché mi permette di raggruppare per categorie tutti i miei servizi senza perdere di vista nulla di importante, ma soprattutto mi permette anche di monitorare lo stato del mio cluster o del mio Homelab in generale. Guardate qui in alto a sinistra mi sta riportando CPU, memoria disponibile e storage del nodo su cui girano tutti questi servizi. Perché una cosa che non vi ho ancora detto è che ovviamente questo è un servizio Docker che serve a gestire altri servizi Docker. Quindi, effettivamente, ognuno di questi cosi qua ha un suo Docker file da cui l'ho avviato, ma oltre a monitorare se stesso può monitorare anche altri apparati nella mia rete, tipo OpenSense, il router firewall che sto utilizzando per realizzare la DMZ. Ho fatto un video parte su questa roba. Se non l'avete visto, andate a recuperarlo perché penso sia molto interessante per garantire un minimo di sicurezza aggiuntiva nel proprio Homelab, specialmente quando si inizia a esporre dei servizi. Comunque qua ci sto monitorando anche il mio nodo Proxmox, un TrueNAS che ho rete 56, quella a casa dei miei, ti dà anche qualche statistica interessante sull'uso di spazio disponibile a questo momento ogni giorno, ma non a causa mia. Mio fratello ci butta un sacco di roba sopra e di sto passo dovremmo raddoppiare lo storage entro fine anno.
Comunque spero di aver reso l'idea in un Homelab tanto è più complesso, tanto più è il bisogno di gestire i propri servizi e avere un pannello centrale, no, che ti dica "Ah, è vero, ha installato questo, questo, questo, quest'altro" oppure "Ecco, le risorse sono messe così" oppure hai un minimo di monitoraggio di base anche solo delle risorse, fa comodo. E la figata di Homepage è che oltre a essere estremamente pulito e minimale è anche super semplice da installare e configurare. Quindi vediamo assieme come si fa e poi vi mostro un paio di altri trucchetti che non vi ho ancora svelato.
Sono sul computer su cui voglio eseguire questo container Docker, quindi mi vado a creare una cartella chiamata homepage, mi ci sposto dentro e vado anche a creare una cartella homepage data al suo interno. Questa servirà come volume in bind mount per il servizio, cioè sostanzialmente il container andrà a scrivere qui dentro i propri dati. A questo punto non devo fare altro che creare un semplice docker-compose.yaml e ci sbatto dentro questa roba qui presa dal sito ufficiale. Non mi sto inventando niente ed è una configurazione estremamente semplice, come vedete qui vado a mappare la cartella appena creata all'interno del container, ci servirà tra poco. E qui fate attenzione che ve lo spiego meglio dopo. Eccoci qua. Salviamo ed usciamo. Sudo docker compose up -d. Via, così ci lascia la shell libera e andiamo. A questo punto con docker ps dovreste poter vedere il container in esecuzione. Eccolo qua. A me va a capo perché ho ingrandito per farvi vedere meglio, ma sostanzialmente abbiamo la porta 3000 in ascolto. Quindi apro un browser alla porta 3000 e eccoci qua. Non è esattamente come ve l'ho fatto vedere prima, vero? Ok, inizialmente è un po' scarno, ma bastano poche righe di configurazioni yaml per trasformarlo da così a così. Wow!
Venite, venite che vi mostro. Avete presente che prima vi ho fatto creare questa cartella vuota homepage data? Bene, ora se mi ci sposto dentro non è più vuota perché il container ci ha scritto le proprie cose, i file di configurazione che io posso andare a modificare manualmente per andare a personalizzare ogni aspetto grafico o funzionale di questa dashboard. Per prima cosa andiamo a modificare le impostazioni.yaml. Qui è abbastanza vuoto, ma attenzione, tutte le cose che possiamo modificare sono documentate a questo link. Spoiler, c'è davvero davvero tantissima roba e intendo proprio tanta. Vi faccio riassunto. Qui ci voglio andare a mettere title, il mio nome, e poi specificare un background. L'immagine può essere qualsiasi cosa, basta che sia un link da internet o comunque raggiungibile da un browser web. Poi ovviamente questa roba qui messa così non è il massimo della resa perché c'è poco contrasto. Quindi specifichiamo un blur XL per farlo bello grosso. Saturiamo al 50%, luminosità al 25% e opacità al 40%. Sì, questa roba viene dalla documentazione. No, non mi sono inventato niente. La cosa ricarica immediatamente e già cominciamo ad esserci. Tra l'altro, se siete psicopatici abbastanza, potete anche utilizzare il tema light. Non so a chi dovrebbe piacere una cosa che spacca gli occhi ed è pure discutibile, ma dei gusti non si discute. E voilà, ora che l'abbiamo resa socialmente accettabile, andiamo ad aggiungere qualche servizio.
In questo caso andrò a modificare services.yaml e al posto di questi tre gruppi predefiniti ci vado a mettere, come vedete, la sintassi è estremamente semplice. Hai il nome del servizio, una descrizione e un link. L'icona è una cosa interessante perché, come vedete, non c'è un link preciso all'icona, ma semplicemente visitando questa pagina vi spiegano nella documentazione ufficiale che puoi utilizzare le icone da questo repository e sostanzialmente qui basta che cerchi il nome dell'applicazione che vuoi, tipo vikungia, eccolo, trovi in formato PNG, SVG, eccetera eccetera e si chiama esattamente così. Quindi se avete un dubbio su come si chiama l'applicazione, generalmente è proprio paro paro il nome, ma eccolo lì, se li va a prendere in automatico. La cosa veramente pazzesca, però è che sono riuscito a trovare l'icona per qualsiasi applicazione, anche non eccessivamente famosa, e non mi aspettavo di trovarcelo. E quindi andare ad aggiungere una nuova categoria o un nuovo servizio una alla volta è abbastanza semplice. Eh sì, ma che palle. Già vi sento nei commenti che gridate "Ma che razza di launcher è? Non può trovare da solo le applicazioni da lanciare?" E sì, in realtà può. Non dovete necessariamente inserire tutte le vostre applicazioni una per volta perché il trucco è quando deployate una nuova applicazione con Docker tramite il classico Docker Compose e andare ad aggiungere nel compose alcune label specifiche per Homepage. Questo dirà di creare un gruppo, se non esiste già chiamato personal staff. Io che so la chiamo analisi dati. Scegliamo il nome, l'icona e l'indirizzo a cui dovrebbe essere raggiungibile. Così diventa parte integrante della configurazione del vostro servizio nel momento in cui lo installate. Così è molto più semplice, no? E a quel punto, quando lancio il docker compose up del servizio in questione, eccolo che magicamente appare nella sua categoria che a quanto pare andava specificata senza gli apici. Ed eccolo qui, running, tra l'altro raggiungibile con un click, come al solito. Voilà.
Ma come funziona? Come fa a trovare quali container sono in esecuzione? Ricordate che in fase di installazione di Homepage ho detto di fare attenzione a questo passaggio. Qui stiamo mappando il socket di Docker all'interno del container di Homepage, dando di fatto accesso in sola lettura, in questo caso notate i due punti ro a questo container per poter vedere tutte le risorse su Docker. E quindi sì, Homepage in esecuzione in questo container può vedere tutte le risorse su Docker e quindi i container etichettati per comparire sulla Homepage. Appunto. Però questi non compariranno in automatico a meno che non glielo diciate all'interno del file docker.yaml nella famosa cartella homepage data. Qui abbiamo due modi per collegarci a Docker, tramite indirizzo IP e porta oppure tramite il socket. E io ho scelto quest'ultima modalità. Quindi vi basta decommentare questo pezzo e voilà. Qualunque cosa lancerete con Docker e sia etichettata vi comparirà qui o in altre sezioni, ma c'è una chicca che non vi ho ancora mostrato. Per ciascuna di queste applicazioni aggiunte in questo modo, possiamo anche mostrare l'utilizzo delle risorse di ciascun container. Andando a modificare settings.yaml, quello di prima. Sì, dove ho aggiunto un paio di robette così. Qui possiamo aggiungere show stats true e guardate che effetto fa. Voilà. CPU, memoria e trasferimento dati in rete. Ovviamente, come al solito, lo può fare perché questi sono servizi che girano su Docker e lui ha accesso all'intero stack Docker.
Ok, Morro, molto bello, ma fino a qui è solo l'ennesima dashboard per lanciare applicazioni. E qui arriva la parte più interessante, i widget. Io non so dirvi quanti sono, ce ne sono troppi e ci potete monitorare la qualunque. Da roba specifica per Kubernetes fino alle cose più generiche, il meteo e quant'altro. Grafana, Gotify. Ah, c'era anche il widget per Grafana. Ok. Cercate il vostro applicativo preferito o sistema o qualunque e probabilmente lo troverete. Configurazione di un widget è da quella di un servizio, si fa sempre nel file services.yaml. Magari vado qui in fondo e aggiungo una sezione Homelab, sempre titolo, descrizione, icona, però stavolta vado a specificare un campo widget e poi ovviamente qui il tipo deve essere uno dei tipi documentati al link precedente, tipo per OpenSense ho cercato e ho trovato questo, copia incolla e ci metti le tue credenziali. Fatto. La cosa interessante è che questi widget possono essere cliccabili oppure no. Se voi mettete anche un href come campo assieme a questo, questo e questo, allora diventano cliccabili e tante volte coinciderebbe con l'indirizzo dell'URL. Quindi, che so, per PVE basterebbe fare così e voilà, ora è anche un widget cliccabile che ti porta alla homepage di Proxmox. Tutto questo è molto ben documentato sul sito di Homepage che comunque alla fine è una raccolta di snippet che potete utilizzare copia incolla per visualizzare i vostri servizi preferiti. Questo è facilmente raccomandabile ed è uno dei servizi che potreste anche installare per primi nel vostro Homelab.
Ma magari state pensando bello tutto, ma io uso Kubernetes, Docker non va più di moda. Bene, Homepage gira anche su Kubernetes e qui è ancora più utile. Per installarlo basta seguire la guida ufficiale sul sito, ma per chi non avesse voglia vi lascio il wrap di questo video assieme ai file di Manifest sul mio Patreon. Nel frattempo verifichiamo che tutto sia andato a buon fine. Voilà. Ok, è anche in alta disponibilità. A che indirizzo è disponibile? A questo indirizzo qui. Perfetto. E questo è come si presenta. Notate prima di tutto che ognuno di questi servizi è aggiunto tramite l'autodiscovery. Ahia! Questo è giù. Ma soprattutto notate che abbiamo le risorse raggruppate a livello di cluster oppure dei singoli nodi, così posso facilmente accorgermi per cluster ridotti se qualcuno di questi nodi è un po' tirato per il collo, tipo lui, ma neanche troppo. Non che sia troppo un problema, intendiamoci, perché in teoria se ho fatto le cose fatte bene, dovrebbe da solo eccetera eccetera. Ma questo potrebbe essere il sistema più semplice in assoluto per avere un surrogato di monitoraggio a livello estremamente base anche su Kubernetes, almeno per dire "Ok, il mio cluster è per il collo" oppure "c'è ancora spazio".
Anche su Kubernetes l'autodiscovery funziona con le annotazioni che stavolta vanno messe nell'ingress del servizio in questione. Questo è un esempio minimo funzionante, giusto per illustrare come ho fatto. Abbiamo l'ingress con quelle annotazioni, un service cluster IP, il namespace e il deployment che dice vai ad avviare tre repliche questa applicazione che sarebbe l'Hello World di Engine X, l'immagine Docker, quella lì. Quindi nel momento in cui faccio anche l'apply di questo qua, voilà, me lo va a mettere nel suo namespace Hello World. Tutte le cose appena definite sono in esecuzione e ora anche su Homepage compare al volo. Eccolo qui, l'Hello World. Posso cliccarlo. Voilà. Tic, tac, comodo, poco da dire. E questo era Homepage. Ora ho tutto lì dentro e a portata di click. Se usate Docker impiegherete pochi minuti per installarlo. Se usate Kubernetes avrete già sofferto abbastanza, quindi vi lascio tutti i manifest di cui avete bisogno su Patreon. E voi cosa usate per tenere le fila del vostro Homelab? Fatemelo sapere nei commenti. Comunque per ora questo è tutto e noi ci vediamo al prossimo video. [Musica]