Crea il tuo server cloud personale con Raspberry e OwnCloud

Guida Crea il tuo server cloud personale con Raspberry e OwnCloud 1.0

Turn-your-Raspberry-PI-3-Into-a-Personal-Cloud-Storage-2017.png

Sei stufo di GDrive, OneDrive, DropBox, dei loro costi annuali o dei pochi giga a disposizione per gli abbonamenti gratuiti?
Bene, allora questa guida è ciò che fa per te!

Oggi creeremo il nostro server cloud privato direttamente sul nostro raspberry, in modo da avere uno spazio di archiviazione praticamente illimitato e senza restrizioni!
Per realizzare il nostro progetto ci affideremo a OwnCloud, un'applicazione open source che permette la creazione di uno spazio cloud completamente privato, raggiungibile da ovunque, gestibile da interfaccia web, client app e smartphone!

Ci sono alternative a OwnCloud?
Certo! Il web è un mondo vasto e per ogni programma esiste sempre almeno una sua valida alternativa.
I principali "concorrenti" di OwnCloud sono NextCloud (fratellino di OwnCloud, nasce come suo fork) e Seafile.


Esiste un programma migliore di un altro?

No, è tutta questione di comodità e gusto personale. Sono tutti e tre ottimi prodotti, con funzionalità simili e punti di forza unici. Sta a voi decidere quale scegliere, in base alle vostre esigenze e al vostro gusto personale.
Ovviamente in questa guida installeremo OwnCloud, per il semplice fatto che è la scelta che ho fatto io un paio di anni fa :)


[SOTTOTITOLO]Occorrente[/SOTTOTITOLO]
- Raspberry (Pi 2 B or higher)
- Hard Disk esterno (consigliato SSD o HDD di grandi dimensioni)
- Cavo Ethernet (consigliato)
- Micro SD (consigliata una classe 10 da 16+ GB)
- Case protettivo (consigliato)
- Dissipatori (consigliati)
- Alimentatore tramite micro USB
- Indirizzo IP Locale statico
- Indirizzo IP Pubblico statico (o in alternativa un DDNS)

Step 1

Impostare un IP statico al proprio Raspberry


