Raspberry Pi – Software utili per server domestico

novembre 25th, 2014 | Posted by Marco Plessi in Informatica | Visite: 5.914

Presentazione e configurazione base di alcuni software molto utili per Raspberry Pi come Transmission, Samba e Crontab. Potremo così realizzare un torrentbox con condivisione file in rete.

Scrivo questo articolo per raggruppare in unica “guida” alcuni software molto utili, installabili o già installati di default. Questi software servono a fare cose molto diverse tra loro, ma si rivelano utili o addirittura indispensabili in certe situazioni.

Prima di iniziare a leggere l’articolo, collegatevi via SSH al vostro Raspberry e date subito il comando sudo apt-get update, per aggiornare il sistema operativo e la lista dei repository (per la configurazione di base del raspberry leggete l’articolo del MediaCenter).

Se seguite la guida dall’inizio alla fine, avrete realizzato un torrentbox con NAS, configurato per scaricare solo di notte (per non intasare la rete di giorno, che magari serve per altre cose).

INDICE:

Installare disco USB (con mount automatico all’avvio);

Samba (condivisione file lan);

Transmission Daemon (client torrent);

Crontab (pianificazione eventi);

Conclusione;

 


Installare disco USB (con mount automatico all’avvio)

Possiamo utilizzare il Raspberry come NAS domestico, che è una cosa molto utile. Sicuramente non sarà affidabile come un NAS professionale, ma sicuramente è economico e in sintonia con il DIY.

Ovviamente non possiamo utilizzare la SD come memoria, ma dobbiamo collegare un disco USB, necessariamente con alimentazione esterna (il Raspberry non riuscirebbe ad erogare abbastanza corrente).

Adesso bisogna creare il punto di mount del disco, che è una cartella (creata sulla SD) che in realtà fa da puntatore al disco. Utilizziamo il comando sudo mkdir /mnt/disco_nas . “disco_nas” è il nome della cartella che farà da punto di mount.

Utilizziamo il comando lsblk per vedere la lista delle periferiche di archiviazione collegate al Raspberry. Il disco contrassegnato con mmcblk è la SD, e il disco che interessa noi dovrebbe chiamarsi sda1 o qualcosa di simile. Se il disco ha più partizioni, saranno visualizzate tutte come sdaX, dove X è un numero progressivo. la A di sdA identifica invece il disco, quindi se collegate 2 dischi, ci sarà sda e sdb.

Individuato il disco, procediamo alla formattazione. Il file system consigliato è ovviamente ext4, quello tipico dei sistemi Linux. Si può anche utilizzare l’ntfs, ma le prestazioni saranno più scarse.

La formattazione si avvia con il comando sudo mkfs -t ext4 /dev/sda1 .Dove sda1 è il disco da formattare. Attenzione!! Individuate bene il disco prima di formattare!

Adesso bisogna montare il disco, ovvero fare in modo che sia visibile e utilizzabile dal sistema operativo. Per fare ciò, usiamo il comando sudo mount /dev/sda1 /mnt/disco_nas .

In questo modo abbiamo montato il disco, ma se riavviamo il Raspberry, dovremo montarlo nuovamente. Per evitare questo e fare in modo che il disco venga montato automaticamente all’avvio, bisogna modificare fstab.

Apriamo il file fstab con il comando sudo nano /etc/fstab .

Nota: il file fstab è composto da varie righe, ogni riga è una partizione. Un disco può essere diviso in più righe se ha più partizioni. Le colonne corrispondono ai vari parametri, che sono disposti nel seguente ordine: [filesystem] [punto di mount] [tipo filesystem] [dump] [pass].

[filesystem] è il percorso del disco fisico; [punto di mount] è la cartella che funge da puntatore al disco (quella che abbiamo chiamato disco_nas); [tipo filesystem] non ha bisogno di spiegazioni, è ext4; [dump] consente di fare il backup del disco ma è una funzione obsoleta e non si utilizza più; [pass] è la priorità con cui fsck controlla la coerenza dei dati all’avvio (0=off, 1,2,3 più è alto più la priorità è bassa).

Bisogna aggiungere al file la riga di configurazione:

/dev/sda1 /mnt/disco_nas ext4 0 3

Quindi chiudiamo l’editor. Premere Ctrl+o per salvare e Ctrl+x per uscire.

 


Samba (condivisione file in lan)

