Chi di voi non ha mai sentito la parola server ? Anche se sembra un parolone, alla fine non è nient'altro che un PC, solo che spesso il sistema operativo non ha abilitata/installata un'interfaccia grafica e i software in bundle sono minimi.
Per HomeLab si considera un ambiente domestico (ma dai?) dove si sperimentano servizi e strumenti informatici in "sicurezza" su uno o più computer connessi alla rete. Essenzialmente è un modo per imparare cose nuove e divertirsi in modo diverso 😎.
Non c'è bisogno per forza di un PC con componenti di ultima generazione, basta avere uno o più Raspberry Pi 🐒.

Si va beh, e quindi?

Niente, era un'introduzione per chi non mastica l'informatica. So che molti di voi sono già navigati, quindi andrò dritto al sodo.

Il risultato che otterrete una volta finito di leggere il post

Introduzione

Qualche anno fa sorse in me l'irrefrenabile e inutile bisogno di avere un secondo PC dentro casa che svolgesse compiti infami, come quello di scaricare e catalogare file non protetti da copyright ed esporre un servizio personale in stile Netflix.

Per giustificare la messa in atto dell'operazione, decisi anche che il secondo PC avrebbe dovuto ospitare un sistema di backup per i miei file e che il mio PC personale non avrebbe più subito la presenza indesiderata di alcun Hard Disk, ma avrebbe avuto a disposizione solo SSD per l'installazione dei sistemi operativi che uso di frequente (Arch Linux, Windows 10 e MacOS).

Iniziò quindi il bel momento in cui si apre Amazon e si inizia a fare la lista della spesa, e dopo estenuanti calcoli quantistici alla ricerca della spesa minore per la resa maggiore, calcolando prezzi di spedizione, inflazione, cambio del dollaro, dogana e tempi di spedizione, si fa l'ordine.

Alla fine decisi di essere magnanime con il mio conto bancario e spendere il meno possibile: avevo già a disposizione CPU, RAM, scheda madre, case e alimentatore.

La build completa

  • CPU: i5 2500k i7 2600, per il supporto del VT-D e 4 core logici in più;
  • MoBo: Asrock Extreme3 Gen3;
  • Ram: 24GB DDR3 di banchi mixati, ma tutti con le stesse memorie, frequenze e CL;
  • Case: Cooler Master Midi fuori produzione dal 2000ac;
  • PSU: generico 80plus;
  • HDDs: 1x4TB WD Red, preso nuovo e 2x1TB Seagate Barracuda rimediati dal mio PC;
  • SSD: 1x256GB Samsung 830 Pro demandato al caching;

Oltre questo, è presente una penna USB Sandisk Cruzer da 16GB per l'installazione del sistema operativo e un NIC con chipset Intel e 4x1Gbps porte.

Il Software

Lo step successivo fu quello della scelta del sistema operativo. Iniziai con Ubuntu Server per via della community per poi passare a Freenas, basto su FreeBSD, per via dell'utilizzo che dovevo farne per poi fermarmi ad unRaid, perchè dal mio stupidissimo punto di vista, è migliore di Freenas.

unRaid è un sistema operativo basato sulla distro slackware. Per utilizzarlo bisogna pagare una licenza in base al numero di dischi che si vogliono installare (39$ per 6 dischi) e non è open source. La community è veramente grande e gli update sono molto frequenti.

Le caratteristiche per cui credo che sia un sistema validissimo per uso domestico/ufficio:

  • È basato su Linux;
  • È un prodotto commerciale, il che significa che l'attività delle persone che ci lavorano dipende dall'affidabilità del software e del suo funzionamento;
  • Integra KVM;
  • Supporta nativamente Docker, con tanto di interfaccia web per la gestione e l'installazione dei containers;
  • Supporta BTRFS e XFS;
  • come da nome, non sfrutta nessun tipo di RAID.

Il bello di unRaid è proprio che è possibile aggiungere dischi senza dover ricreare il pool. Vuoi iniziare con un solo disco e poi aggiungerne altri? Puoi farlo.
Vuoi iniziare senza parity drives? Puoi farlo e aggiungerne successivamente oppure non utilizzarne affatto.

Ogni parity disk garantisce il recupero di un hard disk che fallisce. Dal momento in cui un hard disk fallisce, basta toglierlo e inserirne uno nuovo.

Se volete approfondire il discorso dei parity disks, guardate il video di SpaceInvader One qui sotto:

Installazione di unRaid 🐒

