Purtroppo, a distanza di 5 anni di onorato servizio, la mia stazione Mini-ITX fanless è morta (non so ancora dove sia il guasto, ma è sempre stata – ininterrottamente – accesa e funzionante!!!).

Il suo principale utilizzo è stato come stazione di download peer-2-peer: di conseguenza ha subito nel tempo un considerevole stress. E la mancanza di ventola ha certamente influito sul suo ciclo vitale.

Non avendo intenzione di spendere denaro, mi sono per forza dovuto guardare intorno: in casa avevo disponibile un Raspberry Pi 3.

Cosa faremo

  1. Realizzeremo una stazione di download peer-2-peer molto leggera con un Raspberry Pi 3 e aMule (amuled-daemon)
  2. Configureremo il SO Linux Raspbian LITE (solo riga di comando) su una MicroSD da “soli” 2GB
  3. Prepareremo uno storage con una pendrive USB
  4. Useremo alcuni strumenti di monitoraggio remoto: amulecmd e amuleweb
  5. Condivideremo i files scaricati sulla rete locale tramite protocollo SAMBA

Un confronto

Mini-ITX Atom D435 (qui) Raspberry Pi 3 model B (ALTERNATIVA qui)
Mini PC Intel Atom
Processore Intel® Atom™ D425
(512K Cache, 1.80 GHz)
A 1.2GHz 64-bit
quad-core ARMv8 CPU
Intel® Atom™ x5-Z8300 (2M Cache, 1.84Ghz)
RAM 1GB DDR3 (1066 Mhz) 1GB DDR2 (900 MHz) 2GB DDR3
 Disco HDD 160GB 5400 rpm MicroSD 2GB classe 4
+ PenDrive 32GB USB 3.0
32GB (system disk)
Costo con accessori circa 120 euro nel 2011 (oggi difficilmente replicabile) circa 70 euro (qui da amazon.it in kit)  cica 100 euro (qui da amazon.it)
Note (OS Win10) NON supporta LINUX

Sulla carta la cosa non mi fa ben sperare: il Raspberry Pi è inferiore alla concorrenza su tutte le principali caratteristiche. D’altra parte la mia vecchia  configurazione Atom è difficile da replicare oggi con gli stessi prezzi.

In alternativa si trovano in commercio diversi Mini PC Atom preassemblati, ma sono purtroppo spesso vincolati ad usare SO Windows (problemi di BIOS). Costano decisamente poco, ma l’affidabilità è tutta da dimostrare.

Passiamo quindi alla prova dei fatti e vediamo come si comporta il lampone con una installazione di aMule

Gli ingredienti

Qui qualche consiglio per gli acquisti: il raspberry Pi 3 si trova anche in kit. Dovrete aggiungere eventualmente un cavo HDMI per il collegamento ad un monitor.

Transcend TS16GUSDU1 MicroSDHC Class10 U1 con adattatore
Transcend TS16GUSDU1 MicroSDHC Class 10 U1 con adattatore
Raspberry Pi B+ e Pi 2 alloggiamento Original bianco

Raspberry Pi B+ & Pi 2-3 Originale

Raspberry Pi 3 Model B Kit

Raspberry Pi 3 Model B Desktop (Quad Core CPU 1.2 GHz, 1 GB RAM, Linux)Raspberry Pi 3 Model B Desktop Raspberry Pi Model B+ OFFICIAL 5V 2A Multi National Power adapter

Raspberry Pi Model B+ OFFICIAL 5V 2A Multi National Power adapter

Tastiera 2.4GHz Wireless

Installiamo il SO: Raspbian LITE

Il SO scelto è quello ufficiale Raspbian: se avete a disposizione una MicroSD sufficiente capiente (aconsigliati 8GB), seguite queste istruzioni scaricando la ISO della versione desktop completa.

Avendo però io già a disposizione una MicroSD di soli 2GB ho deciso per una installazione “leggera” passando per il NOOBS (New Out Of the Box Software). Qui trovate la semplice guida di installazione. Ovviamente, in questo caso, il SO scelto è la versione di Raspbian LITE da riga di comando, cioè senza interfaccia grafica (GUI).

Questa soluzione vi permetterà anche di non sovraccaricare troppo il vostro Raspberry Pi, che non si dovrà occupare di lavorare con la scheda grafica. Se poi a voi la riga di comando non vi piace proprio, provate PIXEL.

In teoria, passando per il NOOBS, una volta preparata ed inserita la MicroSD nel Raspberry Pi, vi basterà accenderlo senza tastiera, mouse e monitor. Basterà infatti alimentarlo ed inserire il cavo di rete (questa cosa non funziona con il solo WiFi): in questo modo potrete connettervi da remoto (dal vostro PC usuale) in SSH:

  • Cercate l’indirizzo IP assegnato al vostro raspberry (accedere al router o usate uno di quei tool per lo scanning della rete locale)
  • Utilizzate il terminale locale del vostro PC per aprire una sessione SSH e collegarvi al Raspberry Pi (le credenziali di default sono pi/raspberry)

