RaspberryPI Tutorial: realizziamo il nostro “DropBox” con RasPI!

RaspberryPI FTP

Nell’ultimo articolo da me scritto abbiamo visto il controllo remoto su RasPI per poter impartire comandi via terminale da un altro PC o dispositivo mobile, o per prendere il controllo di un desktop remoto per lavorare con RasPI nel caso in cui non si disponga alcun tipo di monitor. Questa volta vedremo come, in pochi passi, sia possibile realizzare un server personale in grado di ospitare i nostri file per renderli accessibili dalla stessa rete Ethernet o Wifi alla quale è connesso il nostro RasPI o addirittura tramite internet fino ad un altro PC o dispositivo mobile.

Sicuramente ormai tutti conoscerete DropBox, il servizio che gratuitamente permette di avere 2GB di spazio internet nel quale poter caricare file e foto per poterle poi condividere su più dispositivi. Come DropBox, esistono molti altri siti, ma tutti mettono a disposizione un limitato numero di GB che può però aumentare (fino ad un massimo di 16GB per DB) nel caso in cui si invitino altre persone, si aggiungano dispositivi, si carichino foto e via dicendo. I problemi con questi siti però, si riducono sempre agli stessi: i nostri file si trovano sul server di qualcun altro e nel momento in cui lo spazio messo gratuitamente a disposizione non ci dovesse più bastare, i costi per aumentarlo non sono sempre alla portata di un utente qualsiasi che magari deve andare in vacanza e vuole fare un backup di tutte le foto che scatta su un server sicuro. Allora facciamoci aiutare da RasPI!

 

Protocollo SFTP
L’ultima volta abbiamo visto l’SSH, un protocollo di rete che permette di stabilire una connessione remota tramite due dispositivi nella stessa rete per l’invio di comandi da terminale, l’SFTP ( SSH File Transfer Protocol) invece è un protocollo di rete che ci permette di inviare o spostare file tra un Host ed un Client in maniera sicura e cifrata. L’SFTP utilizza come base il protocollo SSH, che come abbiamo già visto è supportato nativamente da RasPI, il che semplifica molto la fase di configurazione per effettuare poi il collegamento per il trasferimento dei dati.

Iniziamo con la sicurezza
Come prima cosa, dato che metteremo i nostri dati nella Memory di RasPI, è bene innanzitutto cambiare, qualora non l’avessimo fatto, la password per l’utente di default “pi”. Tale utente infatti rimarrà in RasPi per il normale utilizzo e ne creeremo un altro per lo stoccaggio dei file e l’accesso via SFTP. Dal terminale diamo il solito comando “sudo raspi-config” ed alla voce “change_pass” impostiamo una password diversa da “raspberry” per evitare che qualcuno vi acceda utilizzando proprio la password di default.

Ora che abbiamo cambiato la password, dobbiamo creare un nuovo utente con nome e password a nostra scelta i quali verranno successivamente utilizzati per l’accesso via SFTP. Per la creazione di un nuovo utente e l’inserimento della relativa password useremo da terminale i comandi “useradd” e “passwd” così strutturati:

sudo useradd NomeUtente
sudo passwd NomeUtente

Se abbiamo sbagliato nell’inserire il nome dell’utente, o se per qualche altro motivo lo vogliamo cancellare, dovremo usare il comando:

sudo userdel NomeUtente

Ora che abbiamo creato un nuovo utente, andremo a modificare la porta di accesso a RasPI tramite protocollo SSH (e quindi anche SFTP) che, come abbiamo visto l’altra volta, di default è la numero 22. Questo accorgimento serve sempre per aumentare la privacy dei nostri dati in modo tale che non bastino nome utente e password per accedervi, ma si dev’essere anche a conoscenza della porta nella quale “passano” i comandi per l’accesso. Andiamo quindi a cambiare un parametro nei file di configurazione del protocollo SSH, apriamo il terminale e digitiamo:
sudo nano /etc/ssh/sshd_config

E ci verrà aperto, con il solito editor di testo Nano, il file di configurazione SSH. Il primo comando che contiene questo file di configurazione è “port 22” ed è proprio quello che serve a noi. Facendo riferimento all’elenco delle porte TCP e UDP, possiamo scegliere quale porta utilizzare, purché non sia già utilizzata da qualche altro programma. Per evitare una ricerca tra le porte utilizzate, sappiate che tutte le porte comprese tra la 49152 e la 65535 sono libere, quindi possono essere utilizzate per i fini dell’utente. Scelta la porta, ed inserita al posto del 22 nell’editor di testo, confermiamo con CTRL + X, “y” ed invio per sovrascrivere il file.

