Emby

Emby

Vous connaissez Plex? Voilà plus de deux ans que je l'utilise avec plus ou moins de difficultés, aussi bien éthiques que techniques.

Las des aléas de Plex, je me suis mis en quête d'un nouveau serveur de médias. Je connais Kodi et comparses mais j'avais envie de tester de nouvelles choses avec certaines prérogatives telles que le self-hosted sans compte tiers, une totale transparence la configuration et surtout sortir de l'aspect timeline de Plex, pour voir une interface mettant plus en avant l'aspect collection/médiathèque.
Emby semble répondre à tout cela.

Le projet

De la même façon que Kodi avec la XBox, Emby fut auparavant développé pour fonctionner avec Windows Media Center en 2009, sous le nom de MediaBrowser. Ce n'est que l'année dernière en mars 2015, que le projet fut rebaptiser Emby (Microsoft ayant arrêté le développement de WMC).

Entre temps un projet à part entière, en standalone comme en add-on d'autres systèmes/MediaCenter.

Totalement OpenSource, Emby a adopté un mode de financement similaire à celui de Plex, proposant quelques fonctionnalités supplémentaires à ses utilisateurs premium, entre autres la synchronisation Cloud Sync/Mobil Sync, les apps iOS/Android gratuite) et un éditeur avancé de Cover Art. Il existe trois forfaits, Mensuel (5$), Annuel (40$) et à Vie (99$).

Fonctionnalités dont je n'ai personnellement pas besoin.
Au-delà de ça toutes les fonctionnalités d'Emby reste gratuites et accessibles.

À noter que les applications mobiles peuvent être achetées seules, sans compte Emby Premiere. Sur Android l'app coûte 4€97, une somme tout à fait raisonnable vu le travail réalisé sur Emby. Une façon comme une autre de soutenir le projet.

Caractéristiques

Je ne vais pas faire une liste exhaustive des fonctionnalités d'Emby, seulement relever celles qui m'ont motivé à passer sur Emby.

  • Emby est publié sous une licence OpenSource, la GNU GPL 2.0
  • Il est maintenu par une communauté très active
  • Il n'est pas nécessaire de s'enregistrer auprès d'Emby pour utiliser son serveur
  • Serveur entièrement configurable au travers d'une admin détaillée, sans nécessité de passer par le site d'Emby
  • Gestion de plusieurs utilisateurs avec une foultitude d'options
  • WebClient en HTML5 bien fichu qui ré-encode à la volée aisément
  • Customisation de l'interface en CSS

En somme, tout ce que ne fait pas ou n'a pas Plex.

== Attention, ne vous amusez pas à prendre des BLURAY pour les ré-encoder à la volée si vous n'avez pas le CPU et la RAM nécessaire pour, ou vous vous retrouverez avec votre couple IO/CPU saturés. ==

Pour ma part sur mon serveur dédié, j'ai un Intel Xeon E1220 (3.10GHz/Quadcore/8MB/80W) 1333, ce qui n'est pas petit et pourtant le CPU turbine.

