WIP

HomeServer-Proxmox VE #TODO

2014 - 2017

Nel 2014 ho acquistato il mio primo Raspberry Pi e ho iniziato a stuzzicare con Linux. Il mio primo server è stato creato usando Nas4Free (basato su BSD) dove ho scoperto l'utilità di un NAS. Inoltre un po' di tempo dopo con un vecchio portatile ho messo su un server torrent dato che avendo una connessione ADSL da 20 mega scaricare la robba serviva un sacco di tempo.

2017 - 2018

Verso la fine del 2017 è arrivato la fibra FTTC di Tim (Truffa italiana modernizzata) per sostituire l'ADSL della Infostrada. Con il nuovo router sono finalmente riuscito ad aprire le porte a internet e come primo progetto ho reso un semplice sito accessibile al web. Inizialmente ho usato il dominio di DynDNS, ma dopo sono passato ad un dominio gratuito .tk e usato CloudFlare come server DNS. Tra i servizi che ho hostato oltre al webserver ci sono PiHole, server VPN e un paio di bot di Telegram.

Da subito sono emerse le limitazioni di usare un semplice Raspberry come server, lo spazio disponibile era basso (32 GB sd card) e la RAM era poca (1GB). Inoltre non potevo saturare la velocità della connessione FTTC dato che la porta del Pi era limitato a 100 mbps. Inoltre spesso installando vari servizi emergevano conflitti e sistemare il casino creato era molto complicato.

2018 - 2020

Cercando soluzioni alle limitazioni del Raspberry Pi mi sono imbattuto nel concetto di virtualizzazione e quindi dopo varie ricerche ho deciso di voler installare un hypervisor sul mio server. Come hypervisor ho deciso di usare Proxmox VE.

Perchè Proxmox VE e non Windows/Linux?

Proxmox VE è basato su Debian (Che è linux), è gratuito e ha un webUi integrato da cui si possono accedere a molte funzionalità base. Out of the box supporta ZFS che è un fs spettacolare con supporto nativo a snapshots, checksumming e software raid. Proxmox supporta sia macchine virtuali KVM sia contenitori LXC che sono simili ad una VM però condividono il kernel con l'host e quindi hanno bisogno di pochissime risorse. 

Siccome Proxmox richiede un server con processore CISC x86, ho acquistato un Intel NUC nuc6cayh, con un Celeron J3455 e 8 GB di RAM. Un grosso upgrade in confronto al Raspberry Pi.

nuc.jpg

Con il nuovo server inoltre ho esplorato nuovi orizzonti e testato software come PFSense per avere un assaggio di cosa un vero router possa fare.

Docker vs Proxmox

Docker di per se è solo un sistema di container, di default non ha molte funzionalità e tutti i container da design dovrebbero essere stateless e quindi se installo un software dentro devo fare il bind mount di ogni cartella in cui il software salva dati altrimenti alla ricreazione del container tutti i dati saranno persi. Per ovviare a questo problema potrei usare container pre configurati da terze parti come linuxserver.io ma preferisco di no. Inoltre con Docker non si ha la possibilità di avviare sistemi operativi con kernel non linux e quindi niente macchine virtuali con Windows o BSD. Proxmox invece supporta sia VM che CT e posso tranquillamente installare Docker in un CT o VM ottenendo l'accesso quindi ad entrambe le tipologie di container. Tra le feature di Proxmox che mi risultano molto comode ci sono il passthrough di schede PCI (e) incluse schede grafiche e controller usb. Il backup automatico di VM e CT con compressione zstd e il supporto nativo a ZFS.

2020 - 2022

Dopo aver provato PFSense ho deciso di acquistare dell'hardware SOHO, un Edgerouter X e un UniFi AC-M per esattezza. Ho separato la rete di casa in VLAN e creato una rete IoT.

Verso la fine del 2020 sono arrivato al limite di quello che un piccolo Intel NUC è capace. 8 GB di RAM non è abbastanza per le macchine virtuali e avevo diversi dischi usb collegati che rendeva tutto un casino. Così usando pezzi di un fisso vecchio vecchio ho montato il mio nuovo server con Ryzen 1600 e 32gb di RAM. Una buona parte della RAM è utilizzato dalla ARC di ZFS (una specie di cache). 

image-1650325231425.jpeg

Cosa ha di speciale ZFS

E' un file system molto potente Copy on write e quindi in caso di interruzione di corrente è difficilissimo perdere dati. Con la funzionalità di Scrub riesce ad analizzare il disco e identificare casi di bit rot e correggerlo (in caso ci sia la ridondanza). Supporta nativamente i snapshot e supporta anche la compressione (gzip, lz4 e ztsd). Con ZFS è possibile "unire" (software raid) più dischi per ottenere ridondanza e/o aumentare le prestazioni dei dischi. L'unico difetto, non presente nei fs alternativi come btrfs, è la impossibilità di estendere i vdev che però verrà risolto nelle prossime versioni.

image-1650325289743.jpeg