Installiamo un Cloud Server sul Raspberry Pi2

Vediamo stavolta come trasformare il nostro piccolo Raspberry Pi2 in un cloud server, molto simile a Dropbox per esempio, solamente che a conservare i nostri dati condivisi saremo noi e non più un fornitore esterno. Per fare questo ci vuole una buona ADSL ovviamente, meglio se in fibra ottica, con un valore soprattutto in upload piuttosto alto per non penalizzare troppo la velocità di accesso ai nostri dati.

Ho scelto quello che mi sembra un ottimo prodotto, ownCloud (https://owncloud.org) disponibile anche in una versione non commerciale, che però non è affatto penalizzata nell’uso che intendiamo farne noi. Per chi volesse fare un confronto tra le caratteristiche della versione Community e quella Enterprise ecco un link dove vengono analizzate le differenze: https://owncloud.com/owncloud-server-or-enterprise-edition/

Esistono già pubblicati diversi articoli su come installare questo prodotto su Raspbian, ma dal momento che io ho utilizzato la Fedora 21 Remix minimal e ho notato alcune differenze nei pacchetti da installare (mi riferisco in particolare al PHP) vedremo qui di seguito la procedura da eseguire. La Fedora Minimal (è un immagine di solo 2 Gb) mi sembra perfetta per questo tipo di server; niente interfaccia grafica e solo il minimo indispensabile per installare poi solo i pacchetti che ci servono. Questo ovviamente garantisce maggiore stablilità e velocità di esecuzione dei processi. Dal momento che un Cloud è anche un contenitore di dati consiglio di utilizzare una microSD da almeno 32 Gb oppure ricorrere ad un hard disk esterno collegato al Raspberry per gestire la directory “data” del Cloud. Se gli hard disk esterni dovessero dare problemi di alimentazione con il Raspberry allora una penna USB da 128 Gb (ahimè, costa quanto il Raspberry stesso) farà al nostro caso.

Le immagini della Fedora possono essere scaricate a questo indirizzo:

http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Images/armhfp/

vanno decompresse con una utility capace di trattare il formato xz e poi è sufficiente rinominare il file raw in img per poterlo poi installare su di una microSD.

Essendo la versione “minimal” una distribuzione esclusivamente testuale richiede una certa familiarità con i comandi della shell Linux, compreso il fatto che una volta installata non è in grado di gestire un dongle wifi se non eseguendo delle procedure manualmente (esiste un altro articolo a questo proposito). Sostanzialmente avremo bisogno di installare, dato per scontato che il Raspberry acceda alla nostra rete locale ed a Internet:

web server Apache
PHP
SqLite (già presente anche nella minimal)
ownCloud

Apriamo una connessione SSH e lavorando da utente root digitiamo:

Finita l’installazione possiamo controllare da un pc collegato in rete che Apache funzioni, accedendo al sito del raspberry da browser con http://[IP_DEL_RASPBERRY]
Dovremo vedere la pagina di default di Apache.
Possiamo anche controllare se il modulo PHP di Apache funziona correttamente. Entriamo nella directory /var/www/html e apriamo un editor (vi o nano) per creare un file chiamato test.php
Inseriamo dentro questo codice e salviamo.

Di nuovo accediamo al sito del Raspberry stavolta con http://[IP_DEL_RASPBERRY]/test.php

Se tutto è andato bene dovremmo vedere la pagina di info del PHP con tutte le configurazioni correnti, sintomo che il modulo PHP di Apache sta funzionando.
Cancelliamo subito questo file, non è bene lasciarlo qui per motivi di sicurezza.
Rimanendo sempre nella directory /var/www/html scarichiamo il software relativo a ownCloud. Attualmente siamo alla versione 8.0.3 ma si potrebbe andare a controllare nel sito se esiste una versione successiva e modificare la riga seguente con il nuovo nome.

Qui abbiamo scaricato ownCloud, lo abbiamo decompresso, gli abbiamo assegnato i diritti di accesso all’utente che usa il web server Apache e abbiamo inserito le regole firewall per l’accesso esterno. Per far uscire il Raspberry su Internet servirà poi fare il forwarding della porta SSL 443 sul router, magari indirizzandola all’esterno su un’altra porta diversa dalla 443 per aumentare la sicurezza di accesso al cloud. Ora dobbiamo modificare alcuni file di configurazione.

Entriamo con un editor nel file /etc/httpd/conf/httpd.conf

Modifichiamo la sezione qui sotto in modo che la home page punti a ownCloud.

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot “/var/www/html/owncloud”

Modifichiamo la direttiva AllowOverride impostandola ad All. Questo farà in modo che il file .htaccess (nascosto) presente nella directory ownCloud possa funzionare.

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All

Ora passiamo alla configurazione dell’accesso SSL del sito di ownCloud.
Creiamo i certificati.

Entriamo nel file /etc/httpd/conf.d/ssl.conf e modifichiamo :

# General setup for the virtual host, inherited from global configuration
DocumentRoot “/var/www/html/owncloud”
ServerName [nomedeldominio]:443

# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/owncloud.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you’ve both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/owncloud.key

Riavviamo Apache

e proviamo l’accesso https://

L’installazione è terminata, ora dobbiamo entrare nel sito e creare un’utenza amministrativa. Fatto questo si possono creare altri utenti usando un nuovo gruppo che potremo chiamare “user” per l’accesso ai dati. Il manuale d’uso di ownCloud è presente nelle cartelle visibili nel sito.

Il Cloud Server è impostato per accettare dowload di file grandi al massimo 512Mb. Questo valore si può cambiare portandolo fino al valore di 2 Gb agendo sul file nascosto /var/www/html/owncloud/.htaccess, cambiando le direttive
<IfModule mod_php5.c>
php_value upload_max_filesize 1G
php_value post_max_size 1G
php_value memory_limit 512M

che sul mio cloud ho modificato a 1 gigabyte. Una volta fatta la modifica è necessario far ripartire Apache.

Nel caso si voglia utilizzare un disco esterno (hdd o una chiave usb) per avere maggiore capacità rispetto alla microSD usata dal Raspberry il Cloud utilizza una directory chiamata “data” che si trova in /var/www/html/owncloud. Questa va replicata sull’unità esterna non dimenticando di assegnargli i diritti dell’utente apache:apache. Per cambiare il path usato da ownCloud si interviene nel file /var/www/html/owncloud/config/config.php agendo sulla direttiva

‘datadirectory’ => ‘/var/www/owncloud/data’,

che va aggiornata al nuovo mountpoint, eventualmente trasferendo i dati già esistenti.
Fatto ciò si può riavviare Apache e cancellare la vecchia directory data dopo aver controllato che tutto sia andato bene.

Sul sito ufficiale di ownCloud è possibile scaricare i client per gli ambienti Windows, Mac, Linux, Android e iOS in modo tale da tenere, come si fa in Dropbox, localmente una cartella sincronizzata sul proprio Pc o Device.

Schermata 2015-05-23 alle 20.10.28

Fedora 21 remix minimal: /var/log/messages. Che fine ha fatto?

Il passaggio di molte distro di ultima generazione da un controllore di processi “storico” come initdsystemd ha creato non pochi problemi a chi come me, abituato a gestire da diverso tempo server Linux RedHat e CentOS, ha dovuto far fronte ad una nuova serie di comandi e procedure per gestire queste macchine. Quando si sospetta la presenza di qualche tipo di problema su questi server la prima cosa che si va a fare è andare a consultare il log di sistema per vedere se c’è qualche messaggio “sospetto” che possa indicarci la natura del problema. Il primo file che di solito si va a vedere è il classico (per chi usa Unix) /var/log/messages, consultabile da utente root. Qui vengono riportati dal sistema in tempo reale eventuali anomalie e messaggi di errore da parte del kernel e da altri sottosistemi che girano sul server.

Ebbene, il nuovo systemd ha eliminato questo utilissimo file di log a favore di un nuovo sistema che usa il comando journalctl per interrogare il system-log. Non voglio entrare adesso nel merito dell’utilizzo di questo nuovo comando, ma siccome sono piuttosto “affezionato” al caro e vecchio file messages, ecco come ripristinarne l’uso.

E’ sufficiente installare da Yum il vecchio demone rsyslog, abilitarlo al boot del server e farlo ripartire. Vediamo i comandi da dare (da root):

Fatto questo riavremo di nuovo i messaggi di sistema nel solito file /var/log/messages. Devo dire che le immagini di Fedora 21 remix dotate di interfaccia grafica non presentano questa nuova gestione, mentre la minimal sì.

Che devo dire….. toglietemi tutto ma lasciatemi il mio messages! 🙂

 

Fedora 21 Remix minimal: cambiare il fuso orario di default

Eh sì, perché una volta sistemata la nostra Fedora 21 per il Raspberry Pi2 se proviamo a dare il comando date abbiamo come risultato l’ora di New York, ovvero il fuso EDT. Meglio adottare il nostro fuso italiano o magari, perché no, come capita talvolta di fare con alcuni server impostarlo sul fuso internazionale UTC. Ci vuole un attimo, vediamo come:

L’elenco delle timezone disponibili si trova nella directory /usr/share/zoneinfo. Qui abbiamo file e directory (come ad esempio Europe) che scendono nel dettaglio della città di cui impostare il fuso orario. Andiamo ad esempio in /usr/share/zoneinfo/Europe dove c’è il file Rome.

E’ sufficiente copiare questo file sostituendo l’attuale /etc/localtime ed il gioco è fatto.

viene richiesto di sovrascrivere quello esistente, rispondiamo di sì. Adesso quando digitiamo il comando date otteniamo l’ora italiana in CET oppure in CEST quando è in vigore l’ora estiva.

 

Raspberry Pi2: Fedora 21 minimal e wifi

Se abbiamo bisogno di usare il Raspberry come server senza supporto grafico è conveniente installare una distribuzione come la Fedora Remix 21 minimal, ovvero priva di qualsiasi gestore grafico. Per chi ha intenzione di usare comunque il dongle wi-fi mancherà il riconoscimento automatico dell’interfaccia wlan quindi bisognerà provvedere a mano.

Colleghiamo il Raspberry ad un cavo lan, la ethernet verrà riconosciuta automaticamente in DHCP grazie al Network Manager.

Installiamo questi pacchetti:

Poi stacchiamo il cavo lan, fermiamo e disabilitiamo il NetworkManager.

Poi andiamo nella directory /etc/sysconfig/network-scripts e apriamo con un editor il file ifcfg-eth0.
Cambiamo la direttiva ONBOOT facendola diventare ONBOOT=no. Se non esiste inseriamola.
Questo perché la scheda ethernet, partendo in automatico all’avvio del server si approprierà del default gateway che sicuramente avrà inserito al suo interno ( GATEWAY= xx.xx.xx.xx) impedendo alla interfaccia wlan di gestirlo. Se si hanno più interfacce di rete su un server, solo una può avere un default gateway.

Prima di cominciare controlliamo che il dongle wifi sia riconosciuto:

Nel mio caso viene trovata un’interfaccia Ralink Technology, Corp. RT5370 Wireless Adapter.

Controlliamo che ci sia un modulo del kernel caricato in grado di gestirla. Probabilmente avrà un nome “RT” seguito da numeri.

Sempre nel mio caso si chiama rt2880usb e risulta caricato.

Ora controlliamo inoltre che l’interfaccia wireless sia presente:

Dovrà apparire un output simile a questo. L’interfaccia di rete wireless probabilmente si chiamerà wlan0. Se non dovesse apparire provare a dare il comando ifconfig wlan0 up e poi riprovare con ifconfig. In questo momento probabilmente l’interfaccia non apparirà come RUNNING.

A questo punto entriamo in /etc/sysconfig/network-scripts e diamo il comando:

Configureremo la scheda con un indirizzo statico 192.168.1.100, netmask 255.255.255.0, gateway 192.168.1.1 per entrare in un wireless network con SID = mywifi dotata di password WPA che per il momento non inseriremo qui.

Ecco il contenuto del file ifcfg-wlan0

I campi HWADDR e UUID non vanno modificati. Vanno lasciati quelli che gia’ esistono all’apertura del file. Salviamo ed entriamo in /etc/wpa_supplicant/. Diamo il comando:

ed inseriamo

Salviamo e diamo il comando:

A questo punto testiamo la connessione con il comando:

Testiamo la connessione tentando di fare un ping al gateway

se il gateway risponde la connessione è riuscita.

Andiamo in /etc ed editiamo il file resolv.conf aggiungendo eventuali DNS per il collegamento ad internet. Nel nostro caso aggiungiamo la riga nameserver 192.168.1.1 e salviamo.

Pingando un indirizzo esterno con il comando

# ping www.google.com
verifichiamo la connessione ad internet.

Infine per rendere permanente la connessione wifi andiamo in /etc/init.d e creiamo il file di partenza della connessione wireless.

Inseriamo queste 3 righe nel file:

salviamo e poi diamo i permessi di esecuzione al file.

Entriamo nella directory /etc/rc3.d e creiamo un link simbolico.

A questo punto diamo un comando reboot per controllare che alla partenza il Raspberry si colleghi al wifi.