Progetto #5 – Cloud casalingo con Raspberry PI

In questo articolo andrò a spiegare come creare il proprio spazio cloud su un Raspberry PI, in modo da potervi accedere anche fuori casa per avere sempre i nostri files a disposizione.
In particolare andremo ad utilizzare:

  1. Raspberry PI modello B (nel mio caso la versione 2, più performante);
  2. Il software ownCloud (aggiornato all’ultima versione disponibile, la 8.0.2 e disponibile qui);
  3. Il software Apache2 e relative estensioni (web server);
  4. L’interprete PHP;
  5. Eventuale server MySQL per gestire il database di ownCloud (opzionale, è possibile sfruttare SQLite).

Dopo essersi assicurati di aver configurato la connessione a internet sul Raspberry PI, utiliziamo il seguente comando per installare tutte le utilità che ci serviranno per mettere online il nostro spazio cloud:

sudo apt-get install apache2 php5 php5-json php5-gd php5-sqlite curl libcurl3 libcurl4-openssl-dev php5-curl php5-gd php5-cgi php-pear php5-dev build-essential libpcre3-dev php5 libapache2-mod-php5 php-apc

Dopo aver installato e configurato tali software, sarà necessaria l’installazione di un’estensione di PHP, tramite il comando:

sudo pecl install apc

Dopodiché dovremo andare a creare il file apc.ini:

sudo nano /etc/php5/cgi/conf.d/apc.ini

Che dovrà contenere:

extension=apc.so
apc.enabled=1
apc.shm_size=30

Dopodiché salviamo il file e modifichiamo la configurazione di PHP, con l’aiuto del comando:

sudo nano /etc/php5/apache2/php.ini

Cerchiamo la voce upload_max_filesize e assicuriamoci che sia a un valore elevato, come 4096M (ovvero 4 GB), ci garantirà la possibilità di poter caricare file dalla dimensione di 4 GB. Effettuiamo la stessa modifica anche alla voce post_max_size, dopodiché concludiamo la modifica cercando la sezione dedicata alle estensioni (extension) e inseriamo:

extension=apc.so

Infine salviamo il file e configuriamo Apache, con il comando:

sudo nano /etc/apache2/sites-enabled/000-default

Assicurandoci di aver modificato “allow ovveride” da “all” a “none”.

Abilitiamo poi il supporto SSL:

sudo a2enmod rewrite
sudo a2enmod headers

E impartiamo il seguente comando:

sudo openssl genrsa -des3 -out server.key 1024; sudo openssl rsa -in server.key -out server.key.insecure;sudo openssl req -new -key server.key -out server.csr;sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt;sudo cp server.crt /etc/ssl/certs;sudo cp server.key /etc/ssl/private;sudo a2enmod ssl;sudo a2ensite default-ssl

Quindi riavviamo Apache:

sudo service apache2 restart

Adesso sarà necessario procurarci ownCloud (disponibile qui), nel mio caso, l’ultima versione disponibile è la 8.0.2, quindi ho impartito il seguente comando:

wget https://download.owncloud.org/community/owncloud-8.0.2.tar.bz2

Il comando wget permette di scaricare un file da internet.

Adesso scompattiamo l’archivio con il comando:

sudo tar -xjf owncloud-*

E copiamo i files creati nella root del server Apache:

sudo cp -r owncloud /var/www

Dopodiché impostiamo i permessi necessari per Apache:

sudo chown -R www-data:www-data /var/www/owncloud/

Nel caso in cui ci fossero problemi nel salvataggio di files, consiglio di impartire il comando:

sudo chmod -R 771 /var/www/owncloud/

Modifichiamo il file .htaccess per garantire il caricamento di files dalle dimensioni stabilite nel file di configurazione di PHP, impartendo il comando:

sudo nano /var/www/owncloud/.htaccess

Dopodiché salviamo il file e colleghiamoci tramite web browser all’indirizzo: http://IP-DEL-RASPBERRYPI/owncloud o tramite SSL all’indirizzo https://IP-DEL-RASPBERRYPI/owncloud e configuriamo ownCloud secondo le nostre esigenze.

Schermata di OwnCloud

Nel caso in cui non sapeste come creare un database MySQL, dopo aver effettuato il login tramite il comando mysql -u <nomeutente> e dopo aver digitato la password dell’account MySQL, sarà sufficiente impartire il comando CREATE DATABASE <nomedatabase>; ad esempio:

CREATE DATABASE owncloud;

Comunque sia dovrebbe essere possibile sfruttare anche SQLite, in modo tale da non rendere necessaria l’installazione di MySQL.