# Créer une Seedbox sur Raspberry Pi avec Transmission

Procédure pas à pas pour créer une Seedbox avec un Raspberry Pi, un disque dur USB et le logiciel Transmission.

---

#### Formater et monter le disque dur USB

Une fois le disque dur USB connecté au Raspberry, utiliser la commande suivante pour lister tous les disques et repérer le bon volume.

```
sudo fdisk -l
```

Exemple de sortie de la commande **fdisk -l**

```
Disque /dev/sdb : 298,1 GiB, 320072933376 octets, 625142448 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xf381da99
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 2048 625119231 625117184 298,1G 7 HPFS/NTFS/exFAT
```

Dans ce cas le disque USB est **/dev/sdb**, sa première partition est **/dev/sdb1** et son système de fichier NTFS.

Pour créer ou recréer une partition sur le disque **/dev/sdb** on utilise l'outil fdisk :

```
sudo fdisk /dev/sdb
```

Une fois fdisk lancé, commande **'p'** pour lister les partitions du disque sélectionné et être sur qu'il s'agit du bon disque.

Exemple :

```
Commande (m pour l'aide) : p
Disque /dev/sdb : 298,1 GiB, 320072933376 octets, 625142448 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xf381da99
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 2048 625119231 625117184 298,1G 7 HPFS/NTFS/exFAT
```

Pour supprimer la partition, commande '**d**' :

```
Commande (m pour l'aide) : d
Partition 1 sélectionnée
La partition 1 a été supprimée.
```

Créer une nouvelle partition avec la commande '**n**'. Choisir partition primaire '**p**', puis numéro de partition '**1**' et valider deux fois avec Entrer pour sélectionner le début et la fin par défaut de la partition.

```
Commande (m pour l'aide) : n
Type de partition
   p   primaire (0 primaire, 0 étendue, 4 libre)
   e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (1-4, 1 par défaut) : 1
Premier secteur (2048-625142447, 2048 par défaut) :
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-625142447, 625142447 par défaut) :

Une nouvelle partition 1 de type « Linux » et de taille 298,1 GiB a été créée.
```

Pour écrire les modifications sur le disque et quitter l'utilitaire **fdisk**, il faut utiliser la commande '**w**'

Pour finir, il faut formater la partition en **EXT4** :

```
sudo mkfs.ext4 -b 4096 /dev/sdb1
```

Pour monter la partition sur le Raspberry et pouvoir l'utiliser, il faut commencer par créer un point de montage dans **/media**.

```
sudo mkdir /media/disqueUSB
```

Pour monter la partition automatiquement au démarrage grâce à **fstab**, il faut connaître l'**UUID** de la partition. Lancer la commande :

```
sudo blkid /dev/sdb1
```

On obtient quelque chose comme

```
/dev/sdb1: LABEL="FreeAgent" UUID="8E7C36397C361C81" TYPE="ext4" PARTUUID="f381da99-01"
```

Ensuite éditer le fichier **/etc/fstab**

```
sudo nano /etc/fstab
```

Ajouter les lignes ci-dessous à la fin du fichier, renseigner l'**UUID** sans les guillemets.

```
# disque usb /dev/sdb1
UUID=8E7C36397C361C81 /media/disqueUSB/ ext4    defaults    0    2
```

Le répertoire **/dev/disk/by-uuid/** qui recense les disques par UUID n'est mis à jour que pendant le démarrage. Pour le mettre à jour manuellement :

```
sudo udevadm trigger
```

Monter la partition :

```
sudo mount /media/disqueUSB
```

Pour vérifier si la partition est bien montée :

```
mount | grep /media/
```

Retour de la commande :

```
/dev/sdb1 on /media/disqueUSB type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
```

La partition **sdb1** est bien montée dans **/media/disqueUSB**. Elle sera montée automatiquement à chaque redémarrage.

Changer le propriétaire du disque par l'utilisateur **pi** et régler les autorisations de lecture / écriture :

```
sudo chown pi:pi /media/disqueUSB
sudo chmod 755 /media/disqueUSB
```

#### Installer et configurer Transmission

Installer le daemon Transmission :

```
sudo apt-get install transmission-daemon
```

Créer un répertoire **Telechargements** dans **/media/disqueUSB**

```
mkdir /media/disqueUSB/Telechargements
sudo chown debian-transmission:debian-transmission /media/disqueUSB/Telechargements
sudo chmod 755 /media/disqueUSB/Telechargements
```

Stopper le daemon avant de modifier le fichier de configuration.

```
sudo service transmission-daemon stop
```

Le fichier de configuration se trouve dans **/etc/transmission-daemon**, à modifier pour paramétrer le dossier des téléchargements et l'accès à l'interface web.

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

Chercher et modifier les lignes suivantes :

```
"download-dir": "/media/disqueUSB/Telechargements",
"port-forwarding-enabled": true,
"rpc-password": "mot_de_passe",
"rpc-username": "nom_d_utilisateur",
"rpc-whitelist-enabled": false,
"umask": 0,
```

