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 !
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é.
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.
… 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.
… 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.
… 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).
#! /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:
Vous pourrez ensuite invoquer ce script en étant root:
/etc/init.d/rtorrent start
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"
Nécessaire: Installez libapache2-mod-scgi ! Et dites à Apache qu'il faut activer ce mod:
# en étant root
a2enmod scgi
Dans la configuration du site (virtualhost), on définira 2 choses:
Note: AllowOverride All vous permettra de spécifier des restrictions d'accès dans un .htaccess
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> Alias /downloads /home/rtorrentuser/downloads <Directory /home/rtorrentuser/downloads> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> 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 </VirtualHost>
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
;; 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
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
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)
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.
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…
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.
Tadaaaaaaaa !
Car c'est jamais la fin … et que ceci n'est pas vraiment une annexe, mais un problème rencontré est le suivant:
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.
Sinon, il paraît qu'un script qui s'appelle 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.
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 à 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)