- Modifié

Salut !Sommaire :
0. Pré-requis
1. Installation de Peerflix-server
2. Configuration de peerflix-server
3. Installation en tant que service
4. Création du vhost Nginx
5. Goodies
Peerflix-server permet de télécharger des torrent et de les regarder en streaming avant même que leur téléchargement ne soit achevé. Il s'agit en fait d'une GUI pour torrent-stream, puissant client torrent en nodejs.
On va donc l'installer, le paramétrer en tant que daemon et créer un vhost Nginx afin d'avoir une URL propre.
0. Pré-requis :
Etre root
Avoir un serveur nginx fonctionnel
Avoir installé node-js :
apt-get install nodejs
1. Installation de peerflix-serverL'installation est simplissime :
npm install -g peerflix-server
Une fois que c'est fait, peerflix-server
Le serveur se lance, pour l'instant pas en tant que daemon. On vérifie qu'il soit bien en écoute sur le port 9000 :
netstat -lptn |grep node
On vérifie sur http://adresse_ip:9000 qu'on a bien l'interface. Puis Ctrl-C pour terminer la tâche.NOTE : Attention car c'est le port par défaut de php-fpm si vous ne l'utilisez par sur un socket unix. Cette option n'étant pas paramétrable pour peerflix-server, dans notre cas il faudra modifier la config de php-fpm si il y a conflit.
2. Configuration
Pour la configuration on crée le fichier suivant :
nano /root/.config/peerflix-server/config.json
Voici les options configurables :{
connections: 100, // Nombre maximum de peers auquel se connecter
uploads: 10, // Nombre de slots d'envoi.
tmp: '/tmp', //Dossier de stockage temporaire. Les fichiers .torrents y seront placés sous ./torrent-stream.
path: '/tmp/my-files', // Endroit ou sauvegarder les médias téléchargés.
verify: true, // Vérifier les données précédemment téléchargées, au démarrage du serveur. (true par défaut)
dht: true, // Utiliser ou non les DHT. true par défaut, conseillé pour meilleure efficacité du streaming.
tracker: true, // Utiliser ou non le tracker qui figure dans letorrent ajouté
// Defaults to true
trackers: [
'udp://tracker.openbittorrent.com:80',
'udp://tracker.ccc.de:80'
],
// Possibilité d'utiliser des trackers personnalisés.
// Vide par défaut.
}
3. Installation en tant que servicePour pouvoir utiliser peerflix-server en tant que démon on installe forever :
npm install -g forever
Une fois que c'est fait, la commande pour démarrer notre démon :forever start /usr/bin/peerflix-server
Pour l'arrêter :
forever stop /urs/bin/peerflix-server
On va créer un script init.d histoire de simplifier tout ça et d'avoir un log dans /var/log :cd /etc/init.d
touch peerflix-server
chmod +x peerflix-server
nano peerflix-server
Et on colle :#!/bin/bash
### BEGIN INIT INFO
# Provides: /usr/bin/peerflix-server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: forever running /usr/bin/peerflix-server
# Description: /usr/bin/peerflix-server
### END INIT INFO
#
# initd a node app
# Based on a script posted by https://gist.github.com/jinze at https://gist.github.com/3748766
#
# Source function library.
. /lib/lsb/init-functions
sourceDir="/usr/bin" ## Editez cette ligne pour indiquer le chemin de vos applications nodejs (typiquement /usr/bin ou /usr/local/bin/)
pidFile="/var/run/peerflix-server.pid"
logFile="/var/log/peerflix-server.log"
command="$sourceDir/node"
nodeApp="$sourceDir/peerflix-server"
foreverApp="$sourceDir/forever"
export NODE_PATH=$NODE_PATH:/usr/lib/node_modules
start() {
echo "Starting $nodeApp"
# Notice that we change the PATH because on reboot
# the PATH does not include the path to node.
# Launching forever with a full path
# does not work unless we set the PATH.
PATH=/usr/bin:$PATH
export NODE_ENV=production
$foreverApp start --pidFile $pidFile -l $logFile -a -v -d -c $command $nodeApp
RETVAL=$?
}
restart() {
echo -n "Restarting $nodeApp"
$foreverApp restart $nodeApp
RETVAL=$?
}
stop() {
echo -n "Shutting down $nodeApp"
$foreverApp stop $nodeApp
RETVAL=$?
}
status() {
echo -n "Status $nodeApp"
$foreverApp list
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "Usage: {start|stop|status|restart}"
exit 1
;;
esac
exit $RETVAL
On ajoute le script au démarrage automatique :Note : modifiez le chemin vers les binaires si toutefois sur votre installation il n'était pas sous /usr/bin. Pour le trouver facilement : cd / && find -name peerflix-server
update-rc.d peerflix-server defaults
Avant de pouvoir lancer le serveur on va devoir modifier un fichier car il y a un bug, lorsque forever lance peerflix-server depuis un script init.d.nano /usr/lib/node_modules/peerflix-server/server/store.js
trouver :
homePath = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'],
et remplacer par :
homePath = '/root',
On peut lancer peerflix server :service peerflix-server start
On vérifie les logs :
tail -f /var/log/peerflix-server.log
[h]4. Vhost pour nginx[/h]
On va maintenant créer un vhost pour nginx histoire d'avoir une adresse de connexion du style https://stream.domaine.tld :
nano /etc/nginx/sites-available/stream.conf
et on colle :server {
listen 80;
server_name stream.domain.tld;
return 301 https://stream.domain.tld$request_uri;
}
server {
listen 443 ssl;
server_name stream.domain.tld;
add_header Strict-Transport-Security max-age=2592000;
server_tokens off;
ssl on;
ssl_certificate /chemin/vers/le/certificat.crt;
ssl_certificate_key /chemin/vers/la/clé.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4";
ssl_dhparam /chemin/vers/dhparam.key;
ssl_ecdh_curve secp521r1; # NIST P-521
location / {
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
# Pour protéger la page et la réserver aux utilisateurs des seedbox :
auth_basic "streaming";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";
}
location /socket.io/ {
proxy_pass http://localhost:9000/socket.io/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
On active notre vhost et on redémarre :NOTE : On a mis une authentification basée sur les utilisateurs des seedbox du système.
ln -s /etc/nginx/sites-available/stream.conf /etc/nginx/sites-enabled/stream.conf
service nginx restart
5. Goodies : Partager les torrents téléchargés avec peerflix-server dans le home des utilisateurs de seedboxOn va créer un dossier partagé par tous les utilisateurs de nos seedbox. Ainsi quand un média sera téléchargé grace à peerflix-server il sera disponible pour nos utilisateurs s'ils veulent le récupérer par ftp ou le regarder dans leur cakebox par exemple.
mkdir /home/shared
chmod 775 /home/shared
On modifie la configuration de peerflix-server :
nano /root/.config/peerflix-server/config.json
# Chercher :
path: '/tmp/my-files',
# Remplacer par :
path: '/home/shared',
Puis on crée un lien symbolique vers les dossiers utilisateurs :ln -s /home/shared /home/user1/torrents
ln -s /home/shared /home/user2/torrents
# etc...
On redémarre peerflix-server :
service peerflix-server restart
Il ne reste plus qu'à vous connecter sur votre site à l'adresse http://stream.domain.tld Enfin, pour les discussions et commentaires, ça se passe ici : [Discussion]Peerflix-Server : installation, configuration, vhost nginxNOTE :
- Les torrents ou magnets que vous ajoutez vont commencer à être téléchargés soit quand vous commencez le streaming, ou alors soit quand vous cochez la case de sélection.
- Les torrents restent en seed tant qu'ils ne sont pas effacés de l'interface de peerflix-server.
- Plus il y aura de seeders, plus le streaming sera efficace.