Après y avoir installé un serveur web et mon blog sous pluxml, je continue mes petites expériences avec l'installation d'un client p2p bittorent sur ce petit serveur virtuel. Sur ce genre de machine, on ne va pas certainement pas installer un client lourd avec interface graphique. Du coup, il faut chercher du côté des clients en ligne de commande + interface web pour l'accès distant.

Après avoir farfouillé du côté de rtorrent et de de ses web-GUI, je me suis aperçu que mon client bittorent habituel Transmission disposait d'intéressantes variantes en dehors de la version GTK qu'on connait bien pour être le client bitorrent natif de Gnome : Transmission-CLI ( le client en de commande ) et surtout ce qui nous intéresse ici, Transmission-daemon qui va parfaitement répondre au besoin d'installation d'une seedbox légère sur ce micro vps !
Installation de Transmission.
Le truc intéressant avec Transmission c'est qu'il propose trois moutures bien distinctes : le Transmission de gnome qu'on connait bien , la version en ligne de commande (Transmission-CLI) et la version "Démon" (Transmission-daemon) fonctionnent de manière totalement indépendante.
Disons le tout de suite , si j'aime beaucoup administrer (enfin tenter d'administrer) mes machines avec un terminal, l'idée de me frapper de la ligne de commande pour simplement télécharger et partager (seeder) mes isos de Debian ou Ubuntu par exemple ne m'attire pas du tout.
Donc, mon cahier des charges est simple: Je veux un client bittorent léger avec une interface web pour gérer les torrents. Ce qu'il me faut ici c'est donc Transmissions-daemon qui dès installation embarque tout ce qu'il faut pour avoir une interface de gestion via notre navigateur préféré.
Sur notre Debian, on passe en mode root (administrateur) et on engage les manoeuvres:
#apt-get install transmission-daemon
Ne pas installer transmission ou transmission-cli , la version "démon" fonctionne parfaitement seule !
Et voilà, l'installation est terminée et on peut vérifier que notre démon transmission tourne !
# ps aux | grep transmission
106 365 0.4 3.6 97028 4764 ? Ssl 09:19 0:14 /usr/bin/transmission-daemon
On peut aussi surveiller ça avec top ou htop mais ça impressionne plus d'utiliser du ps et du grep sur un blog ;-))))
Ceci dit avec tout ça, on ne sais pas encore comment donner des instructions à notre client p2p fraîchement installé.
Mise en place de l'accès à l'interface web.
On accède à cette web-GUI en utilisant l'addresse suivante dans notre navigateur: http://ip_du_serveur:9091/transmission/web.
Transmission-daemon écoute sur le port 9091. Si on utilise un pare-feu, il faudra donc penser à ouvrir le trafic entrant sur ce port via l'outil de parefeu que vous vous êtes choisi.
Dans mon exemple c'est un vKS et j'utilise dans un script contenant des règles iptables ( voir ici au chapitre pare-feu) dans lequel il faut rajouter une règle dédiée à transmission :
# Transmission-daemon
iptables -t filter -A OUTPUT -p tcp --dport 9091 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 9091 -j ACCEPT
Ceci dit, si ça permet d'accéder à l'interface web, ça ne suffit pas pour le fonctionnement général de Transmission. En effet, Transmission utilise d'autres ports : 51413 pour les connexions entrantes et la plage 49152 - 65535 pour les connexions sortantes au divers peers. Il faut donc adapter les règles de pare-feu en conséquence.
Au premier essai , on récolte tout de suite des méchancetés de la part de notre serveur:
Heureusement le méchant message explique où est le souci et donne des pistes pour résoudre ce souci d'accès : il faut configurer notre transmission-daemon vi son fichier settings.json. En l'occurence , ce fichier est dan /var/lib/transmission-daemon/info. On va donc aller y fourrer notre nez :
Il faut absolument arrêter le démon pour pouvoir faire prendre en compte les modifs:
# service transmission-daemon stoppuis
#nano /var/lib/transmission-daemon/info/settings.json
et modifier les éléments nécessaires comme suit :
"rpc-whitelist": "127.0.0.1,*.*.*.*",
ici on autorise toutes les IP, si on souhaite mettre une seule ip ou une gamme d'ip, il faut adapter la configuration. On enregistre ( Ctrl + O dans nano) et on redémarre :
#service transmission-daemon start
Puis on retente l'accès via http://IP_DU_SERVEUR:9091/transmission/web/ . On accède alors à une demande d'identification où l'identifiant par défaut est "transmission" ainsi que le mot de passe. On accède alors à notre Interface de gestion dans notre navigateur !
Evidemment , au démarrage les isos de Debian ne sont pas livrées préchargées ;) .
Si on a l'habitude de ce genre de client p2p, on retrouve les fonctionnalités de base habituelles ainsi qu'une base de paramétrage simple. L'essentiel est là. Pour ajouter un téléchargement on passe par "open" et soit on uploade le fichier torrent , soit on copie/colle le lien de téléchargement de ce fichier et voilà tout ! .
Il est à noter que les fichiers téléchargés sont disponibles dans /var/lib/transmission-daemon/downloads . Ce point est paramétrable via le fichier settings.json mais aussi via l'interface web (cliquoter sur l'engrenage puis "preferences") , le tout étant de s'assurer de sélectionner un dossier où le user de transmission-daemon ( debian-transmission en l'occurence sur ma Squeeze) aura bien les droits d'écriture. ;)
Pour modifier les identifiants de base et adopter un user/password personnel, il va falloir retourner comme tout à l'heure dans settings.json.
# service transmission-daemon stop
#nano /var/lib/transmission-daemon/info/settings.json
Les éléments à modifier sont ceux-ci :
...
"rpc-password": "{58c5342a7413ea4fc93a7ff332568cc6c6fc01acI5lEVTaU",
...
"rpc-username": "transmission",
...
On remplace d'abord transmission par le user souhaité. Pour rpc-password , en fait tout ce qui est entre "" est la version cryptée du mot de passe actuel. Pour changer le mot de passe, il faut tout remplacer par le mot de passe en clair genre :
"rpc-password": "password",
Puis on enregistre et on redémarre transmission-daemon .
#service transmission-daemon start
Si on retourne alors dans settings.json aller jeter un oeil à notre "rpc-password" on constate que notre password en clair a été crypté ;) . On peut conserver alors cette configuration et accéder directement à transmission par les modalités décrites.
En ce qui me concerne, j'ai opéré différemment .
Transmission-daemon derrière un proxy avec lighttpd
Dans la mesure où mon micro vKS est équipé d'un serveur web j'ai préféré opter pour l'utilisation de lighttpd en reverse-proxy pour transmission et laisser l'accès direct à transmission restreint au local (127.0.0.1) et le port 9091 fermé sur l'extérieur. L'avantage c'est qu'on peut alors utiliser un classique accès par le port 80 sur lighttpd qui se charge du transit avec transmission.
Sur la base d'installation telle que décrite ici , on réalise donc en plus de l'installation de transmission décrite ci-dessus les manips suivantes. Evidemment, on ne touche plus au fichier settings.json pour ouvrir l'accès à d'autres IP que 127.0.0.1. On adapte juste les user/password tels que souhaités.
D'abord on active si ce n'est pas déjà fait mod_proxy sur le serveur lighttpd:
# lighttpd-enable-mod proxy
Puis on fait prendre en compte la modif:
# service lighttpd force-reload
Il s'agit alors de mettre en place un virtualhost.
Je n'ai pas testé mais monter un vhost + reverse proxy avec l'IP du serveur me parait être une mauvaise idée. Du coup, j'ai mis en place un virtualhost avec un nom de domaine par exemple transmission.alter-it.org.
On met en place ce virtualhost en éditant le fichier /etc/lighttpd/lighttpd.conf pour y ajouter les lignes suivantes en fin de fichier après les autres virtualhosts éventuels:
$HTTP["host"] =~ "transmission\.alter-it\.org$" {
proxy.server = ( "" => (("host" => "127.0.0.1", "port" => 9091 )))
}
Puis on recharge la configuration
service lighttpd force-reload
Ainsi notre transmission devient disponible via: http://transmission.alter-it.org/transmission/web. Via un classique port 80 accessible facilement depuis n'importe où ;) . Ne pas oublier les règles de firewall dans un éventuel pare-feu qui bloque tout par défaut...
A priori la config qui fonctionne est :
#Transmission
iptables -A INPUT -p udp --dport 51413 -j ACCEPT
iptables -A INPUT -p tcp --dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp --dport 49152:65535 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 49152:65535 -j ACCEPT
A ce stade, j'ai donc un micro vKS + serveur web/php + seedbox et ... 43Mo de RAM utilisée sur les 128 dispo.
Evidemment 4,5 Go disponible pour une seedbox ça fait pas bézef mais ça permet de mettre à dispo des images de votre distribution favorite et participer ainsi à la diffusion du logiciel libre sur votre propre dédié et le tout avec moins de RAM que la TV géante du voisin. La classe !
10 commentaires
mercredi 11 juillet 2012 à 18:54 jdrien a dit : #1
mercredi 11 juillet 2012 à 22:49 Sorrodje a dit : #2
dimanche 22 juillet 2012 à 16:12 Zouave36 a dit : #3
lundi 23 juillet 2012 à 15:32 Sorrodje a dit : #4
samedi 15 septembre 2012 à 18:44 farezz a dit : #5
samedi 06 octobre 2012 à 11:46 bibi a dit : #6
mercredi 13 novembre 2013 à 13:45 Pierrot a dit : #7
jeudi 14 novembre 2013 à 19:50 Sorrodje a dit : #8
jeudi 19 décembre 2013 à 10:46 Vintz a dit : #9
jeudi 19 décembre 2013 à 12:30 Sorrodje a dit : #10