Procédure pas à pas pour créer une Seedbox avec un Raspberry Pi, un disque dur USB et le logiciel Transmission.
Sommaire
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.
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.
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. 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
Gearshift :
Pour Android
https://github.com/urandom/gearshift/releases
Transmission Remote :
Pour Android
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
Transmission easy client :
Extension Firefox
https://addons.mozilla.org/fr/firefox/addon/transmission-easy-client/