In alternativa, per la prima configurazione, collegate mouse, tastiera e monitor; quindi accedete il Raspberry Pi.

Lanciate sempre  sudo raspi-config

  • Opzione n.1: espandiamo il filesystem (necessario solo se non siete partiti da NOOBS)
  • Opzione n.2: cambiamo la password dell’utente di default (pi)
  • Opzione n.7 (avanzate): (A2) cambiamo l’host name per riconoscere la stazione in rete; (A3) cambiamo la quantità di memoria allocata per la scheda video a soli 16MB; (A4) abilitiamo l’SSH per connetterci da remoto (se non già abilitato).

Infine assegnate l’IP statico, in modo che questi non cambi mai: per questa operazione ed le altre configurazioni di base (come l’aggiornamento del sistema) potete fare riferimento ad alcuni dei passi presenti in questa guida ed in altre guide Linux sul blog.

Prima di installare qualsiasi nuovo componente vi consiglio di eseguire sempre il comandi di aggiornamento:

Configuriamo lo storage

Collegate la chiavetta USB (qui in calce qualche chiavetta economica consigliata; in alternativa potete collegare un HDD esterno, ma ricordatevi di alimentare adeguatamente il Raspberry Pi).


Lexar JumpDrive 32GB USB 3.0

Lexar JumpDrive 64GB USB 3.0

Lexar JumpDrive 128GB USB 3.0

Digitate sul terminale:

avrete l’elenco dei dischi ed il tipo di filesystem. Confrontate le dimensioni e potrete facilmente riconoscere la pendrive. Nel mio caso, ad esempio, una penna da 32GB (nominali) è stata mappata su /dev/sda . In particolare c’è una partizione DOS FAT32 in /dev/sda1 , che provvederemo ad eliminare e riformattare:

Usate il comando:

Ricordatevi di sostituire sda con il vostro valore di riferimento.

Digitate: p  per la lista delle partizioni. Per cancellarle, d ; Create la partizione primaria con n , quindi p . Occupate tutto lo spazio disponibile. Per applicare i cambiamenti, w . Per l’help usate m .

Quindi formattate come linux ext4.

Se rieseguite il comando sudo fdisk -l  troverete:

A questo punto è necessario montare l’unità su una cartella appositamente creata (io ho scelto di chiamarla torrents ):

L’ultimo comando vi da la conferma che la partizione (del giusto file system) sia correttamente montata e sia tutto ok:

A questo punto è necessario che l’unità venga montata in automatico ad ogni avvio del sistema. Modifichiamo un file di configurazione con:

aggiungiamo la seguente riga:

Ad esempio, nel mio caso, il file fstab si presenta alla fine così:

Riavviate il Raspberry Pi con:

Installiamo aMule Daemon

Emule da moltissimi anni continua ad essere un riferimento per il P2P. Quando si parla di eMule si fa riferimento all’eseguibile per SO Windows. Per le altre piattaforme il pacchetto di riferimento di chiama aMule, che deriva direttamente da eMule.

La cosa interessante è che aMule dispone di un demone chiamato amuled perfetto per le installazioni prive di GUI (come questa) e sistemi di bassa potenza. Installiamolo:

Il pacchetto di amule-daemon si porta dietro anche amulecmd e amuleweb di cui parleremo dopo.

In genere, subito dopo l’installazione, il demone non può partire perché manca una corretta configurazione. Prima di tutto è necessario configurare un utente non amministratore con cui farlo girare: chiamo questo utente amuleusr.

Dovreste proseguire con qualcosa del genere:

Per una ragione di comodità aggiungiamo temporaneamente l’utente amulusr al gruppo sudo, in modo che possa eseguire qualche comando con maggiori privilegi:

sudo adduser amuleusr sudo

Basta ricordarsi alla fine dell’installazione di eliminarlo dal gruppo sudo e di cambiargli la shell associata per evitare di loggarsi.

Una volta configurato l’utente editiamo il primo fondamentale file di configurazione di aMule:

E’ necessario indicare l’utente appena creato (amuleusr) come utente con cui far girare il demone (chiave AMULED_USER nel file di configurazione).

Alla fine della modifica il file dovrebbe essere una cosa del genere:

Volendo (ma in questo caso specifico non l’ho fatto) potremmo spostare sullo storage (la pen drive) tutta la cartella HOME di amuled che contiene sia i files di configurazione che le cartelle Temp (con gli spezzoni dei files in download) ed Incoming (con i files completi): basta popolare la chiave AMULED_HOME con il path dello storage.

Io personalmente preferisco tenere separati i files di configurazione dai files scaricati.

Quindi creiamo le due cartelle sulla pen drive: Temp e Incoming

Diamo i privilegi di scrittura al nostro utente amuleusr.

Fino a questo momento abbiamo operato con l’utente di default pi. Passiamo adesso all’utente amulusr, in modo da avviare finalmente il demone:

Ci chiederà ovviamente la password. Avviamo il demone con:

A questo punto all’interno della home dell’utente amuleusr verrà create una cartella nascosta .aMule . Diamo un occhiata:

Come anticipato vi troviamo le cartelle di servizio Incoming (files scaricati completi) e Temp (spezzoni dei files in download): queste verranno configurate sullo storage nelle analoghe cartelle create al passo precedente. E’ invece fondamentale il file di configurazione amule.conf  che deve essere editato.

Fermiamo temporaneamente il servizio:

Se volete avere la conferma che il servizio non giri più usate sempre il comando ps aux | grep amuled . Apriamo il file con l’editor:

Riporto qui le principali voci da modificare:

Per produrre la password da inserire in cofigurazione dovete calcolarne l’MD5. Ad esempio, per calcolare l’Md5 di ccworld usate:

Ricordatevi di configurare adeguatamente il NAT sul vostro router: tutte le porte devono essere aperte e ruotate. Nel file di configurazione in alto abbiamo ipotizzato di usare le seguenti porte: TCP 39521, UDP 39525.

Sul vostro router dovrete però aprire le seguenti porte

  • TCP 39521
  • UDP 39524 (cioè la porta TCP + 3)
  • UDP 39525

Potrebbe essere necessario intervenire anche sul firewall del Raspberry Pi. Potete usare questi comandi per modificarne la configurazione:

Ovviamente sostituite in modo opportuno le vostre porte IP a quelle dell’esempio.

Avviamo finalmente il demone (ricordiamoci di lavorare sempre con l’utente amuleusr):

Usiamo amulecmd

Il programma amulecmd è uno strumento da riga di comando che permette di controllare (sia in locale che in remoto) amuled. Per funzionare è importante che la sezione [ExternalConnect]  del file di configurazione amule.conf sia opportunamente compilata (vedi sopra).

Per lanciare amulecmd è sufficiente digitarne il comando amulecmd :

La password che vi verrà chiesta è esattamente quella impostata in amule.conf. Le operazioni da fare non sono tantissime, ma sono presenti quelle fondamentali: basta digitare help .

Ad esempio possiamo aggiungere qualche server, pescandolo dalla seguente lista (valida a gennaio 2017, ricordate di aggiornarla):

Una nota: ormai tutti i server di amule non sono affidabili (o non funzionano) per la ricerca. Se dovete cercare un file nella rete collegatevi alla rete Kad.

Per aggiungere i server al vostro mulo basta digitare all’interno di amulecmd il comando add seguito da uno dei link riportati in alto.

ripetete l’operazione per i restanti server (qui li riporto tutti per comodità).

Potete verificare con il comando show  che i server siano stati memorizzati:

A questo digitate il comando connect  ed aspettate qualche secondo. Se volete fare una ricerca (proviamo “spiderman“) potete usare il comando search kad :

Per ottenere il risultato digitiamo results :

Mi raccomando, non scaricate contenuti illegali!

Esiste un modo per sfruttare amulecmd direttamente dalla riga di comando principale, e di conseguenza negli script. Usiamo il comando   status  per vedere come vanno le cose. La sintassi è la seguente:

Ad esempio, dal prompt dell’utente:

Qui trovate un semplice script.

Ma non è tutto: amulecmd può comandare una installazione di amuled anche da remoto. E’ sufficiente installarlo sulla macchina remota e usare una sintassi del genere:

Usiamo amuleweb

Nella configurazione editata in fase di installazione abbiamo abilitato anche l’interfaccia web di aMule. Per funzionare è importante che la sezione [WebServer]  del file di configurazione amule.conf sia opportunamente compilata (vedi sopra).

La porta di default (che non abbiamo cambiato) è la 4711 e la password è quella inserita nel file di configurazione in formato Md5.

Digitando nel browser http://<IP>:4711/  possiamo autenticarci e visualizzare l’interfaccia grafica (seppur minimale).

Attraverso emuleweb è possibile variare alcuni parametri di configurazione, accedere al log, alle statistiche ed eseguire più facilmente le ricerche.

Condividiamo i files nella rete locale

L’idea è di condividere la cartella dei files scaricati

sulla nostra rete locale. Per fare questo installiamo il servizio SAMBA:

prima backuppiamo e poi editiamo il file di configurazione:

se vogliamo abilitare il supporto a Windows decommentiamo e modifichiamo la linea:

Aggiungete (o decommentate nel caso sia già presente) alla fine della sezione Authentication la seguente riga:

Aggiungete alla fine del file la seguente sezione (la prima riga tra parentesi identifica la vostra condivisione: assegnategli una etichetta chiara):

Assegnate la password all’utente che può collegarsi alla cartella condivisa:

(io per comodità uso lo stesso utente e la stessa password dell’utente amuleusr di amuled).

Riavviate il servizio:

 

La vostra stazione p2p è pronta…