Dopo aver configurato il disco USB, bisogna poterlo condividere in rete, e per fare questo utilizziamo Samba, che è un programma che consente di condividere cartelle in rete mediante il protocollo SMB. In questo modo, possiamo visualizzare/modificare le cartelle da qualsiasi sistema operativo.

È possibile anche creare più cartelle con permessi di accesso diversi. In quesa guida farò vedere la creazione di 2 cartelle e 2 utenti.

I due utenti sono: marco e publicuser. Marco avrà gli stessi privilegi di “pi”, e publicuser sarà un utente diciamo di dominio pubblico.

Le 2 cartelle saranno: pubblica (alla quale possono accedere tutti); dati_privati (ristretta solo agli amministratori).

Per creare le cartelle, utilizziamo il comando sudo mkdir /mnt/disco_nas/pubblica e sudo mkdir /mnt/disco_nas/dati_privati .

La creazione degli utenti la vedremo durante il procedimento di configurazione.

Installiamo Samba con il comando sudo apt-get install samba samba-common-bin .

Apriamo il file di configurazione di Samba: sudo nano /etc/samba/smb.conf .

Adesso cancelliamo tutto il contenuto del file, e scriviamo al suo posto il seguente testo (dopo commenterò le varie parti):

[global]
   workgroup = GRUPPODILAVORO
   server string = Server Raspberry
   security = USER
   encrypt passwords = true
   smb passwd file = /etc/samba/smbpasswd
 
[pubblica]
   comment = Condivisione file pubblici
   path = /mnt/disco_nas/pubblica
   valid users = marco publicuser
   writable = YES
 
[dati_privati]
   comment = Condivisione dati personali
   path = /mnt/disco_nas/dati_privati
   valid users = marco
   writable = YES

Il primo blocco, contrassegnato da [global], è la configurazione di base del servizio.

Workgroup è il gruppo di lavoro del server (che deve essere uguale a quello impostati nei pc della rete).

Server string è il nome che viene visualizzato quando ci si collega al server con Nautilus (Linux) o Esplora Risore (Win).

Security = USER abilita l’autenticazione obbligatoria per entrare nelle risorse condivise.

Encypt passwords e smb passwd file sono rispettivamente l’abilitazione a ciptare le password e il percorso del file delle password di samba.

Il secondo è il terzo blocco sono molto simili, in quanto sono entrambi i blocchi di configurazione della cartella condivisa. Per spiegare le funzioni delle varie proprietà prenderò come esempio il secondo blocco.

[pubblica] è il nome della cartella condivisa, quello che verrà visualizzato dagli altri pc che si collegheranno al server.

Comment = condivisione file pubblici è un commento (sempre visualizzato dai pc collegati).

path = /mnt/disco_nas/pubblica è il percorso della cartella fisica (sul Raspberry) che deve essere condivisa.

valid users = marco publicuser è una proprietà in cui devono essere scritti (separati da spazi) gli utenti che possono accedere alla cartella condivisa. In questo caso tutti. L’utente Pi non c’è, infatti è bene prevedere di inserire gli utenti in modo da evitare l’uso dell’utente Pi con Samba, per evitare possibili falle alla sicurezza (se state accedendo ai file con Pi e qualcuno vede la password può avere il controllo totale sul sistema, cosa che non può succedere con altri utenti, dato che Pi ha il massimo dei privilegi).

writable = YES consente di rendere scrivibile la cartella, impostando NO sarebbe di sola lettura.

Adesso bisogna creare gli utenti e aggiungerli a Samba.

Come visto prima sul nostro server ci dovrebbero essere 3 utenti: pi, marco e publicuser. Pi non andrebbe usato per accedere ai file, quindi non lo utilizzeremo in Samba

Creiamo gli utenti di sistema mancanti con: sudo useradd marco e sudo useradd publicuser. Quindi impostiamo la password per questi due utenti con sudo passwd marco e sudo passwd publicuser .

Adesso aggiuntgiamo gli utenti di sistema a Samba, con il comando sudo smbpasswd -a marco per l’utente Marco, quindi sudo smbpasswd -a publicuser per publicuser. Potrebbe risultare molto comodo usare la stessa password per l’utente di sistema e il suo corrispondente Samba.

Quindi impostiamo i permessi di accesso per le cartelle:

sudo chown -R pi:users /mnt/disco_nas/pubblica

sudo chown -R pi:users /mnt/disco_nas/dati_privati

