Progetto #4 – Torrent download server con Raspberry PI

In questo nuovo articolo illustrerò come realizzare un server per il download di torrent su Raspberry PI, utile per chi non vuole lasciare acceso il PC per scaricare torrent da rete p2p.

In particolare, in questo progetto utilizzeremo:

  1. Raspberry PI (consiglio il modello B, comunque sia attualmente lo sto facendo su un Raspberry PI 2 Modello B che vanta un processore ARM quad-core da 900 MHz e 1 GB di RAM);
  2. Scheda SD o micro-SD (a seconda del modello di Raspberry PI che possedete) abbastanza capiente (io ne utilizzerò una da 32 GB, acquistata su Amazon per 16 €);
  3. Adattatore WI-FI o cavo ethernet per collegare il Raspberry PI sulla rete;
  4. Il software Transmission Torrent Client (che ci permetterà proprio di realizzare un server).

Transmission Torrent Client

Apriamo la shell del nostro Raspberry PI (o via GUI direttamente da esso oppure via SSH) e dopo aver effettuato il login digitiamo il seguente comando:

sudo apt-get install transmission-daemon

Questo ci consentirà di effettuare l’installazione del software. Dopodiché creiamo due cartelle nelle quali il programma andrà a salvare i download completi e quelli incompleti, digitando:

mkdir -p /home/pi/incompleti  
mkdir /home/pi/completi

Fatto ciò impostiamo i permessi di accesso che serviranno a rendere accessibili le due directorty sopra citate con i comandi:

sudo usermod -a -G debian-transmission pi
chgrp debian-transmission /home/pi/incompleti
chgrp debian-transmission /home/pi/completi
chmod 770 /home/pi/incompleti
chmod 770 /home/pi/completi

Adesso passiamo alla parte che prevede la configurazione del software. Con il comando:

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

Si aprirà un editor di testo che ci permetterà di modificare il file di configurazione di Transmission. Assicuriamoci che il file di configurazione sia simile al seguente:

{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": false,
"download-dir": "/home/pi/completi",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/home/pi/incompleti",
"incomplete-dir-enabled": true,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 2,
"peer-congestion-algorithm": "",
"peer-limit-global": 91,
"peer-limit-per-torrent": 150,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": false,
"port-forwarding-enabled": true,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "PASSWORD-PER-IL-LOGIN",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "NOME-UTENTE",
"rpc-whitelist": "*.*.*.*",
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 250,
"speed-limit-down-enabled": true,
"speed-limit-up": 20,
"speed-limit-up-enabled": true,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-limit": 100,
"upload-limit-enabled": true,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}

È necessario impostare una password e un nome utente per potersi collegare al nostro server da remoto, comunque sia da notare sono le impostazioni:

  1. speed-limit-down che ci permette di impostare un limite sulla velocità di download dei torrent;
  2. speed-limit-up che permette di impostare un limite sulla velocità di upload;
  3. rpc-password dove è possibile impostare la password per il login al server via HTTP;
  4. rpc-username che permette l’impostazione dell’username per il login.

Dopo aver salvato il file di configurazione premendo i tasti [Ctrl] + [X] e rispondendo di sì alla domanda “Salvare il buffer modificato?”, riavviamo il software utilizzando i seguenti comandi (è obbligatorio utilizzare il reload in quanto questo software durante il riavvio sovrascrive il file di configurazione presente su disco con quello che ha caricato in RAM):

sudo service transmission-daemon reload
sudo service transmission-daemon restart

Fatto questo, collegandoci a http://INDIRIZZO-IP-DEL-NOSTRO-RASPBERRY:9091 sarà possibile accedere all’interfaccia del software, dopo aver effettuato il login.

Nel caso in cui dopo un certo numero di giorni che lasciate acceso il vostro Raspberry PI a scaricare dalla rete p2p incontraste problemi o messaggi di errore come “Kernel Panic”, assicuratevi di seguire le seguenti istruzioni:

  1. Modificare /boot/cmdline.txt e aggiungervi “smsc95xx.turbo_mode=N“;
  2. Modificare /etc/sysctl.conf e cambiare vm.min_free_kbytes =8192 in vm.min_free_kbytes =16384.

È tutto, assicuratevi di aver installato e configurato Samba nel caso in cui voleste accedere ai files scaricati tramite la rete che crea Windows.

 

AGGIORNAMENTO: In seguito all’uscita della nuova versione di Raspbian con Debian Jessie (e quindi con la comparsa di systemd), a seconda di dove si decide di salvare i files scaricati si potrebbe incorrere in un errore (permesso negato). Per risolvere il problema, invito a seguire la guida qui descritta, che risolve il problema su Ubuntu, ma è valida anche per Raspbian “Jessie” (l’ho utilizzata per risolvere questo problema).