Streamer partout vos médias dans votre serveur seedbox avec Kodi et Owncloud

Je souhaitais réaliser ce tutoriel depuis un bon moment.. Et le voilà ! Je vais vous expliquer comment streamer depuis votre propre serveur dédié vos vidéos et musiques sur tout les supports possibles chez vous de manière sécurisée et rapide !

Les intérêts de cette solution sont multiples : vous utilisez votre serveur dédié pour héberger des vidéos ou l’utiliser encore comme seedbox à torrent (je ne veux pas savoir pourquoi ^^), vos fichiers pourront être accessibles partout ! En les référençant avec Owncloud (un cloud personnel sur son propre serveur) ou en les indexant sur votre application KODI par un accès NFS ou WebDav, vous et vos proches pourront accéder à votre cloud et pourront streamer vos vidéos très facilement grâce à Kodi et sa disponibilité multi-OS : Windows, Mac, Linux (Raspberry…), Box Android, tablettes iOS/Android, XBOX etc…

Il va vous falloir l’unique condition d’avoir un serveur dédié / VPS (kimsufi, online.net…) ou encore à la limite un serveur local accessible en ligne si vous avez une excellente connexion symétrique fibrée ;)…

Ce super tutoriel est un 3 en 1. Il va vous permettre de

  • Créer une plateforme Owncloud sur son serveur

  • Installer et configurer un serveur de seedbox torrent

  • Accéder et synchroniser les fichiers d’un serveur distant avec Kodi

Que va permettre un serveur Seedbox streamable avec Kodi et lié à Owncloud ?

  • Diffuser vos contenus multimédias facilement et partout (NFS pour les IP fixes, WebDAV pour le reste)

  • Partager vos autres contenus avec l’interface Owncloud comme alternative

  • S’abstenir d’un NAS ou d’un réseau local

  • Vous faciliter la vie tout simplement

Mise en garde légale !
Dans ce tutoriel, je ne ferais qu’expliquer comment diffuser des vidéos d’un serveur en ligne vers vos installations chez vous. Tout ce qui suivra respectera la loi en vigueur et les droits d’auteur. Le but n’étant pas de vous expliquer comment télécharger des films et des séries pour les stocker sur votre serveur ! Je ne suis pas responsables de vos actes !

En aucun cas je ne serais responsable si vous ne respectez pas les conditions générales d’utilisation de votre serveur dédié ! Je vous invite à lire ses conditions pour vérifier que ce que vous allez faire n’enfreint aucune règles.

L’utilisation d’un serveur dédié comme seedbox est diffusion de vidéos est tout à fait légale (sauf mention contraire dans les CGU) tant que les contenus partagés et diffusés sont personnelles ou encore libres de droits. Dans un serveur dédié, vous demeurez seul responsable de vos données.

Pensez à sauvegarder...
Un serveur dédié n’a pas de système de sauvegarde. Je vous conseille fortement de procéder régulièrement à des sauvegardes de vos données. Vous n’êtes pas à l’abri d’un défaut matériel, un incendie de data-center ou d’un hack. Vous pouvez très bien synchroniser tous les dossiers via Owncloud sur un NAS chez vous par exemple…

Reeeeaaaady ?

Sommaire

Pré-requis

Les pré-requis se basent essentiellement sur le dédié et sa configuration

  • Un serveur dédié avec un assez grand stockage (selon la taille de vos fichiers)
    • Je recommande un serveur Kimsufi pour leur prix et leur taille de stockage. Pas besoin d’un CPU puissant puisque sont but sera de stocker et de partager. Je recommande un KS2 qui propose 1TB de stockage.
      • KS-1 (500GB, 2GB de RAM et CPU Atom N2800) : 6€ TTC
      • KS-2 (1TB, 4GB de RAM et CPU Atom N2800) : 12€ TTC
      • KS-2E (2TB, 4GB de RAM et CPU Atom N2800) : 18€ TTC
    • Chez Online.net, vous avez aussi des serveurs à prix légèrement plus chers mais plus puissants :
      • DEDIBOX SC2016 (500Go, 4GB de RAM et CPU Intel C2350) : 10€80 TTC
      • DEDIBOX XC2016 (1TB, 16GB de RAM et CPU Intel C2750) : 19€20 TTC
    • Il existe bien d’autres hébergeurs, mais je connais uniquement ceux 2 là qui proposent des prix très bas pour un très grand stockage.
  • Votre Serveur fraîchement installé sous Ubuntu ou Debian
    • Le top serait les dernières versions, dans ce tutoriel, je me base sur la version 16.04 d’Ubuntu
  • Votre serveur en ligne pré-configuré
    • Serveur Apache2 ou NGINX
    • Serveur MySQL (MariaDB, SQLite…)
    • PHP5.6 ou 7.X
  • Avoir une IP Fixe pour les connexions NFS (la plupart des box ADSL/fibre)