A questo punto sarà necessario un riavvio, dopo il quale per connetterci via SSH non sarà più possibile, qualora la connessione avvenisse da Linux o Mac, utilizzare il semplice comando:
ssh NomeUtente@IndirizzoIP

ma dovremo usare:
ssh -p NumeroPorta NomeUtente@IndirizzoIP

un esempio:
ssh -p 51000 pi@192.168.1.4

Se utilizziamo Windows invece, dovremo semplicemente impostare il numero della porta in Putty o nel programma utilizzato.

Connessione dalla rete locale
Ora che RasPI è pronto per lo scambio di file con i dati da noi impostati, possiamo già provarlo utilizzando un PC o Smartphone collegato alla stessa rete. Per farlo, ci faremo aiutare da Filezilla, un programma gratuito che permette di collegarci ad un dispositivo Host con i più diffusi protocolli di invio e ricezione file. Una volta scaricata la versione Client dal sito ufficiale e dopo averlo installato, ci troveremo di fronte alla seguente interfaccia grafica:

Come possiamo notare, il programma è suddiviso in due parti, “sito locale” e “sito remoto”. In Sito Locale troviamo il nostro computer con tutti i suoi file mentre in Sito Remoto, una volta connessi a RasPI, vedremo i file presenti sulla Memory. In alto, troviamo quattro TextBox, nella prima inseriremo il tipo di protocollo e l’indirizzo IP di RasPI, nel secondo il nome utente dell’utente appena creato, in seguito la password, ed infine la porta da noi precedentemente selezionata. Con un click su Connessione Rapida potremo accedere a tutti i file contenuti nella Memory. In alternativa possiamo inserire nella prima TextBox il comando così composto:
sftp://NomeUtente:Password@IP_RasPI:Porta

Usando i dati di default ed un IP e porta a caso:
sftp://pi:raspberry@192.168.1.5:50265

Via web?
Ora viene “il bello”, ovviamente non è possibile stabilire una connessione con RasPI dall’esterno della nostra rete LAN o WiFi, infatti se per puro sfizio provate avviare Filezilla su un PC connesso ad una diversa connessione internet, e ad inserire l’indirizzo l’IP della connessione internet alla quale è connesso RasPI che potete trovare cercando “my ip” su google con Midori, Filezilla vi comunicherà che non è stato possibile stabilire una connessione. Perchè? Semplice, il vostro Modem blocca ogni accesso dal Web alla vostra rete privata, e guai se non lo facesse! Per poter accedere dal web, magari da un altro PC connesso ad internet, dobbiamo ora aprire la porta che abbiamo precedentemente inserito nel file di configurazione SSH, nel nostro modem di casa. In commercio vi sono centinaia di modem, uno diverso dall’altro, pare evidente quindi che sarebbe impossibile indicare passo-passo i procedimenti per aprire le porte desiderate su ogni modello, tuttavia il percorso è molto simile per tutti i modem. Innanzitutto dobbiamo conoscere l’indirizzo IP del nostro modem:

Windows
Indifferentemente dal tipo di Windows utilizzato, andiamo su Start>Programmi>Accessori>Prompt dei comandi E nel terminale appena aperto inseriamo il comando “ipconfig”. Alla voce Gateway predefinito troveremo l’indirizzo IP del modem.

Linux, Mac e RasPI
Dopo aver cercato ed avviato il Terminale, con il comando route -n potremo facilmente identificare l’indirizzo del modem presente nella colonna Gateway.

Memorizzato l’indirizzo del modem, apriamo un qualsiasi browser internet ed inseriamolo al posto dell’indirizzo internet della nostra Home e ci verranno chiesti dei dati per l’autenticazione. Per accedere alla configurazione del modem infatti, dovremo inserire il suo nome utente e la password, che solitamente sono “admin e admin” o “user e user”, in alternativa potete trovarli scritti sotto il modem.

Ora la procedura indicata è “generale” quindi dovrete essere voi ad adattarla al vostro caso, potete trovare l’apertura delle porte sotto la voce “Port Forwarding” “Port Mapping” o “Virtual Server” o in alternativa con una semplice ricerca in internet inserendo il modello del vostro modem troverete la guida su come aprire le porte per certi “programmini”. A questo punto, apriamo la porta che abbiamo impostato su RasPI e naturalmente indichiamo il suo indirizzo IP, mentre alla richiesta del protocollo indicheremo TCP, salviamo, e chiudiamo il browser internet.

Se tutto è andato correttamente, possiamo avviare Filezilla su un PC collegato ad una diversa connessione internet, ed inserendo l’indirizzo IP della connessione internet che utilizza RasPI, nome utente, password e la porta da noi scelta, potremo visualizzare i file della Memory card! Se Filezilla ci comunica che la connessione non è andata a buon fine invece, probabilmente non abbiamo aperto correttamente le porte del modem, e non è quindi raggiungibile.

