Self-hosting: perché e come cominciare

23/06/24 | ~ 10 minuti

Oh my cloud!

Siamo assuefatti dalle comodità del cloud, ma di cosa si tratta veramente?
Niente di più che computer (o meglio server) situati in qualche parte nel mondo, dove abbiamo la possibilità di immagazzinare dei dati e fare delle richieste in veste di client.

Usando qualsiasi servizio di cloud storage ci limiteremo a copiare i nostri dati sui server di un'azienda, con la possibilità di accederci attraverso il browser e/o programmi specifici.
Anche servizi differenti dal banale upload/download di file e cartelle (email, calendario, sincronizzazione contatti...) si basano sullo stesso principio: tutto gira sui dispositivi di qualcun altro.
Facile, sì; ma niente nuvole, nessuna magia.

Cosa mai potrebbe andare storto?

In primis si tratta di privacy.
Senza l'attuazione di specifiche strategie di crittografia (da parte dell'utente o del fornitore di servizi), tutto ciò che viene spedito nel cloud può essere potenzialmente consultato da chiunque abbia accesso ai server dell'azienda scelta.
In questo scenario non manca nemmeno la possibilità che i dati vengano scansionati regolarmente da software di intelligenza artificiale.
Proprio di recente ci sono state notizie di errori da parte di sistemi AI su note piattaforme di storage, con segnalazioni automatiche alle autorità per materiale considerato pericoloso, ma in realtà del tutto innocuo.
Non tutti i paesi dove sono ospitati i server, per di più, sono regolamentati da leggi efficaci per la protezione dei dati personali (come il GDPR europeo).

Poi si può parlare di controllo.
Avere il controllo dei propri dati implica la possibilità di gestirli in completa autonomia. Il materiale che si trova in cloud, invece, è strettamente legato all'hardware e alla volontà del fornitore.
Se una mattina qualcuno si svegliasse e decidesse che il servizio che usate da anni non fosse più abbastanza redditizio per tenere in piedi i suoi server, potreste fare ben poco per impedirne la chiusura, magari con scarso margine di preavviso per recuperare i vostri dati. Anche eventuali guasti o attacchi mirati vi lascerebbero interdetti.

Se come me vi sta a cuore la salute del pianeta, poi, sappiate che un continuo scambio di dati tra client e migliaia di server dislocati sul globo, dopotutto non è una pratica così sostenibile.

Keep calm and siate consapevoli

Un po' come quando si usa software closed source, non esiste un'equazione matematica per cui affidarsi al cloud tradizionale significhi necessariamente perdere la sovranità sui propri dati. Non è detto che ci sia qualcuno interessato e con il tempo adeguato per curiosare nelle vostre foto delle vacanze, magari rischiando sanzioni; una grande multinazionale potrebbe avere sistemi di sicurezza che mai riuscireste a replicare in casa vostra.
Non deve esserci per forza del marcio
; proprio per questo non punto il dito contro nessuno in particolare.

Si tratta di consapevolezza.
Copiare o trasferire informazioni su un server remoto espone a dei possibili rischi.
Un'altra consapevolezza dovrebbe essere quella che esistono degli strumenti con cui provare a limitare le eventuali criticità del cloud tradizionale, seppur a volte dotati di meno immediatezza rispetto alle soluzioni più famose.

Provider privacy oriented

Seppur non si tratti di un vero e proprio self-hosting, esistono alcuni provider che (almeno sulla carta) sono più orientati alla privacy.
Di solito viene garantita una crittografia end-to-end, con i dati decrittati solo sui dispositivi dell'utente e non accessibili per altri; personalmente tendo a preferire chi usa server ospitati in Europa, meglio se alimentati da energia rinnovabile.

I nomi che mi vengono in mente ora (in ordine alfabetico):

VPS + VPN