Installation d’Owncloud

Pour commencer il nous faut un répertoire de destination pour stocker tous nos futurs fichiers. Pour que ça soit plus simple, utilisons un répertoire sur Owncloud. Installons depuis les repositories j’explique l’installation pour Ubuntu 16.04 en dessous mais si vous avez une autre distrib, c’est par ici !

[cce_bash]wget -nv https://download.owncloud.org/download/repositories/stable/xUbuntu_15.10/Release.key -O Release.key
apt-key add - < Release.key sudo su sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/owncloud.list"
apt-get update
apt-get install owncloud
[/cce_bash]

Vous devrez ensuite installer Owncloud depuis le navigateur en tapant http://<ip_server>/owncloud/. Owncloud s’installera par défaut dans le répertoire /var/www/owncloud. Vous pouvez lier le répertoire à l’aide d’un sous nom de domaine que vous avez ça sera plus pratique à l’avenir 🙂

Une fois sur la page d’installation, créez votre compte principal et je vous conseille de choisir MariaDB/MySQL.

Base de données et User
Créez en amont une base de données et un user qui aura les privilèges : SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE.

Une fois installé et logué, allez dans l’administration pour voir ce qu’il faut améliorer (cache PHP, sécurité, domaines autorisés…). Tout peut se configurer dans le fichier config/config.php :

[cce_bash]cd /var/www/owncloud
nano config/config.php[/cce_bash]
[cce_php] false,
 'instanceid' => 'xxx',
 'passwordsalt' => 'xxxxxx',
 'secret' => 'xxxxxx',
 'trusted_domains' => array(
  0 => '',
  1 => 'owncloud.',
 ),
 'datadirectory' => '/var/www/owncloud/data',
 'overwrite.cli.url' => 'http:///owncloud',
 'dbtype' => 'mysql',
 'version' => '9.0.2.2',
 'dbname' => 'owncloud',
 'dbhost' => '127.0.0.1',
 'dbtableprefix' => 'oc_',
 'dbuser' => 'oc_owncloud',
 'dbpassword' => 'xxxxxx',
 'logtimezone' => 'UTC',
 'installed' => true,
 'memcache.local' => '\OC\Memcache\APCu',
 /* plus d'infos ici https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/caching_configuration.html */ 'maintenance' => false,
 'default_language' => 'fr',
 'ldapIgnoreNamingRules' => false,
 'mail_from_address' => 'noreply',
 'mail_smtpmode' => 'php',
 'mail_domain' => '',
 //'theme' => 'bxnxg',
 /* uniquement si vous utilisez un thème */ //'loglevel' => 2,
);[/cce_php]

Vérifiez ensuite que user/group dans dossier owncloud/ soit les mêmes que ceux d’apache2 (/etc/apache2/envvar, qui est www-data par défaut) ou nginx

[cce_bash]chown www-data:www-data ./* -Rf[/cce_bash]

Vous voici avec un espace owncloud que vous pourrez synchroniser sur tous vos appareils à l’aide des applis officielles. Vous vous retrouvez avec un répertoire utilisateur owncloud qui pourra héberger vos fichiers persos et torrents. Créons un raccourcis en lien symbolique de ce dossier pour l’indiquer plus facilement sur deluge torrent :

[cce_bash]cd /var/www/owncloud/data/<user>/files/ # conseil : créez un lien direct plus court pour le chemin files/ ln -s /var/www/owncloud/data/<user>/files /var/files[/cce_bash]

Dernière chose pour Owncloud, on va créer 2 tâches cron pour synchroniser les fichiers internes (nouveaux et supprimés) régulièrement. Il va falloir utiliser l’utilisateur apache2/nginx pour lancer les commandes :

Pourquoi créer des tâches cron ici ?
Par défaut, Owncloud synchronise automatiquement les fichiers qu’on ajoute aux dossiers sur d’autres plateforme (son PC, son smartphone via les applis…) comme le ferait Dropbox, Drive et autre (logique quoi)… Ici on va directement ajouter des nouveaux fichiers dans le serveur et donc dans les dossiers owncloud. Il faut donc les synchroniser à la main ou de manière automatisée avec crontab !
[cce_bash]crontab -u www-data -e[/cce_bash]
[cce_php]# update files owncloud every 15 minutes */15  *  *  *  * php /var/www/owncloud/occ files:scan --all # clean files every days at 2h30 30  2  *  *  * php /var/www/owncloud/occ files:cleanup --all[/cce_php]