Il nostro RasPI-DropBox è ora pronto! Possiamo aprire, salvare, e spostare file da RasPI al PC in uso attraverso Internet o via Ethernet.

No-IP!
Rimane un problema, e se il modem si riavvia e l’indirizzo IP cambia? Come faccio a comunicare con RasPI se non conosco più il suo IP? Semplice, No-IP!
No-ip è un servizio gratuito con il quale possiamo avere un indirizzo internet simile a mariorossi.no-ip.org il quale ci reindirizzerà verso l’IP della nostra connessione Internet alla quale è connesso RasPI, non solo, nel momento in cui il modem venisse riavviato, un software che installeremo su RasPI comunicherà automaticamente il nuovo IP in modo tale che collegandoci all’indirizzo fornito, potremo sempre connetterci con RasPI! Ma andiamo per gradi, innanzitutto dobbiamo registrarci su www.noip.com indicando, durante la registrazione, il nome del nostro futuro “dominio” nella sezione Hostname. L’Hostname che indicheremo, sarà quello a cui  dovremo connetterci con Filezilla per comunicare con RasPI, sarà quindi opportuno salvarlo da qualche parte insieme alla mail e la password utilizzata per la registrazione. A registrazione effettuata, dobbiamo installare l’applicazione DUC (Dynamic Update Client) su RasPI, quindi da terminale daremo i seguenti comandi:

Creiamo una nuova cartella e la chiamiamo noip
mkdir /home/pi/noip

ci spostiamo all’interno della cartella
cd /home/pi/noip

scarichiamo il file d’installazione del DUC
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

decomprimiamo il file appena scaricato
tar vzxf noip-duc-linux.tar.gz

ci spostiamo nella cartella appena decompressa
cd noip-2.1.9-1

installiamo il DUC
sudo make
sudo make install

avviamolo, ed eseguiamo la prima configurazione
sudo /usr/local/bin/noip2

Ci verranno ora chiesti i dati con cui ci siamo registrati sul sito noip.com, iniziando con la mail e la password, successivamente dovremo inserire ogni quanti minuti sincronizzare l’IP con il dominio e ci viene consigliato un intervallo di 30 minuti. Non inserite un tempo tropo ristretto come possono essere 5 o 10 minuti, 20-30 minuti sono più che accettabili e non obbligano RasPI a continue comunicazioni con noip. Infine, indicheremo il dominio precedentemente creato, ed ecco il nostro RasPI-Box pronto ad essere raggiunto inserendo al posto dell’IP in Filezilla, l’indirizzo che abbiamo precedentemente creato 😉

Non ci rimane che far si che il DUC si avvii ogni qual volta viene acceso RasPI! Sempre da terminale quindi, creeremo uno script  per avviare il DUC ad ogni accensione:

Creiamo un nuovo file
sudo nano /etc/init.d/NoIPstartup

All’interno dell’editor di testo scriveremo:
#! /bin/sh
# /etc/init.d/noip

### BEGIN INIT INFO
# Provides: noip
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

case “$1″ in
start)
echo “Starting noip”
/usr/local/bin/noip2
;;
stop)
echo “Stopping noip”
killall noip2
;;
*)
echo “Usage: /etc/init.d/noip {start|stop}”
exit 1
;;
esac
exit 0

e come sempre, confermeremo con CTRL+X, “y” ed Invio. Rendiamo lo script appena creato eseguibile
sudo chmod 755 /etc/init.d/NoIPstartup

ed infine lo rendiamo eseguibile all’avvio
sudo update-rc.d NoIPstartup defaults

Ecco RasPI pronto per ospitare i nostri dati previa autenticazione con nome utente e password :)
Da utente Android, dato che ho parlato della possibilità di accedere a RasPI via sftp anche da Smartphone, segnalo l’applicazione Andftp che oltre ad essere gratuita permette la connessione ad un dispositivo Host per lo scambio di file via Wifi e 3G utilizzando sftp, ftp ecc :)

image credits | adafruit.com

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

10 Comments

  1. Piero Boccadoro Piero Boccadoro 7 marzo 2013
  2. Lucasss 7 marzo 2013
  3. Antonello Antonello 8 marzo 2013
  4. Boris L. 8 marzo 2013
  5. Lucasss 8 marzo 2013
  6. delfino_curioso delfino_curioso 8 marzo 2013
  7. Lucasss 8 marzo 2013
  8. Giorgio B. Giorgio B. 13 marzo 2013
  9. Lucasss 14 marzo 2013
  10. franki 24 aprile 2015

Leave a Reply