Téléchargement Torrent / Magnet avec WebUI et VPN
Voici une petite présentation de mon serveur de téléchargement autonome accessible par interface web (uniquement depuis le réseau local) qui me sert à télécharger et partager des fichiers sur internet.
Matériel et Logiciel
Le serveur est virtualisé par VMware sur mon ordinateur de bureau, il accède au Core i7 860, et a droit à 256Mo de mémoire vive sur les 8GB disponibles. Le disque virtuel fait 10GB (tout est stocké sur un partage NFS ensuite).
- OS : Debian Squeeze 6.0 amd64
- Client bitorrent / magnet : transmission-daemon
- VPN : OpenVPN + Psilo.fr
Configuration
Stockage
Debian est installé sur le disque virtuel VMware de 10GB, en revanche sur /srv/Torrent j'ai monté un partage nfs, avec l'entrée /etc/fstab suivante :
192.168.10.50:/srv/Torrent/ /srv/Torrent/ nfs defaults,user,auto,noatime,intr 0 0
Transmission
J'ai modifié les deux paramètres suivants dans /etc/transmission/settings.json :
"download-dir": "/srv/Torrent", "rpc-whitelist": "127.0.0.1,192.168.10.*,192.168.1.*",
Ceci afin d'autoriser l'accès au WebUI depuis mes deux réseaux, et définir le bon répertoire de stockage des fichiers. Note : vous devez arrêter le daemon transmission avant de faire ces changements, sinon ils seront perdus.
OpenVPN
Il suffit de coller dans /etc/openvpn les fichiers fournis par le prestataire du vpn. Pour ma part j'ai renommé le fichier de configuration en "psilo.conf" pour être certain qu'il soit pris en compte.
Accès à l'interface
Dans un navigateur web, entrez l'IP du serveur suivi du port 9091. Un utilisateur et mot de passe seront demandés : transmission / transmission.
Cliquez sur "Open" pour pouvoir envoyer votre fichier .torrent ou directement coller l'URL. Même procédure avec les magnets. Après quelques secondes le téléchargement devrait débuter.
Astuces
Error: No data found! Au démarrage
Au démarrage du serveur, il se peut que tous les fichiers soient en gris avec l'indication "Error: No data found! Reconnect any disconnected drives, use "Set Location", or restart the torrent to re-download". Il faut aller faire un clic droit sur chaque fichier et sélectionner "Verify Local Data". Mais cela peut être pénible quand il y en a beaucoup, aussi on peut utiliser une commande :
# transmission-remote -n transmission:transmission --torrent all --verify
Cette erreur est probablement due au fait que transmission se lance avant le montage NFS. Il y a probablement des solutions plus propres, je suis preneur ! En attendant, la commande que je donne peut être mise dans un script.
Déconnexion du VPN
Un VPN est tout sauf fiable, il arrive très fréquemment que la connexion soit perdue, ce qui a pour conséquence de faire passer les téléchargements en clair sur internet... et sur transmission il semble impossible de forcer l'utilisation de l'interface tun0. Des manipulations sont sans doute possibles avec SELinux ou Apparmor, mais beaucoup trop complexes pour ce que l'on veut faire.
Alors, avec mon ami Etenil, nous avons concocté un petit bidouillage sous forme de script :
#!/bin/sh if [ ! -e /sys/devices/virtual/net/tun0 ] then transmission-remote -n transmission:transmission --torrent all --stop mail -s "VPN down" xavier@domaine.org fi
Grossomodo, le script vérifie la présence du fichier tun0, qui est là si le VPN est connecté. Si ce n'est pas le cas, il arrête tous les téléchargements, et envoie une alerte par mail. Ce script est à placer en tâche cron afin qu'il s'exécute régulièrement. Personnellement je lui demande de se lancer toutes les minutes... mais attention, si votre VPN est déconnecté pendant 1 heure, toutes les minutes le script enverra un mail... vous vous retrouverez donc avec 60 mails !
La aussi une solution plus propre est sans doute possible.
Récupérer les fichiers téléchargés
Vous pouvez le faire en installant openssh-server, et en vous connectant en sftp via nautilus, dolphin, filezilla ou autre. Vous pouvez aussi vous amuser à configurer un partage samba ou un accès ftp. Les possibilités sont nombreuses.