11 07 | 2012

Seedbox sur Micro vKS avec ... Transmission!

Rédigé par Sorrodje

Classé dans : Informatique, Tutos

Suite des aventures de mon micro-VKS!

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 stop
puis
#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

Salut,

Merci pour ce tuto fort utile, encore une fois. Tu vas croire que je suis monomaniaque mais quand j'ai lu que UDP serait filtré sur les microVKS (hormis pour les flux DNS sur le port 53), je me suis dit que les microVKS n'étaient pas faites pour être des seedbox. En effet, le blocage d'UDP empêche l'utilisation de DHT, donc est néfaste aux performances de notre seedbox...

Je me trompe ?

mercredi 11 juillet 2012 à 22:49 Sorrodje a dit : #2

Bah écoute, je découvre ce qu'est le DHT en lisant ton commentaire ;-)))). Je peux juste te dire que ma petite seedbox fonctionne très correctement. Pas mieux!

dimanche 22 juillet 2012 à 16:12 Zouave36 a dit : #3

Merci bien pour le tuto, il est vraiment bien fait ainsi que les autres concernant le vks gratuit ! Une aide précieuse ! Merci encore a+

lundi 23 juillet 2012 à 15:32 Sorrodje a dit : #4

http://forum.alter-it.org/

Et voilà un forum SMF sur micro vKS ;) Mémo d'install à venir mais ça n'a vraiment rien de compliqué.

LEs intéressés par une démarche communautaire autour de ces micro vks peuvent s'inscrire et papoter plus facilement que sur ce blog ;)

samedi 15 septembre 2012 à 18:44 farezz a dit : #5

bonjour,
merci pour ton tutoriel, comment récupéres-tu tes fichiers ensuite par ftp ?j'ai voulu installer pureftp mais je bloque au login. Crois-tu que je pourrais récupérer les fichiers depuis une raspberry pi ? merci

samedi 06 octobre 2012 à 11:46 bibi a dit : #6

Pas besoin de FTP, tu installes juste FileZilla sur la machine ou tu veux récupérer tes fichiers. Tu crées une nouvelle connection avec les parametres suivants:
Host: l'adresse ip de ton serveur
Protocol: Sftp
Logon type: normal
et ton login et mdp de ton serveur.
Et c'est tout tu peux maintenant explorer l'arborescence de ton serveur et récupérer tes fichiers juste par glisser-déposer.

mercredi 13 novembre 2013 à 13:45 Pierrot a dit : #7

Bonjour,

Merci bien pour le tuto. Ca marche, mais j'ai une question subsidiaire: je voudrais savoir comment on pourrait intégrer un module de recherche au webui de transmission pour faire directement des recherches de torrent sur un site avec authentification type t411 ?

Merci

jeudi 14 novembre 2013 à 19:50 Sorrodje a dit : #8

@Pierrot : Salut Pierrot. Aucune idée pour ce que tu souhaites faire ;)

jeudi 19 décembre 2013 à 10:46 Vintz a dit : #9

Sur la première commande j'obtiens :
apt-get install transmission-daemon
Lecture des listes de paquets... Erreur !
E: Erreur d'écriture - write (28: Aucun espace disponible sur le périphérique)
E: Impossible de mapper un fichier vide en mémoire
E: Échec de la troncature du fichier - ftruncate (9: Mauvais descripteur de fichier)
E: Les listes de paquets ou le fichier « status » ne peuvent être analysés ou lus.

Je n'arrive pas à trouver d'aide par rapport à cette erreur.

jeudi 19 décembre 2013 à 12:30 Sorrodje a dit : #10

@Vintz : Je ne pense pas que le souci soit lié à transmission daemon spécifiquement. Pb d'espace disque dans une partition ?

Écrire un commentaire

Quelle est la dernière lettre du mot aklef ? : 

Archives

Contrat Creative Commons
Ce(tte) oeuvre est mise à disposition selon les termes de la Licence Creative Commons Paternité - Partage à l'Identique 2.0 France
.