====== Seedbox et streaming avec rtorrent+rutorrent sous Debian Wheezy ======
Le rêve, c'est d'avoir un youtube-en-mieux-et-rien-que-pour-soi mais avec les films en HD, lisibles dans VLC, on est d'accord. C'est ce dont on va parler.
Note: Ce guide est destiné à des personnes qui disposent d'un serveur, et ont des connaissances sous Linux. Les indications données ne sont faites pour être suivies pas à pas (il s'agit plus de prises de notes que d'un tutoriel :D) mais normalement il ne manque rien, donc faites à votre sauce et courage !
===== Présentation Terminologique =====
==== Qu'est-ce qu'une seedbox ? ====
C'est un serveur que vous aurez loué ou autre, et qui dispose d'une bonne bande passante (meilleure que votre connexion personnelle).
Ce serveur peut être utilisé pour mettre en partage des fichiers torrent, et ainsi seeder (d'où le nom), ce qui peut avoir l'avantage de booster votre ratio de partage.
Certains sites de torrent (dont T411 ou frenchtorrentdb) sont en effet des trackers privés qui comptabilisent le ratio réception/émission et qui interrompent vos téléchargements si vous avez trop reçu mais pas assez donné.
==== Streaming ? ====
Une fois les fichiers complétés sur votre serveur, vous aurez envie de les récupérer à pleine vitesse, ou bien les visionner directement depuis le serveur (streaming). Supra-easy si votre poste utilisateur est sous Linux.
==== rtorrent ====
... est le client bittorrent, à la base dépouillé d'interface graphique, communément utilisé sur les serveurs car consomme moins de ressources que ses congénères.
==== rutorrent ====
... est le nom d'une interface web (la seule qui tienne à peu près la route en mars 2013) qui vous permet d'interagir avec rtorrent.
==== Debian Wheezy ====
... est le nom du système d'exploitation, plus précisément une distribution Linux, que l'on retrouve sur la plupart des serveurs, mais aussi sur ma machine perso :D (et celle de nombreuses personnes de bon goût).
===== Indications =====
==== Installation de rtorrent ====
* Il n'est pas utile de compiler rtorrent sous Debian, le logiciel s'installe depuis les dépots officiels, et est fourni avec l'interface XML-RPC nécessaire à rutorrent. Donc NE COMPILEZ RIEN si vous êtes sous Debian.
* rtorrent cherche le fichier de config dans ~/.rtorrent.rc. Je n'ai pas trouvé comment changer ce chemin, à moins de recompiler.
* Démarrer rtorrent au démarrage du serveur, c'est possible, mais ça marchait pas dans mon cas. Voici un script à placer dans /etc/init.d qui pourrait vous aider.
- Note1: Changez la valeur de la variable USER !
- Note2: N'oubliez pas de rendre executable ce script (chmod +x /etc/init.d/rtorrent)
- Note3: Utilisez sysv-rc-conf pour ajouter ce script aux niveaux d'init (pas certain que ça fonctionne)
#! /bin/sh
### BEGIN INIT INFO
# Provides: rtorrent
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: rtorrent
# Description: start rtorrent
### END INIT INFO
USER="rtorrentuser"
case "$1" in
start)
echo "Starting rtorrent..."
su $USER -c 'screen -d -m -S rtorrent rtorrent'
;;
stop)
echo "Stopping rtorrent..."
#killall -s 2 rtorrent
su $USER -c 'screen -X -S rtorrent quit'
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Voir aussi:
* https://www.debian-fr.org/lancer-automatiquement-un-programme-au-demarrage-de-debian-t43087.html#p434345
* https://www.debian-fr.org/creer-un-fichier-de-lancement-init-d-t47630.html#p477427
Vous pourrez ensuite invoquer ce script en étant root:
/etc/init.d/rtorrent start
==== Configurez rtorrent ====
Note: N'utilisez pas les clauses "watch" ou les déplacements de fichiers dans le fichier de config de rtorrent, car cette fonction sera assurée dans notre cas par le plugin autotools de rutorrent. Si vous les mettez, rtorrent et rutorrent risquent de se tirer un peu dans les pattes car la glue entre ces 2 entités n'est pas parfaite.
Mon fichier rtorrent.rc ressemble à ça:
# Fichier de configuration de rtorrent.
download_rate = 0
upload_rate = 0
directory = /home/rtorrentuser/.rtorrent/current
session = /home/rtorrentuser/.rtorrent/session
port_range = 10010-10090
port_random = no
# check_hack sur 'yes' peut faire ramer le serveur
check_hash = yes
#check_hash = no
# Note: j'avais des "schedule" à la base mais ça foutait la merde avec rutorrent, qui gère cela avec le plugin auto_tools, donc à retirer ou laisser commenté !
#schedule = watch_directory,10,10,"load_start=/home/rtorrentuser/.rtorrent/watch/*.torrent,d.set_custom1=/home/rtorrentuser/downloads"
#system.method.set_key=event.download.finished,move_complete,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1="
dht = auto
dht_port = 10080
peer_exchange = yes
#encryption = allow_incoming,require,require_rc4
encryption = allow_incoming,enable_retry,prefer_plaintext
# Ca, c'est nécessaire pour que rutorrent fonctionne
scgi_port = localhost:5000
log.open_file = "rtorrent", "~/.rtorrent/rtorrent.log"
log.add_output = "critical", "rtorrent"
#log.add_output = "error", "rtorrent"
==== Configurez votre serveur web (ici: Apache) ====
Nécessaire: Installez libapache2-mod-scgi !
Et dites à Apache qu'il faut activer ce mod:
# en étant root
a2enmod scgi
=== Virtualhost ===
Dans la configuration du site (virtualhost), on définira 2 choses:
* Un Directory pour que rutorrent fonctionne (installé dans /var/www/rutorrent)
* Un Alias et Directory pour permettre le streaming par HTTP et VLC
Note: AllowOverride All vous permettra de spécifier des restrictions d'accès dans un .htaccess
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Alias /downloads /home/rtorrentuser/downloads
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
==== Installer rutorrent ====
Vous pourrez télécharger rutorrent et ses plugins (très recommandé) par ici: https://code.google.com/p/rutorrent/downloads/list?q=label:Featured
Mise à jour novembre 2015 : le code de rutorrent est désormais disponible sur GitHub : https://github.com/Novik/ruTorrent
- Note1: je ne sais pas à quoi correspond "1" en dessous de Theme, mais ça y était sur le fichier que j'ai repompé
- Note2: Vous pouvez (dés)activer les plugins comme vous le souhaitez, j'ai pour ma part gardé les plus essentiels
;; Plugins' permissions.
;; If flag is not found in plugin section, corresponding flag from "default" section is used.
;; If flag is not found in "default" section, it is assumed to be "yes".
;;
;; For setting individual plugin permissions you must write something like that:
;;
;; [ratio]
;; enabled = yes ;; also may be "user-defined", in this case user can control plugin's state from UI
;; canChangeToolbar = yes
;; canChangeMenu = yes
;; canChangeOptions = no
;; canChangeTabs = yes
;; canChangeColumns = yes
;; canChangeStatusBar = yes
;; canChangeCategory = yes
;; canBeShutdowned = yes
[default]
enabled = user-defined
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes
canBeShutdowned = yes
[_getdir]
enabled = yes
[show_peers_like_wtorrent]
enabled = no
[erasedata]
enabled = yes
[diskspace]
enabled = yes
[datadir]
enabled = no
[data]
enabled = no
[create]
enabled = no
[cpuload]
enabled = no
[tracklabels]
enabled = no
[trafic]
enabled = no
[theme]
enabled = yes
1
enabled = yes
[seedingtime]
enabled = no
[rss]
enabled = no
[extsearch]
enabled = no
[edit]
enabled = no
[cookies]
enabled = no
[autotools]
enabled = yes
[unpack]
enabled = no
[ratio]
enabled = no
[chunks]
enabled = no
[feeds]
enabled = no
[loginmgr]
enabled = no
[rssurlrewrite]
enabled = no
[niouz]
enabled = no
[pausewebui]
enabled = no
[lbll-suite]
enabled = no
[mediainfo]
enabled = no
[chat]
enabled = no
[logoff]
enabled = no
[filemanager]
enabled = no
[screenshots]
enabled = no
[rutracker_check]
enabled = no
[extratio]
enabled = no
==== Création de répertoires et permissions ====
* Assurez vous que /var/www/rutorrent soit à www-data (chown www-data:www-data -R /var/www/rutorrent)
* /home/rtorrentuser/.rtorrent/current, doit être accessible en écriture à www-data. Non, car seul rtorrent écrit dedans.
* /home/rtorrentuser/downloads, doit être accessible en lecture à www-data si vous souhaitez que ces fichiers soient accessibles par HTTP.
chgrp www-data /home/rtorrentuser/downloads
Si vous voulez trier/organiser vos torrents dans des répertoires, créez des sous-répertoires de current:
mkdir /home/rtorrentuser/.rtorrent/current/films
mkdir /home/rtorrentuser/.rtorrent/current/series
mkdir /home/rtorrentuser/.rtorrent/current/musique
mkdir /home/rtorrentuser/.rtorrent/current/robert
==== Configurez les plugins ====
* autotools, depuis l'interface graphique de rutorrent. Cochez tout, et remplissez comme il faut.
* Configurer la skin (le thème de rutorrent) se fait dans /var/www/rutorrent/plugins/theme/conf.php
==== Tester ... ====
Faites vos tests avec rtorrent seul (sans le lancer dans un screen) dans un premiers temps, puis allez voir la page web rutorrent de votre serveur.
N'indiquez pas "l'étiquette" vous-même lors de l'ajout du .torrent si vous souhaitez que vos fichiers soient triés par autotools. Indiquez juste le répertoire de destination (qui est un sous-répertoire de current)
A ce stade, vous devriez avoir vos téléchargements qui fonctionnent, ainsi que l'interface de rutorrent qui marche. Vous devriez pouvoir accéder à vos fichiers par http://ip.de.votre.serveur/downloads (selon l'Alias que vous avez mis)
==== Sécurisez tout ça avec des .htaccess ====
AuthName "Identifie-toi sinon pas de chocolat"
AuthType Basic
AuthUserFile /var/www/rutorrent/.htpasswd
Require Valid-User
Commande pour créer un .htpasswd:
htpasswd -c .htpasswd Jdownloadgrave
Protégez également l'accès au répertoire /home/rtorrentuser/downloads de la même façon. Le léger hic, c'est que si vous faites du streaming directement depuis ce répertoire avec vos logiciels de lecture, ils ne pourront pas accéder au contenu à moins de s'authentifier, et tous n'en sont pas capables.
Si vous mettez vos fichiers à disposition du public, donc sans mot de passe, vous risquerez d'attirer l'attention, et votre hébergeur auquel vous louez le serveur vous dira que c'est pas bien. Mettez plutôt un compte+mot de passe bidon si vous voulez que l'accès à vos fichiers soit aisé pour tout le monde.
==== Streaming avec VLC ====
Vous pourrez faire du streaming dans VLC, en copie-collant l'URL du fichier (ouvrir un flux réseau avec CTRL+N, ou faites directement CTRL+V dans l'interface de VLC) (À confirmer, car le .htaccess risque de poser problème. Il vaut mieux dans ce cas utiliser sshfs indiqué plus bas)
Mise à jour: depuis la version 2.1.x, VLC est capable d'accepter les certificats SSL, ainsi que d'effectuer l'authentification par HTTP. Problème: retaper les identifiants + mot de passe est nécessaire à chaque changement de fichier...
==== sshfs ====
Et ça c'est du bonheur, plutôt que de passer par le serveur web, vous pouvez utiliser sshfs pour faire un point de montage de votre répertoire distant.
Installez (depuis votre propre poste Linux et non depuis la seedbox bien sûr) le paquet sshfs, et ajoutez votre utilisateur au groupe fuse.
addgroup monblaze fuse
Puis pour faire le montage:
sshfs rtorrentuser@ip.de.mon.serveur:/home/rtorrentuser/downloads ./seedbox
Vous pouvez aussi utiliser autofs, ce que je n'ai pas encore mis en place.
===== Fin =====
Tadaaaaaaaa !
==== Documentation externe ====
=== rtorrent & rutorrent ===
* https://code.google.com/p/rutorrent/wiki/TableOfContents?wl=en, la doc de rutorrent, piochez plutôt dans la version anglaise susceptible d'être plus complète.
* http://libtorrent.rakshasa.no/, le site de rtorrent ainsi que la doc
* ... d'autres liens à glaner
=== apache & co ===
* http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html ; installer apache2, php5, et SSL
* https://softwareinabottle.wordpress.com/2011/12/18/setting-up-apache-http-server-with-ssl-support-on-ubuntudebian/ ; activer le site default-ssl
* Topic ouvert pour tenter de faire communiquer rutorrent et rtorrent via un socket UNIX plutôt que via un port TCP, utile pour nginx: http://forums.rutorrent.org/index.php?topic=4627.0
=== D'autres guides ===
* http://vpspedia.com/rtorrentrutorrent-seedbox-sur-debian-6/
* http://www.openwebtech.fr/2011/09/08/installation-de-rutorrent-sur-debian-squeeze/
* http://www.wareziens.net/forum/viewtopic.php?id=13381-comment-installer-rtorrent-rutorrent-sur-debian-ubuntu-vps&p=1
* https://wiki.t411.me/doku.php/torrent/clients/rtorrent/creer_une_seedbox_avec_rtorrent_et_l_interface_rutorrent
* http://free.korben.info/index.php/Seedbox
* Les tutos de Backtoback: https://ns3285315.ip-5-135-177.eu/site_raspberry/tutoriels/installer_lighttpd_rtorrent_rutorrent.php et https://ns3285315.ip-5-135-177.eu/site_raspberry/tutoriels/installer_nginx_rtorrent_rutorrent.php
* https://mondedie.fr/viewtopic.php?id=5302
==== Annexe 1: autotools perd sa configuration au redémarrage ====
Car c'est jamais la fin ... et que ceci n'est pas vraiment une annexe, mais un problème rencontré est le suivant:
* autotools ne retrouve pas sa configuration lors du redémarrage d'un serveur. Il a sa config dans .../share/settings/autotools.dat. Ca peut être dû à cette histoire: https://code.google.com/p/rutorrent/wiki/Plugins#Starting_plugins_with_rtorrent ; ou bien à autre chose, mais je ne vois pas où m'assurer qu'il conserve ses paramètres, hormis en éditant directement et salement autotools.php.
Il faut donc penser à le reconfigurer si vous relancez rtorrent et rutorrent.
**Correction**: ce problème s'est résolu tout seul, vraisemblable que vous ne le recontriez pas.
==== Annexe 2: Cakebox, un script pour automatiser l'installation ====
Sinon, il paraît qu'un script qui s'appelle [[https://github.com/MardamBeyK/Cakebox/blob/master/README.md|Cakebox]] permet de mettre en place à peu près la même chose de façon automatisée que ce qui est décrit dans ce guide.
Je n'ai fait qu'un essai sans y mettre beaucoup de bonne volonté, mais le script a quelques imperfections qui ne m'ont pas fait m'y risquer très loin.
Pour commencer, je l'ai essayé bêtement, sous un compte de simple utilisateur. Après tout, c'est ce que le symbole "$" de la doc me demande de faire. Le résultat est qu'il télécharge les sources .tar.gz de rtorrent et d'autres choses, et les a dispersé dans le /home de mon compte utilisateur. Il installe en outre une tâche cron qu'il a fallu que je vire (avec ''crontab -e'').
Aussi, il installe des outils de développement et compile rtorrent ainsi que xmlrpc, ce qui n'est pas nécessaire. Et ajoute les dépots non-free dans votre sources.list (j'ai pas compris pourquoi...)
Il se peut que le script fonctionne sous certaines conditions/réadaptations, ne serait-ce qu'en jouant le jeu et en passant root pour l'exécuter. Il est conseillé de visualiser le script avant d'en envisager l'emploi.
* Un autre script au développement interrompu ayant le même rôle: http://sourceforge.net/projects/flizbox/
==== Annexe 3: Accès au streaming par Apache en https ====
Comme mis dans les liens de documentation, il est tout à fait possible de faire passer le streaming par https plutôt que http. Vous pouvez vous référer à [[http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html|cet article]] (en anglais).
Plus simple, éditer le fichier /etc/sites-available/default-ssl, puis:
a2ensite default-ssl
(sans nécessairement utiliser de certificat SSL)