In questo modo possono accedere gli utenti del gruppo users e ovviamente il proprietario. Sto parlando di utenti di sistema, da Samba le autorizzazioni agli accessi sono già state impostate prima.

Gli utenti marco e publicuser non sono ancora nel gruppo users, perciò ci devono essere inseriti con il comando: sudo gpasswd -a marco users e sudo gpasswd -a publicusers users .

Quindi inviamo gli ultimi comandi:

sudo chmod -R ug+rwx,o+rx-w /mnt/disco_nas/pubblica

sudo chmod -R ug+rwx,o+rx-w /mnt/disco_nas/dati_privati

Che servono ad impostare i permessi di scrittura/lettura/esecuzione: l’utente proprietare e il gruppo (ug) possono leggere, scrivere ed eseguire (+rwx); gli altri (o) possono leggere e scrivere (+rw) ma non eseguire (-x).

Riavviamo il servizio Samba con sudo service smbd restart .

Adesso collegandosi all’IP del Raspberry con Esplora risorse / Nautilus viene richiesto il nome utente e la password, quindi è possibile navigare nelle cartelle (se si ha l’autorizzazione).

 


Transmission Daemon (client torrent)

Transmission è un software per scaricare files dalla rete torrent. Tutti saprete a cosa serve la rete torrent: a scambiare file su internet in modo più veloce, perché non passano attraverso il browser, ma utilizza la tecnologia P2P.

Sicuramente qualcuno penserà che usare la rete torrent è illegale perché si scaricano i film gratis, ma in realtà non è così. Scaricare film gratis è illegale, ma non lo è usare la rete torrent, che può essere utilizzata per scambiare qualunque tipo di file. Basta pensare che sul sito di Ubuntu (distribuzione Linux), si può scaricare l’immagine da masterizzare sul CD anche con torrent, e solitamente è molto più veloce.

Perciò io qui spiegherò come installare e configurare Transmission Daemon, ma è vostra responsabilità l’uso che ne farete.

Transmission esiste anche dotato di interfaccia grafica, ma noi utilizzaremo il demone di transmission, che non ha interfaccia grafica. Per controllarlo accederemo al Raspberry con un browser.

Iniziamo installando transmission con il comando: sudo apt-get install transmission-daemon

Quindi fermiamo subito il servizio per lavorare con calma sul file di configurazione:

sudo service transmission-daemon stop

Apriamo il file di configurazione per impostare correttamente Transmission:

sudo nano /etc/transmission-daemon/settings.json

All’interno di questo file ci sono tutte le opzioni di transmission. Di seguito elencherò quelle fondamentali da modificare/verificare in base alle vostre esigenze (notare, e prestare attenzione durante le modifiche, che tutte le righe di configurazione finiscono con una vrigola, tranne quella alla fine del file, dopo la quale c’è la parentesi graffa):

“download-dir”: “percorso“, qui deve essere inserita la cartella in cui verranno salvati i file completati. Ad esempio la cartella /mnt/disco_nas/pubblica creata nel capitolo precedente;

“incomplete-dir”: “percorso“, cartella in cui vengono memorizzati i download incompleti, non è necessario modificarla, ma se state scaricando un file che occupa più spazio di quanto ne è disponibile sulla SD, il download si interrompe (perché questa cartella è sulla SD);

“rpc-enabled”: true, abilita l’accesso remoto tramite browser;

“rpc-password”: “inserire qui la password“, qui deve essere scritta la password che viene richiesta al momento dell’accesso da browser, anche se subito la password è in chiaro, al riavvio di transmission verrà criptata e sarà illeggibile;

“rpc-username”: “nome_utente“, nome utente da utilizzare per l’accesso da browser;

“rpc-whitelist-enabled”: false, questo parametro messo a true abilita l’accesso solo a determinati IP inseriti nella whitelist. Lasciatelo false, altrimenti non potete accedere con un pc che ha un ip assegnato dal dhcp.

C’è una funzionalità che normalmente è disbilitata, ma può tornare utile in certi casi: la cartella di watch.

Aggiungendo al file di configurazione le righe:

“watch-dir”: “percorso_cartella“,

“watch-dir-enabled”: true,

Quando copierete un file .torrent all’interno della cartella specificata nel percorso di “watch-dir”, questo verrà automaticamente aggiunto alla coda dei download.

Quando avete finito di editare il file, salvate e chiudete.