Per impostare un indirizzo IP statico al vostro raspberry dovrete necessariamente accedere al vostro pannello di controllo del router (solitamente all'indirizzo IP 192.168.1.1 oppure 192.168.1.254), andare nella sezione "Dispositivi" e assegnare al MAC address del vostro Raspberry (oppure al rispettivo hostname) l'indirizzo IP di vostra scelta.
In questo modo, anche se il router si dovesse spegnere o il raspberry si riavviasse, non perdereste il vostro IP e il vostro instradamento verso il server.
Attenzione: ogni provider dispone di un pannello differente per la gestione dei dispositivi nella rete. Fate affidamento alla documentazione ufficiale fornita dal vostro provider (sia per l'indirizzo IP del router, sia per la gestione dei device)

Step 2

Richiedere un IP statico pubblico o impostare un DDNS


Siccome un server cloud deve essere reperibile 24/7h, avrete bisogno di un IP pubblico statico che non cambia mai, o per lo meno di un DDNS (servizio che permette di registrare un dominio statico che punterà al vostro IP dinamico).
In genere gli ISP forniscono IP dinamici (cambiano ogni 24h circa), o in alternativa IP statici ma non pubblici (vedi il NAT della rete Fastweb). Questa disposizione ci limita nel contattare il nostro server, per cui è necessario se possibile richiedere un IP pubblico statico o, in alternativa, creare un DDNS e configurarlo appositamente sul proprio router (tra i servizi DDNS più utilizzati c'è No-Ip).
Nota: Per configurare il DDNS vedere l'apposita documentazione online in riferimento al proprio provider.

Step 3

Effettuare il port forwarding


Per fare in modo che il nostro server cloud sia correttamente raggiungibile e funzionante da ogni parte del mondo e non solo in locale, è necessario "abbinare" tra loro una porta esterna (a cui ci noi ci collegheremo) e una porta interna (quella aperta sul raspberry per farlo comunicare con la rete).
In questo modo noi ci collegheremo alla porta esterna aperta sul router, questo reindirizzerà la connessione verso la porta interna del raspberry, e permetterà così la comunicazione anche dall'esterno.
Nota: Per eseguire il port forwarding fate riferimento alla documentazione fornita dal vostro provider. Il port forwarding si configura nel router, nell'apposita sezione prevista dal pannello di controllo.
Nota2: E' caldamente e largamente consigliato fare uso di numeri di porta esterna molto alti, in modo che i bot che scansionano quotidianamente la rete non identifichino porte aperte potenzialmente vulnerabili sul vostro router.

Step 4

Installare ownCloud


Bene, ora che abbiamo preparato tutto quanto quello che ci serviva possiamo passare all'installazione di ownCloud!
Colleghiamoci al nostro raspberry e installiamo (se non sono presenti) Apache2, PHP7.3, mariadb e tutte le varie dipendenze:
Bash:
sudo apt update
sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server libapache2-mod-php7.3 php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-intl php7.3-mcrypt php-imagick php7.3-zip php7.3-xml php7.3-mbstring
Mentre aspettiamo che si installi tutto andiamo sul sito ufficiale e scarichiamo l'ultima versione dell'applicazione, nel nostro caso in formato tarball (.tar) poichè (quasi sicuramente) staremo usando Raspbian come OS.

Una volta finito di scaricare tutto, avviamo il web server apache e impostiamo che venga eseguito di default all'accensione del Pi
Bash:
sudo systemctl start apache2
sudo systemctl enable apache2
inoltre scompattiamo l'archivio tar di ownCloud, assegnamogli i giusti permessi e spostiamolo all'interno del nostro web server
Bash:
cd ~/Download
tar -xvf owncloud-*
sudo chown -R www-data:www-data owncloud
mv owncloud /var/www/html/

Step 5

Configurare Apache2


Per fare in modo che il portale della web app sia raggiungibile e funzioni correttamente, modifichiamo/creiamo un file di conf per ownCloud:
Bash:
sudo nano /etc/apache2/sites-available/owncloud.conf
e inseriamoci all'interno la seguente configurazione:
Configurazione Apache:
Alias /owncloud "/var/www/html/owncloud/"
DocumentRoot /var/www/html/owncloud

<Directory /var/www/html/owncloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html/owncloud
SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>
e creiamo un link simbolico a questo file all'interno dei siti abilitati di Apache
Bash:
sudo ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf

Step 6

Creare l'utenza MySQL


Siccome l'applicazione per funzionare ha bisogno di lavorare con il DB, avremo bisogno di creare un'apposita utenza su MySQL.
Logghiamoci quindi al suo interno e mettiamoci al lavoro!
Bash:
sudo mysql -u root -p
MariaDB [(none)]> create database owncloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user [email protected] identified by 'Stup1dP4ssw0rd';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on owncloud.* to [email protected] identified by 'Stup1dP4ssw0rd';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit;
Bye

Step 7

Configurare il disco esterno


Siccome abbiamo bisogno di molto spazio d'archiviazione (e il raspberry non ce lo permette), abbiamo bisogno di configurare e montare un HD esterno (formattato in NTFS).
Colleghiamolo al Pi e digitiamo nel terminale
Bash:
sudo apt install ntfs-3g -y     # Sono i pacchetti necessari per lavorare con ntfs
sudo mkdir /media/ownclouddrive # Creiamo un punto di mount per l'HD
sudo groupadd www-data            # Creiamo il gruppo www-data e aggiungiamoci l'utente www-data
sudo usermod -a -G www-data www-data
sudo chown -R www-data:www-data /media/ownclouddrive     # Rendiamo www-data proprietario
sudo chmod -R 775 /media/ownclouddrive                    # Assegnamo i permessi a www-data
Inoltre per rendere il mount consistente e fare in modo che l'HD venga riconosciuto anche se collegato a un'altra USB, estraiamo gid, uuid e configuriamo appositamente fstab
Bash:
id -g www-data
id -u www-data
ls -l /dev/disk/by-uuid
sudo echo "UUID=$(ls -l /dev/disk/by-uuid |grep sda1 |awk '{print $9}') /media/ownclouddrive auto nofail,uid=$(id -u www-data),gid=$(id -g www-data),umask=0027,dmask=0027,noatime 0 0" >> /etc/fstab
e riavviamo il raspberry con sudo reboot. Al riavvio troveremo il nostro HD montato nel path /media/ownclouddrive

Step 8

Configurare OwnCloud via browser


Siamo quasi alla fine, tenete duro!
Ora dobbiamo collegarci all'indirizzo IP del nostro raspberry (oppure in localhost se stiamo lavorando direttamente sul Pi) e concludere l'installazione.
Colleghiamoci all'URL http://<IP-raspberry>/owncloud e inseriamo le credenziali che desideriamo usare per loggarci come admin, nel campo "Data folder" dovremo inserire il path del device che vogliamo usare come HD esterno, nel nostro caso /media/ownclouddrive mentre su "Configure the database" dovremo inserire il nome utente, password, nome del db e host creati per l'installazione (vedi step 6).
Ultimo edit: entriamo dentro /var/www/html/owncloud/config/config.php e aggiungiamo il nostro IP pubblico e privato all'interno dei trusted_domains, in modo da rendere l'app accessibile sia da rete interna che esterna.
Il risultato dopo le modifiche sarà qualcosa tipo
PHP:
<?php                                                                                       
$CONFIG = array (                                                                           
  'instanceid' => 'qwertyuiop',                                                           
  'passwordsalt' => 'qwertyasdfghzxcvbnqwertyasdfghzxcvbn',                                       
  'secret' => 'qwertyasdfghzxcvbnqwertyasdfghzxcvbnqweghzxcvbn',                           
  'trusted_domains' =>                                                                       
  array (                                                                                   
    0 => '192.168.1.99',                                                                     
    1 => '56.67.78.89',                                                                     
  ),                                                                                         
  'datadirectory' => '/media/ownclouddrive',                                           
  'overwrite.cli.url' => 'http://56.67.78.89/owncloud'
  ...
  ?>

Finito! Abbiamo creato il nostro server cloud!
Ora potremo usare l'interfaccia web per salvare i nostri file e scaricarli successivamente, ma potremo anche installare il client desktop per sincronizzare le cartelle in automatico, oppure usare la mobile app sul nostro cellulare!
Da qui in poi possiamo solo applicare migliorie al nostro server!

Attenzione: I file copiati direttamente nella cartella del HD tramite CLI, senza passare dalla GUI, NON SARANNO PRESENTI nell'applicazione. Per fare in modo che i file siano visibili su tutti i device e tramite il pannello web è necessario che siano sincronizzati tramite canali ufficiali (quindi le varie app di ownCloud).

Step futuri

Configurare SSL/TLS


Attenzione!
Attualmente le vostre credenziali viaggiano in chiaro, poichè SSL/TLS non è abilitato e stiamo usando la porta 80 che di default trasmette senza crittografare nulla! Considerate di attivare SSL/TLS sul vostro server per aumentare la vostra sicurezza e la sicurezza dei vostri dati!
Autore
0xbro
Download
58
Visualizzazioni
3,388
Prima pubblicazione
Ultimo aggiornamento
Voto recensione
3.00 stelle/a 1 voti

Altre release di 0xbro