Qui inizia il vero self-hosting, in quanto bisogna per forza di cose cominciare a sporcarsi le mani per installare e configurare i servizi necessari su un proprio server.
Trattandosi di piccole porzioni di server remoti (macchine virtuali) da affittare, i VPS (Virtual Private Server, server privati virtuali) hanno un costo, ed una serie di pro e contro.
Affidandosi ad una infrastruttura ben collaudata, ci saranno pochi problemi di rete e si otterrà facilmente un indirizzo IP statico come identificativo da poter raggiungere ovunque.
Allo stesso tempo, però, la scelta delle distribuzioni da utilizzare sarà (di solito) limitata alle più note.

Sebbene un VPS sia più facile da mettere in sicurezza (con delle buone pratiche di hardening il provider dovrebbe avere solo la possibilità di ripristino/cancellazione, ma non di accesso ai dati), si tratta pur di sempre di una forma di cloud su hardware di terzi.
Per non essere costretti al solo accesso SSH/SFTP (sempre garantito e comunque potenzialmente sufficiente per lo storage), ci sarà sicuramente bisogno di installare un server VPN (di cui parleremo nel paragrafo successivo), per evitare di esporre troppo il VPS.

Server + VPN locale

Lo step successivo è quello di usare le VPN (Virtual Private Network, reti virtuali private) per il vero scopo per cui sono state pensate: collegarsi da remoto ad una rete locale.
A casa o in azienda si sceglie una macchina che faccia da server VPN, al quale si potranno collegare dei client, in qualsiasi rete essi si trovino. A questo punto sarà come trovarsi fisicamente all'interno della LAN di destinazione.
Per tornare al funzionamento delle VPN commerciali, volendo potreste anche navigare su internet usando l'indirizzo IP pubblico della rete del server VPN, previa configurazione del cosidetto IP fowarding.
La natura stessa della VPN implica che lo scambio di dati tra client e server avvenga attraverso un tunnel crittografato e non accessibile dall'esterno.

Il protocollo VPN che sta diventando uno standard de facto è Wireguard, tra l'altro integrato nel kernel Linux; moderno, veloce e sicuro. La procedura di installazione potrebbe variare a seconda della distro, ma in genere è il pacchetto wireguard-tools l'unico necessario alla inizializzazione e configurazione della VPN.

Purtroppo allestire un server locale con annessa VPN non è una pratica così scontata da mettere in atto.
Se il vostro provider internet non fornisce un IP statico, cosa che per i contratti casalinghi spesso avviene solo su richiesta e non sempre gratuitamente, bisognerà trovare degli espedienti per rendere un dispositivo sempre raggiungibile ovunque vi troviate (nei link a fondo pagine qualche risorsa per approfondire).

Il server VPN necessita almeno di una porta aperta sul router, quindi bisogna necessariamente avere accesso al suo pannello di configurazione (oltre che eventualmente editare delle regole sul firewall software/hardware). Esporre direttamente le porte dei servizi senza passare da una VPN resta una pratica fortemente sconsigliata.
Per una configurazione ottimale bisognerebbe pensare anche ai certificati https, un po' complessi da ottenere senza acquistare un dominio.

Per cominciare

Per iniziare consiglio di installare in qualche sua forma DietPi con un'instanza di Nextcloud.
Che sia su un Raspberry (la morte sua!), su macchina virtuale o su uno dei tanti dispositivi con architetture diverse supportati da questa distribuzione, vi troverete con una derivata di Debian aggiornata e con tantissimi script che facilitano la configurazione delle principali applicazioni per server.
Ci sarà da mettere mano al terminale, questo si, ma con una buona documentazione da consultare ed "interfacce" tui comunque amichevoli.

Al principio concentratevi sulla vostra rete locale e non pensate subito ad uscire su internet. In questo modo potrete acquisire conoscenza e sicurezza in ambito self-hosting, evitando molte rogne; ci sarà tempo per studiare i modi migliori per esporre sul web il vostro server personale.

[user@dajelinux ~]$ dajelinux --per-approfondire

Il mondo del self-hosting è fatto da decine di programmi che svolgono compiti professionali, offerte gratuitamente e con codice aperto. Una donazione per sostenere gli sviluppatori, quando possibile, è sempre buona cosa.