Démarrer le daemon Transmission

```
sudo service transmission-daemon start
```

L'interface Web de Transmission devrait être accessible dans un navigateur sur le réseau local à l'adresse [http://IP\_RASPBERRY:9091](http://IP_RASPBERRY:9091).

Se connecter avec le **username** et le **password** définis dans le fichier de configuration.

#### Partage réseau avec Samba

Le logiciel Samba est un outil permettant de partager des dossiers et des imprimantes à travers un réseau local. Il permet de partager et d'accéder aux ressources d'autres ordinateurs fonctionnant sous Windows et GNU/Linux. Le but ici est de partager sur le réseau local le contenu du disque dur USB.

Installer samba :

```
sudo apt-get install samba
```

Le fichier de configuration de samba se trouve dans **/etc/samba/**. Ouvrir le fichier de configuration avec nano :

```
sudo nano /etc/samba/smb.conf
```

Ajouter la définition de partage suivante à la fin du fichier :

```
[disqueUSB]
   comment = Disque dur USB
   path = /media/disqueUSB
   browseable = yes
   guest ok = yes
   writeable = yes
   public = yes
   security = share
   create mask = 0777
   directory mask = 0777
```

Redémarrer le service samba :

```
sudo service smbd restart
```

Le disque dur monté dans **/media/disqueUSB** devrait être accessible sur le réseau.

#### Ouverture et redirection des ports du routeur

Afin que Transmission fonctionne correctement et que l'interface Web soit accessible via internet, les port **51413** et **9091** doivent être ouverts et redirigés dans le routeur.

Sur une Livebox, ouvrir l'interface Web et se connecter, aller dans l'onglet "**configuration avancée**" puis dans l'onglet "**DHCP**". Dans la section "**Baux DHCP** **statiques**", choisir le nom du Raspberry et l'ajouter dans la liste pour fixer son adresse ip locale.

Toujours dans l'onglet "**configuration avancée**" puis dans l'onglet "**NAT/PAT**", ajouter une règle de redirection, nom du service "**Transmission**", port interne et externe **51413**, protocole "**les deux**" et choisir le Raspberry dans la liste des appareils.

Ajouter une seconde règle, nom du service "**Client Transmission**", port interne et externe **9091**, protocole "**les deux**" et choisir le Raspberry dans la liste des appareils.

L'interface Web de Transmission devrait être accessible à partir d'une connexion 4G à l'adresse [http://IP\_BOX\_INTERNET:9091](http://IP_BOX_INTERNET:9091).

#### Mise à jour DNS dynamique avec ddclient

**ddclient** permet d'automatiser la mise à jour d'une adresse IP dynamique reliée à un nom de domaine.

S'inscrire sur le service [https://www.noip.com](https://www.noip.com). Dans le dashboard, ajouter un hostname en choisissant l'un des domaines proposés. Exemple : **choukahost.ddns.net**

Installer **ddclient** et passer la configuration rapidement en choisissant n'importe quoi.

```
sudo apt-get install ddclient
```

Éditer le fichier de configuration avec nano.

```
sudo nano /etc/ddclient.conf
```

Exemple de fichier de configuration :

```
daemon=600            # check every 600 seconds
protocol=noip
use=web, web=checkip.dyndns.com/, web-skip='IP Address'
server=dynupdate.no-ip.com
login=username
password='motdepasse'
choukahost.ddns.net
```

Redémarrer le daemon ddclient.

```
sudo service ddclient restart
```

Pour faire un essai, modifier l'IP du hostname sur noip.com et mettre 0.0.0.0 puis redémarrer le daemon ddclient. L'adresse IP devrait être mise à jour automatiquement.

L'interface Web de Transmission devrait être accessible à l'adresse suivante **http://choukahost.ddns.net:9091** depuis n'importe quelle connexion internet. Avec une Livebox, l'adresse ne fonctionne pas en local.

#### Clients Linux, Windows et Android

**TransGUI - Transmission Remote GUI** :   
Pour Windows et Linux   
[https://github.com/transmission-remote-gui/transgui/releases](https://github.com/transmission-remote-gui/transgui/releases)

**Gearshift** :   
Pour Android  
[https://github.com/urandom/gearshift/releases](https://github.com/urandom/gearshift/releases)

**Transmission Remote** :   
Pour Android  
[https://play.google.com/store/apps/details?id=net.yupol.transmissionremote.app](https://play.google.com/store/apps/details?id=net.yupol.transmissionremote.app)

**Transmission easy client** :   
Extension Chrome  
[https://chrome.google.com/webstore/detail/transmission-easy-client/cmkphjiphbjkffbcbnjiaidnjhahnned](https://chrome.google.com/webstore/detail/transmission-easy-client/cmkphjiphbjkffbcbnjiaidnjhahnned)

**Transmission easy client** :   
Extension Firefox  
[https://addons.mozilla.org/fr/firefox/addon/transmission-easy-client/](https://addons.mozilla.org/fr/firefox/addon/transmission-easy-client/)