Qui descriviamo il setup del sistema operativo per far girare il mio server.
Il primo passo è stato installare uno store per scaricare i componenti necessari. La scelta è ricaduta su F-Droid.
Da qui ho scaricato l'app Termux che mi offre un terminale Linux in maniera molto semplice. Ho anche installato l'estensione Termux:Boot per far caricare i nostri servizi a boot time.
Ho installato, tramite il package manager, il server OpenSSH, per connettermi da remoto, e l'emulatore qemu. Questo perché creeremo una VM in architettura x86 che girerà in background che ci farà da server. In questo modo non avremo neanche bisogno di ottenere i permessi di root sullo smartphone.
Può sembrare uno spreco di risorse ma in realtà qemu è talmente leggero che l'overhead è minimo. Inoltre, da documentazione letta in rete, anche l'uso dell'architettura x86 anziché ARM è seamless e ci risparmia parecchie difficoltà legate alla compatibilità dei software.
La virtual machine qemu viene avviata a boot time da Termux, che si occupa anche di caricare il demone ssh e di instradare il traffico ssh verso la macchina virtuale.
Il server su VM è basato su Alpine Linux e sfrutta 4 degli 8 core dello smartphone, oltre a 2,5Gb di RAM. E' stato costruito con una immagine di boot da 3Gb per il sistema operativo più una seconda immagine di storage da 25Gb. Su questa VM è installato Docker che ci consente di far girare varie applicazioni in differenti container isolati.
Il sistema è stato hardenizzato utilizzando una delle varie guide presenti online per rendere sicuro il proprio server Linux e sono stati utilizzati tutti gli accorgimenti di sicurezza possibili per evitare "brutte sorprese".
Sul sistema a container sono installati diversi prodotti di monitoraggio, il tutto supportato da un reverse proxy Caddy per la gestione dell'https (sia interno che esterno) e il rinnovo automatico dei certificati.
In più, sullo stesso server, oltre a questo sito, sono presenti alcuni servizi di utilità che non vengono esposti su Internet, cosa resa possibile proprio dalla containerizzazione e dalla segregazione offerti da Docker.
AI Website Builder