L'installazione è a prova di scimmia: basta scaricare il tool per creare l'usb bootabile da qui, lanciare l'applicazione, personalizzare (se si vuole) le impostazioni di rete e clickare su write.

unRaid USB GUI

Si dovrà poi infilare l'usb drive nel PC al primo tentativo e avviare il sistema, selezionandolo come dispositivo di boot dal bios.

Una volta avviato, potete seguire la documentazione ufficiale perché non voglio offendere la vostra intelligenza: l'installazione è davvero semplice e non ho la presunzione di conoscere il sistema meglio dei suoi creatori 😆. Se mai vi venisse in mente di provare unRaid su un vostro vecchio PC e avete problemi, non esitate a contattarmi su Facebook, via e-mail o semplicemente nella sezione dei commenti quì sotto!

L'Interfaccia

L'interfaccia web di unRaid è piuttosto semplice e basilare, ma permette di fare tutto (o quasi):

Interfaccia web di unRaid

Tramite il navbar nell'header è possibile navigare i vari menù, e nella Dashboard tenere sotto controllo i servizi attivi e il carico di lavoro attuale.

Docker e i suoi Containers

Perché creare VM, che sono pesanti e rubano risorse al sistema, quando è possibile utilizzare Docker? Una volta abilitato, consiglio vivamente di installare il plugin Community Applications. Sarà poi possibile scaricare dei templates creati appositamente per unRaid per installare i containers disponibili nel plugin.
Se nei repository ufficiali di Community Applications non è disponibile il container che vi interessa, potete tirarlo giù da Docker Hub e modificare il template generato da unRaid prima dell'installazione.

Qui di seguito uno screenshot di esempio di un template per piHole, che è stato il primo container che ho installato nel mio sistema.

piHole unRaid Template

Esempio: Media Server

Esce la nuova puntata di GoT, la cerchiamo e la scarichiamo legalmente, perchè abbiamo in casa il Blu-Ray inedito con le puntate non ancora uscite regalatoci direttamente da George R.R. Martin ma non abbiamo un lettore brd. Magari la release esce alle 3 di notte, mentre dormiamo. Se facciamo parte della categoria fan hardcore, aspettiamo le 3 di notte, la scarichiamo e ce la guardiamo.
Se facciamo parte della categoria furbi, automatizziamo questo processo ripetitivo e noioso.

Il setup questa volta è "abbastanza" semplice se si conosce il funzionamento di Docker.

In stile Giovanni Muciaccia, la lista del necessario:

  • Un container con client Torrent. La mia scelta è qBittorrentVPN, manutenuto da Binhex;
  • A scelta, un media server fra Plex, Emby o Jellyfin;
  • Un download manager. Personalmente mi trovo bene con Medusa, ma anche Sickchill va bene. Sono tutti fork di Sickrage.

Una volta configurato tutto, avrete Medusa che si occuperà di scaricare i torrent delle serie tv che vi interessano, controllando anche l'uscita delle nuove puntate. Sputerà il torrent a qBittorrentVPN e se avete una vpn a disposizione, il download sarà anonimo. Al completamento del download, Medusa processerà i file scaricando i metadata, rinominerà i file e li sposterà nella cartella dei media (in modo ben ordinato) di Plex/Jellyfin che si occuperanno di proporvi il vostro Netflix home made, pieno di film e serie tv scaricati in modo completamente legale. Vi lascio due screenshots per invogliarvi 🤖

Medusa
Plex

Non avete bisogno per forza di unRaid per mettere su qualcosa del genere. Basta anche un Raspberry Pi (consiglio il 3b+) con Raspbian.
Se volete usare Docker potete benissimo farlo. Consiglio di utilizzare Portainer per avere la situazione un po' più sotto controllo. Se invece volete essere prepotenti con voi stessi, usate la riga di comando (dovrete farlo lo stesso) per installare e configurare tutto:

docker run --privileged  -d \
              -v /your/config/path/:/config \
              -v /your/downloads/path/:/downloads \
              -e "VPN_ENABLED=yes" \
              -e "LAN_NETWORK=192.168.1.0/24" \
              -e "NAME_SERVERS=8.8.8.8,8.8.4.4" \
              -p 8080:8080 \
              -p 8999:8999 \
              -p 8999:8999/udp \
              markusmcnugen/qbittorrentvpn


Fine

In realtà non c'è fine a quel che può fare un server dentro casa. Nei prossimi articoli spiegherò in dettaglio come ho configurato il mio media server, per il momento credo di essermi dilungato fin troppo 🙌.

Spero di non avervi annoiato, bye 👋.