Il existe encore bien d'autres fonctionnalités qui feront sans nul doute envie à nombre d'entre vous, tel le support de Chromecast, le DLNA, le DLTV, la musique (j'utilise Subsonic), la gestion de plugins divers et variés (dont les notifs push !), etc.

Il est multiplateforme et peut s'installer sur des systèmes tels Windows, Linux, NAS, MAC, FreeBSD, raspbian, mais existe aussi en add-ons pour Kodi, plex, etc. C'est bien simple, on peut le retrouver partout!

Les fiches de film sont très détaillées, outre un visuel de l'affiche et les métas essentielles (date, auteur, synopsis) on retrouve le casting, le genre, le trailer, les notes ainsi que des suggestions d'autres films et les infos médias, ce qui est agréable. À dire vrai tout Emby est conçu pour satisfaire la curiosité de ses utilisateurs en les rassasiant d'infos concernant les œuvres qu'ils vont regarder.

Petit truc très sympa, il est possible de visionner une scène précise de son film, toutes sont répertoriées sur la fiche de film aperçu/titre/timecode à l'appui.

À la lecture de son film ça ne saccade pas, les sous-titres sont bien incrustés, c'est fluide et de bonne qualité.

L'admin est quant à elle tout à fait surprenante, il est possible de configurer son serveur comme bon nous semble, le tout tout dans une interface intuitive qui ne manquera pas de nous rappeler ce qui peut être fait chez Google.

More discipline

Petite difficulté rencontrée avec Emby, le téléchargement des métadonnées concernant les séries. Pour les films, aucun problème, il suffit d'indiquer le répertoire où vous stockez tous vos films.

Pour les séries, contrairement à Plex, il va falloir être plus discipliné. Auparavant je mettais indifféremment toutes mes séries, que ce soit des saisons complètes ou des épisodes seuls, dans le même dossier. Ne restait plus qu'à Plex de faire le tri et de rassembler les Séries et leur saisons ensemble.

Pour Emby il semblerait qu'il faille agir autrement et organiser ses séries avec un dossier par série (comme ci-dessous).

Configuration

== Ce qui suit a été réalisé sur un serveur distant Debian 8 avec Nginx ==

Passons à un peu de configuration, si le petit descriptif ci-dessus vous a conquis et que vous avez déjà installé Emby ( c'est très très simple) un peu de configuration pour être confort ne fera pas de mal.

Sur Debian 8.0 tout se fait par les dépôts, la manipulation est la suivante (en root):

echo 'deb http://download.opensuse.org/repositories/home:/emby/Debian_8.0/ /' >> /etc/apt/sources.list.d/emby-server.list 
apt-get update
apt-get install emby-server

puis on lance le serveur

sudo service emby-server start

Emby écoute par défaut sur le port 8096, vous devriez le trouver là-bas http://0.0.0.0:8096/ (remplacez avec votre IP/domaine)

Emby arrive clé en main, une fois l'installation faite, vous pouvez utiliser de suite et tel quel Emby, suffit de renseigner les répertoires de vos vidéos pour en profiter. Mais comme on aime mettre (un peu) les mains dans le cambouis, pourquoi s'en priver? Je vous invite à faire le tour de l'admin qui regorge d'infos et de petits réglages extraordinaires, qui feront de cet Emby, votre Emby !

Reverse Proxy avec NGinx

Si vous souhaitez utiliser votre serveur emby en sous-domaine, il va falloir faire un reverse proxy. Dans la configuration suivante, j'utilise le SSL avec des certificats Let's Encrypt. J'en parle juste après.

1 - Créez un fichier de configuration pour Emby

sudo nano /etc/nginx/sites-available/emby

2 - Copiez la configuration qui suit en l'adaptant à vos besoins et sauvegardez

server {
    listen 80;
    server_name emby.domaine.ext;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name emby.domaine.ext;

      ssl_certificate /etc/letsencrypt/live/emby.domaine.ext/fullchain.pem;
    	ssl_certificate_key /etc/letsencrypt/live/emby.domaine.ext/privkey.pem;

    location / {

            # set some headers and proxy stuff.
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect off;

            # include Host header
            proxy_set_header Host $http_host;

            # proxy request to emby server
            proxy_pass http://127.0.0.1:8096/;
    }
}

3 - On fait un lien symbolique vers le répertoire sites-enabled afin que NGinx prenne en compte la configuration fraîchement créée

sudo ln -s /etc/nginx/sites-available/emby /etc/nginx/sites-enabled/emby

4 - Enfin on relance NGinx

sudo service nginx restart

Votre site devrait être accessible à l'adresse https://emby.domaine.ext

À savoir que pour l'ensemble de mes sites j'utilise un seul et unique fichier de configuration pour le ssl, qui se charge automatiquement. De fait il n'apparait ici. Vous pouvez le faire à votre sauce en ajoutant directement à la configuration ci-dessus (en-dessous des chemins vers les certificats), quelque chose comme ce qui suit:

  ssl_prefer_server_ciphers       On;
  ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers                     'AES256+EECDH:AES256+EDH:!aNULL';
  ssl_stapling                    on;
  resolver                        8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout                5s;
  ssl_stapling_verify             on;
  keepalive_timeout               180;

Je vous laisse vous rencarder par vous-même là-dessus. :)

HTTPS avec Let's Encrypt

Faisons les choses bien, ajoutons un certificat à notre serveur Emby grâce à Let's Encrypt

Si vous n'utilisez pas déjà Let's Encrypt, je vous invite à consulter la partie Créer les certificats sur mon article Let's Encrypt + Ghost, la procédure est la même. Sinon il vous suffit d'ajouter le sous-domaine (Ex.: emby.domaine.ext) à votre domaine:

1 - Si ce n'est pas fait assurez-vous de créer un répertoire où Let's Encrypt pourra installer des fichiers permettant votre authentification.

sudo mkdir /var/www/letsencrypt/domaine.ext/

2 - Ajoutons le domaine à nos certificats

cd /tmp/letsencrypt
./letsencrypt-auto certonly --rsa-key-size 4096 --webroot -w /var/www/letsencrypt/domaine.ext/ -d emby.domaine.ext

3 - Une fois généré, rendez-vous dans le répertoire contenant vos certificats et créez un certificat en .pfx comme le nécessite Emby.

cd /etc/letsencrypt/live/emby.domaine.ext/
openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out emby.pfx

Bon ! Il ne nous reste plus qu'à indiquer à Emby là où se trouve notre certificat. Malheureusement il ne semble pas pouvoir accéder au répertoire /etc/letsencrypt/live/emby.domaine.ext/ et je n'ai pas envie modifier les permissions de celui-ci. De plus, Emby ne prend pas en compte les liens symboliques.

Qu'à cela ne tienne, déplaçons le fichier emby.pfx dans un répertoire accessible. Vous pouvez par exemple le placer dans votre home. Moi je l'ai mis dans un répertoire dédié à Emby, contenant le certificat et les métadonnées. Remplacez USER par l'utilisateur adéquat.

3 - On déplace le certificat

mv /etc/letsencrypt/emby.domaine.ext/emby.pfx /home/USER/emby/cert/emby.pfx
chown -R USER:USER /home/USER/emby

4 - On indique à Emby où se trouve le certificat

Voilà. Rendez-vous maintenant sur votre serveur Emby dans le panel d'administration Gérer le serveur > Avancé > Hébergement et renseignez le chemin vers le certificat, tout en cochant la case Renvoyez une url https.

Beta de Let's Encrypt oblige, il va vous falloir répéter cette manipulation tous les 3 mois (pour le moment).

DLNA

Ah! Et si comme moi vous avez installé Emby sur un serveur distant, il n'est pas nécessaire d'utiliser le DLNA. Désactivez-le.

Le mot de la fin

Je n'utilise Emby que depuis 2 jours, il me reste surement encore beaucoup de choses à découvrir et peut-être même que je déchanterai quelques peu d'ici là, quoiqu'il en soit il répond d'ors et déjà à plusieurs de mes exigences, notamment le code libre et une solution d'auto-hébergement totale.
Pourquoi n'ai-je pas opté plus tôt pour Kodi? Je l'avais expérimenté il y a quelques années quand il s’appelait encore XBMC et je n'avais tout simplement pas été convaincu. Peut-être qu'aujourd'hui me conviendrait-il mieux mais pour le moment je souhaite me faire la main sur Emby.

À noter qu'avec Firefox 45.0.2 que ce soit sur OSX ou Windows, la lecture se coupe par moment. Un bug qui sera probablement corrigé d'ici peu.

Liens / sources