NAS in Cloud
Ho già detto che il male assoluto è il NAS in CLOUD ?
Probabilmente si, però state tranquilli, non è il solo male.
Il nas in cloud non è l’unico cancro a questo mondo, infatti come il nas in cloud ne esistono tanti altri, ma oggi voglio realizzare un progettino di NAS in cloud non malato di cancro.
Ebbene si, configurerò un nas gestito in privato, ovvero con mezzi propri, all’interno della propria struttura.
Mai dimenticare che siamo nati nudi perchè siamo nati liberi, è il mondo in cui viviamo che ci rende schiavi, ma con un minimo di intelletto possiamo rimanere liberi.
Liberi di pensare e liberi di agire.
Preparazione del sistema base
Per un corretto funzionamento abbiamo bisogno di:
Harddisk tradizionale di buona qualità;
usbdrive;
piccolo ssd;
una CPU anche se di modeste prestazioni, possibilmente FANLESS (io ho usato una APU2 sostituendo la usbdrive con una SD da 512BM).
In questo mio precedente articolo spiego come installare il sistema operativo senza farci “FOTTERE” i dati.
L’USB DRIVE o scheda SD lo formattiamo in EXT4 e conterrà la /boot;
Il piccolo SSD lo useremo in seconda battuta;
Mantre sul disco enorme installeremo il sistema operativo.
Dopo aver installato la Devuan, sistema operativo a cui è stato estirpato il cancro chiamato systemd, la aggiorniamo a BEOWULF, quindi passiamo una onesta piallata al piccolo SSD (senza esagerare, ogni piallata è un colpo al cuore), con il comando shred.
Terminato il piallamento lo formattiamo in luks con una adeguata passphare, quindi lo apriamo in MAPPER e lo formattiamo in xfs.
A questo punto travasiamo il sistema operativo dal disco enorme al disco MAPPER, istruiamo il grub e rebootiamo la macchina, se tutto è andato per il meglio la macchina parte in modalità cifrata.
Diamo una bella piallata anche al disco enorme, formattiamo in luks e cominciamo la vera e propria installazione del nostro NAS.
Installazione del software NAS
Per questo progetto installeremo NEXTCLOUD.
cominciamo con il software di controrno
~ # apt install vim mc rsync sshfs tree
Adesso andiamo ad installare il server apache2, il database ed i relativi moduli di php
~ # apt -y install unzip wget apache2 mariadb-server mariadb-client php php-{cli,xml,zip,curl,gd,cgi,mysql,mbstring} php7.3-intl libapache2-mod-php
VAIII !!!
Con un solo colpo abbiamo installato tutto il necessario.
Passiamo alla configurazione del nostro NAS in cloud.
~ # mysql_secure_installation
La password di default è nulla, quindi premiamo invio, di conseguenza andiamo a settare una buona password per root, quindi inibiamo la connessione al DB dal remoto e rimuoviamo i DB di esempio. Quindi ricarichiamo la configurazione.
Impartendo il comando mysql -uroot si nota che root si connette ancora senza password ma possiamo inibire l’accesso a root anche da locale senza la password.
creiamo il file pwdlocalroot.bd in questo modo:
~ # cat <<EOF >pwdlocalroot.bd
use mysql;
update user set plugin=” where User=’root’;
flush privileges;
EOF
Adesso importiamo nel database le direttive
~ # mysql -uroot <pwdlocalroot.bd
Andiamo a creare l’accesso al nostro NAS in cloud
~ # cat <<EOF >NAS.db
CREATE USER ‘nascloud’@’localhost’ IDENTIFIED BY ‘PASSWORD’;
CREATE DATABASE nascloud;
GRANT ALL PRIVILEGES ON nascloud.* TO ‘mycloud’@’localhost’;
FLUSH PRIVILEGES;
EOF
Chiaramente al posto di PASSWORD ci va una password decente.
Niente paura a lasciare il file delle password sul disco, il nostro nas ha il disco cifrato, quindi a meno di non aver scelto PIPPO come passphrase, leggere quel file è la cosa più difficile al mondo dopo il capire le donne.
Carichiamo il file nel nostro DB
~ # mysql -uroot -p <NAS.db
Questa volta abbiamo aggiunto -p ovvero richiesta di password, senza la richiesta di password, root non potrebbe accedere al db, quindi fallirebbe miseramente.
Andiamo a scaricare il software di nextcloud, il software che useremo per far girare il nostro nas.
Installazione nextcloud
~ # wget https://download.nextcloud.com/server/releases/latest-18.zip
Quindi lo esplodiamo
~ # unzip latest-18.zip
Se possediamo ip dinamico dobbiamo procurarci un DNS dinamico, in questo precedente aricolo spiego come fare e come configurarlo, verso la fine dell’articolo si trova: Configurazione del servizio di DNS Dinamico, se abbiamo un ip statico dobbiamo procurarci un nome a dominio, anche di 3, 4, sessantesimo livello, ma serve un nome a dominio, a meno che non si voglia rinunciare ad un nome e al https; in questo caso basta collegarsi al proprio ip ed il gioco è fatto, ma è una porcata degna di systemd.
Configurazione di HTTPS
Se vogliamo fare gli splendidi compriamo un certificato figo, al contrario se siamo modesti, ed io lo sono, usiamo un certificato gratuito let’s encrypt. Una raccomandazione che mi sento di fare è quella di prodigarsi in un’ offerta economica, seguendo questo link: https://letsencrypt.org/donate/. Una struttura come let’s encrypt si regge anche grazie alle offerte.
Ottenimento dei certificati
Come prima cosa dobbiamo fermare il webserver
~ # /etc/init.d/apache2 stop
Installiamo nginx e lo script che aggiorna i certificati
~ # apt -y install nginx certbot
Quindi richiediamo il vero e proprio certificato
~ # certbot certonly –standalone –rsa-key-size 4096 -d ESATTONOMEDIDOMINIO.TLD
L’ideale sarebbe registrarsi un dominio .cloud, con pochi spiccioli si può fare.
Quindi rispondiamo correttamente alle domande.
Giunti a questo punto, facciamo ripartire il webserver
~ # /etc/init.d/apache2 start
Configurazione del web server
dentro /etc/apache2/sites-available creiamo in file dal nome del nostro dominio con estensione.conf.
Supponendo che il mio nome a dominio sia sonfelice.dibrigida.it andremoa a creare il file sonfelice.dibrigida.it.conf
~ # cat << EOF >/etc/apache2/sites-available/sonfelice.dibrigida.it.conf
<VirtualHost *:443>
DocumentRoot /var/www/NAS
ServerName sonfelice.dibrigida.it
<Directory “/var/www/NAS”>
allow from all
Options None
Require all granted
</Directory>
SSLCertificateFile /etc/letsencrypt/live/sonfelice.dibrigida.it/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sonfelice.dibrigida.it/privkey.pem
</VirtualHost>
EOF
Chiaramente al posto di sonfelice.dibrigida.it ci va il nome del dominio scelto.
Andiamo in produzione
Aggiungiamo il nuovo dominio e abilitiamo il modulo ssl.
~ # a2ensite sonfelice.dibrigida.it
Il sito è aggiunto
~ # a2enmod ssl
Il modulo è aggiunto
~ # /etc/init.d/apache2 restart
Il server è ripartito.
Muoviamo la directory nextcloud in /var/www/NAS
~ # cd
torniamo nella root, qualora ci fossimo spostati per qualche motivo
~ # mv nextcloud/ /var/www/NAS
ci siamo quasi, dobbiamo solo sistemare i permessi
~ # chown www-data:www-data /var/www/NAS/ -R
Questo imposta il proprietario e il gruppo a www-data della directory NAS e tutte le sottodirectory
~ # chmod 755 /var/www/NAS/ -R
Questo imposta i permessi a NAS e a tutte le sottodirectory
Apriamo il browser e puntiamo il nostro NAS
htts://sonfelice.dibrigida.it
NON CONFIGURIAMO NULLA
guardiamo solo se funziona la pagina web, funziona siamo a cavallo. Non funziona si ricomincia da capo.
Montiamo il disco meccanico
Ma è mai possibile che ci siamo dimenti del disco meccanico?
Non credo, sennò i dati dove li poggiamo sul ssd da 16Gb ? o sul pennino da 512Mb ?
Configuriamo il crypttab per aprire in automatico il disco luks
Configuriamo fstab per montare in automatico il disco in /work/DATA
~ # mount -a
Impostiamo owner e group
~ # chown www-data:www-data /work/DATA
Impostiamo i permessi
~ # chmod 755 /work/DATA
~ # reboot
Se riparte tutto senza errori, possiamo configurare il web.