Vous pouvez respirer, Owncloud c’est terminé ???? !

Installation de Deluge et Deluge-webui

Deluge est un logiciel de gestion de torrent qui propose une interface web-UI très pratique. L’installation pourrait être un simple apt-get install deluge… Mais il faut pouvoir les lancer à chaque démarrage de serveur et créer l’user deluge… C’est parti !

[cce_bash]sudo adduser --disabled-password --system --home /var/lib/deluge --gecos "Deluge service" --group deluge
sudo touch /var/log/deluged.log
sudo touch /var/log/deluge-web.log
sudo chown deluge:deluge /var/log/deluge*
# install deluge
apt-get update
apt-get install deluged
apt-get install deluge-webui
[/cce_bash]

Deluge et deluge-webui ne démarrent pas automatiquement, créons les services et profitons-en pour leur donner l’user deluge et le groupe www-data afin qu’ils puissent enregistrer des fichiers dans /var/files avec un user/group qu’owncloud pourra lire et exécuter :

[cce_bash]nano /etc/systemd/system/deluged.service[/cce_bash]
[cce_bash][Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target

[Service]
Type=simple
User=deluge
Group=www-data
UMask=000

ExecStart=/usr/bin/deluged -d

Restart=on-failure

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target[/cce_bash]

On enchaîne avec le second service :

[cce_bash]nano /etc/systemd/system/deluge-web.service[/cce_bash]
[cce_bash][Unit]
Description=Deluge Bittorrent Client Web Interface
After=network-online.target

[Service]
Type=simple

User=deluge
Group=www-data
UMask=000

ExecStart=/usr/bin/deluge-web

Restart=on-failure

[Install]
WantedBy=multi-user.target[/cce_bash]

Ensuite on attribue par défaut le groupe www-data à l’user deluge :

[cce_bash]usermod -g www-data deluge
# pour vérifier si l'user a bien le nouveau groupe :
groups deluge[/cce_bash]

Redémarrez le serveur :

[cce_bash]sudo reboot -h now[/cce_bash]

Rendez-vous ensuite sur la page webui de deluge : http://IP_SERVEUR:8112/

Vous pourrez enregistrer vos torrents dans des sous-dossiers pour bien les ranger, je vous conseille de bien organiser vos dossiers pour la synchronisation de la médiathèque Kodi pour la suite…

Mise en place du système de fichier NFS ou WebDAV

Je vous propose 2 protocoles de fichiers au choix qui vont vous permettre de connecter Kodi vers le répertoire de fichiers (vidéos, torrents…) de votre serveur dédié. Lequel choisir ? Chacun ont des qualités et défauts : Le WebDAV permettra de vous connecter depuis n’importe quel endroit (IP non fixe) et est simple à mettre en place. Le NFS lui autorisera des accès selon une liste de règles à appliquer par IP et permettra une connexion légèrement plus rapide.

Pour résumer : Le WebDAV sera à privilégier si vous souhaiter vous connecter à des endroits différents (4G, amis, FAI n’utilisant pas d’IP fixe…) tandis que le NFS sera pour une connexion unique vers un endroit disposant d’une IP fixe (une maison, un bureau, ou même vers une IP tunnel VPN…).

Avec WebDAV, vous n’avez (presque) rien à faire puisque vous avez installé Owncloud. C’est un protocole HTTP demandant un login/mot de passe pour accéder au dossier. Owncloud le propose par défaut, et via cette adresse :

http://<ip_serveur>/owncloud/remote.php/webdav/

Il vous faudra néanmoins l’activer sur votre terminal :

[cce_bash]a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest
/etc/init.d/apache2 restart[/cce_bash]

Le protocole NFS quand à lui est l’un des protocole de fichiers les plus rapides et les plus stables. Ce qu’on va faire ici, c’est autoriser une connexion directe entre le serveur dédié au niveau du dossier de nos futurs contenus avec vos différents appareils connectés au WEB. Nous allons limiter l’accès à ces appareils par leur IP, c’est pour cela qu’il faudra une IP fixe !

[cce_bash]apt-get install nfs-kernel-server
nano /etc/exports[/cce_bash]

Ajouter les IPs qui auront accès au dossier owncloud de manière directe. Ci-dessous, j’ai ajouté 2 lignes avec des paramètres différents. Dans la première, l’utilisateur qui aura accès au dossier pourra lire/écrire/supprimer, tandis qu’il ne pourra que lire dans la seconde ligne. Tous les paramètres sont expliqués sur cette page.

[cce_bash]/var/www/owncloud/data/bxnxg/files 123.456.789.123(rw,async,no_subtree_check,all_squash,insecure)
/var/www/owncloud/data/bxnxg/files 123.456.789.124(ro,async,no_subtree_check,all_squash,insecure)[/cce_bash]

Redémarrer ensuite le service

[cce_bash]service nfs-kernel-server restart[/cce_bash]

Voilà ! Vous pouvez maintenant accéder au dossier avec l’adresse accessible directement depuis l’explorateur sous MacOS et Linux (et moyennant un logiciel pour Windows et autre…).

Tout est en place côté serveur, c’est le moment de passer à Kodi ???? !

Paramétrer de Kodi

Je n’ai pas besoin de présenter Kodi en détails, c’est le média center multi plateforme et open-source le plus connu et qui gère vos contenus multimédias dans une interface très pratique et accueillante !

Munissez-vous du programme que ce soit pour votre Windows, votre Mac, Linux, Raspberry, Apple TV, Android si ce n’est pas fait. L’installation y est très simple, soit c’est un installeur, soit c’est une image à installer mais tout est expliqué sur le site (pour Raspberry Pi je conseille OpenElec). Ouvrez-le et allez ajouter une nouvelle source d’import :

[cce]Menu "Vidéos"
Fichiers
Ajouter une source de vidéos
Parcourir
Ajouter un emplacement réseau[/cce]

Là vous avez le choix du protocole : NFS ou WebDAV en HTTP (ou HTTPS si vous avez un certificat). Dans les deux cas, indiquez en dessous une IP. Ensuite pour le chemin, c’est différent selon les protocoles :

  • NFS : le chemin du dossier (de la racine au point final) mentionné dans votre fichier /etc/exports
    • exemple : /var/www/owncloud/data/bxnxg/files
  • WebDAV : le chemin indiqué en bas à gauche, le bouton « Paramètres » sur votre interface Web Owncloud

Si tout est correct, après validation l’emplacement s’ajoute à la liste. Cliquez dessus. S’il affiche quelque chose comme des dossiers et fichiers c’est gagné !

Si par exemple, je choisi le dossier ou je stocke des films, je le sélectionne, je valide et le formulaire revient vers la précédente fenêtre d’ajout de source ou j’ai dorénavant l’adresse complète et un titre de source que je peux éditer à titre d’information :

Après validation, je peux choisir de customiser ma source. Ainsi je choisis quelle type de source mon dossier peut faire référence (Films, Séries, Musiques, autres vidéos…). Ne validez pas tout de suite et allez dans « Paramètres » :

Vous pourrez choisir les langues par défaut histoire d’avoir des titres de vidéo en Français quand ils sont différents dans d’autres langues (par défaut c’est en US) :

On valide… Et on vous invite à mettre à jour votre médiathèque :

C’est parti, le contenu en ligne de votre dossier est scanné pour référencer toutes les vidéos (si vos vidéos ne sont pas reconnus, vous pourrez les référencer manuellement, pensez à mettre de bons titres ^^)

Ensuite, quelques réglages conseillés partie Paramètres : Activez l’actualisation de la médiathèque au démarrage.

[cce]Menu "Système"
Vidéos
Onglet "Médiathèque"[/cce]

Toujours partie Système > Vidéo, onglet « Lecture » : Cocher la lecture automatique pour passer à la vidéo suivante (pratique pour des épisodes).

Enfin au cas vous ne saurez pas, pour stopper l’actualisation de la médiathèque : ouvrez le menu de gauche et faites stopper l’analyse.

Bonus : Ajouter du Buffer pour le NFS (ou WebDAV si vraiment ça passe mal) !

Une dernière chose, le système NFS est considéré comme une connexion locale par Kodi. Le top serait d’éditer les paramètres de buffering :

Pourquoi la lecture mon serveur en NFS pourrait saccader ?
Kodi applique des règles de buffering différentes selon les types de connexion. S’il s’agit d’une connexion FTP, WebDav, HTTP etc il va mettre en cache une séquence plus longue de la vidéo. Alors que si la vidéo vient d’un réseau local (SMB, NFS…) il va la lire telle quelle sans buffering (ou presque). le NFS est considéré comme une connexion locale ici, donc il risquera de saccader au début des vidéos.

Après un long chargement, Kodi peut choisir de mettre finalement la vidéo en cache, même en local. Mais il est plus pratique de forcer le buffering en ajoutant des paramètres dans un fichier xml « advancedsettings.xml »…

Créez le fichier advancedsettings.xml (plus d’infos) dans le bon dossier selon l’OS utilisé :

OS utiliséEmplacement du fichier
AndroidAndroid/data/org.xbmc.kodi/files/.kodi/userdata/advancedsettings.xml
OpenELEC/storage/.kodi/userdata/advancedsettings.xml
iOS/private/var/mobile/Library/Preferences/Kodi/userdata/advancedsettings.xml
Linux~/.kodi/userdata/advancedsettings.xml
MacOS/Users/<username>/Library/Application Support/Kodi/userdata/advancedsettings.xml
Windows%APPDATA%\kodi\userdata\advancedsettings.xml

Insérer le code suivant à l’intérieur. La valeur buffermode à 1 va forcer le buffering pour les contenus Web et Local. cachemembuffersize représente la taille du cache à utiliser dans la RAM en octet, 0 indiquera de stocker tout le cache sur la mémoire, ce que je recommande pour des box TV, Raspberry et Tablettes. Sinon mettez au maximum 1/6ème de votre RAM. readbufferfactor indique un niveau de buffering pour pouvoir commencer à lire la vidéo. Plus elle est élevée, plus Kodi mettra en cache les séquences suivantes à l’instant présent de la lecture (en gros une barre de chargement plus longue) :

[cce_xml]
  
    1
    0
    1
  
[/cce_xml]

Essayez de faire des tests de lecture en éditant les paramètres de ce fichier. Essayez d’augmenter readbufferfactor si les vidéos saccadent encore. Mais rassurez-vous ça ne m’est arrivé que très rarement, souvent dues à des téléchargements simultanés sur votre connexion internet ou le réseau du FAI saturé. En tout cas, l’intérêt majeur ici, c’est que votre connexion sera très stable puisqu’au moins votre FAI ne viendra pas réduire le « bandwidth » de votre serveur comme il pourrait le faire sur des services comme Netflix ou Youtube ???? !

Conclusion

Ce tutoriel est fini ! Vous disposez à présent d’un serveur streaming, où dès que vous ajouterez des fichiers que ce soit via Owncloud ou Torrent, ils s’ajouteront dans chaque media center Kodi installés chez vous ou ailleurs ! Quelques derniers conseils :

  • Selon les ressources, ne partagez pas trop votre serveurs. Par exemple pour un serveur Kimsufi KS-2 à 4Go de RAM qui à un bandwidth de 100Mbps (soit environ 11/12Mo/s) : maximum une dizaine de personnes pour permettre une lecture fluide des vidéos, surtout lourdes.
  • S’il vous vient l’idée de sous louer des espaces de votre dédié, faites comme vous le sentez… Mais pensez à des serveurs plus gros, au niveau de la RAM et du stockage
  • Enfin l’intérêt ultime de ce genre de serveur, c’est de partager des contenus à votre famille ou vos amis. Les vidéos de votre petite nièce accessibles de partout et dans un espace personnel c’est pas le top ça ?
  • Pensez aux sauvegardes ????
Article relatifs