Adesso bisogna impostare qualche permesso, altrimenti transmission potrebbe avere dei problemi a memorizzare i file.

con sudo useradd pi debian-transmission aggiungiamo Pi al gruppo debian-transmission.

Apriamo il file di inizializzazione di Transmission con sudo nano /etc/init.d/transmission-daemon e modifichiamo il parametro USER, in modo da ottenere USER=pi . Quindi salviamo e chiudiamo il file.

Inviamo i comandi:

sudo chown pi -R /var/lib/transmission-daemon/info/

sudo chown pi /etc/transmission-daemon/settings.json

Questo per aggirare un possibile bug di transmission che non permette lo scaricamento dei file su dischi usb, io non li ho mai usati questi comandi e non ho mai avuto problemi, però potrebbero servire.

Quindi avviamo il demone: sudo service transmission-daemon start .

Adesso è possibile accedere alla console di comando di transmission aprendo un browser da un qualsiasi pc della lan e scrivendo nella barra degli indirizzi: http://ip_raspberry:9091 .

Per velocizzare la velocità di download, è possibile eseguire il portforwarding del router. Se non sapete come farlo, consultate il sito www.portforward.com, in cui sono riportate le procedure per tutti i router. Per accedere alle guide bisogna cliccare su “port forwarding guides” nel menu a sinistra, quindi selezionare marca e modello del router e software usato (transmission).

 


Crontab (pianificazione eventi)

Questo utilissimo software permette di pianificare degli eventi che si devono svolgere in determinati momenti. Si possono impostare data ora e giorno della settimana, quindi il comando da eseguire. È molto semplice da configurare, e di seguito si vedrà la procedura per avviare Transmission alle 22:00 e fermarlo alle 11:00. Questi orari sono solo di esempio, ma ovviamente si possono modificare.

Crontab è già installato di default nelle distribuzioni Linux.

Per iniziare, apriamo il file di configurazione di Crontab: sudo nano /etc/crontab , in cui andremo ad inserire i comandi cron.

I comandi cron sono stringhe di parametri che eseguono un comando di sistema in determinati tempi.

Un comando cron è composto nel seguente modo:

<P1> <P2> <P3> <P4> <P5> <proprietario> <comando>

<P1> rappresenta i minuti: i valori possibili vanno da 0 a 59;

<P2> rappresenta le ore: i valori vanno da 0 a 23;

<P3> rappresenta il giorno del mese: i valori vanno da 1 a 31;

<P4> rappresenta il mese: i valori vanno da 1 a 12;

<P5> rappresenta il giorno della settimana: i valori vanno da 1 a 7;

<proprietario> è il nome dell’utente che deve eseguire il comando;

<comando> è il comando vero e proprio, ad esempio sudo service transmission-daemon start .

I valori dei parametri <Px> possono essere:

un numero: per eseguire il comando esattamente in quel momento e basta;

un * (asterisco): per non tenere conto del parametro;

un intervallo di tempo: per eseguire il comando durante tutto l’intervallo di tempo (esempio: se P1 è impostato come 2-9, il comando verrà eseguito dal minuto 2 al minuto 9. Se impostato come 2,5,9 il comando verrà eseguito al minuto 2, 5 e 9).

Per avviare Transmission alle 22:00 e fermarlo alle 11:00, bisogna aggiungere le seguenti due righe:

0 22 * * * root sudo service transmission-daemon start

0 11 * * * root sudo service transmission-daemon stop

 

Per eseguire un comando all’avvio del sistema, si può aggiungere una riga come la seguente:

@reboot <proprietario> <comando>

ovvero viene inserito il parametro @reboot invece dei 5 parametri temporali.

 


Conclusione

Ho racchiuso più guide in un unico articolo, perché, come detto all’inizio, se seguito dall’inizio alla fine permette di configurare da zero un torrentbox con condivisione file e crontab. Ma possono anche essre utilizzati i vari capitoli separatamente. Stavolta ho trattato funzioni puramente informatiche, e del GPIO non c’è nemmeno l’ombra. Ma il Raspberry è una macchina speciale proprio per questo, può essere utilizzata per cose completamente diverse.

 

 

Licenza Creative Commons
Quest’opera di www.tecnovolt.it è distribuita con Licenza Creative Commons Attribuzione – Non commerciale – Non opere derivate 3.0

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Name the Author      
 

* Privacy Policy GDPR

*

Accetto