Edge Shield pour Emby — guide

Installation

Vous avez besoin d’Emby Server 4.10.1 ou plus récent.

  1. Connectez-vous à votre compte MediaLab Works, ouvrez Licences et téléchargez le DLL du plugin (disponible avec un abonnement actif, une licence à vie dans sa période de mises à jour, ou pendant l’essai gratuit de 30 jours).
  2. Copiez le DLL dans le dossier des plugins Emby et redémarrez Emby Server :
    • Linux (paquet) : /var/lib/emby/plugins/
    • Docker : le dossier plugins dans votre volume de configuration Emby
    • Windows : %AppData%\Emby-Server\programdata\plugins\
  3. Ouvrez Edge Shield dans le menu du tableau de bord Emby et cliquez sur License. Collez votre clé de licence et activez-la, ou saisissez votre adresse e-mail pour démarrer l’essai gratuit de 30 jours ou acheter une licence. Le plugin contacte le serveur de licences, lie la clé à ce serveur Emby et affiche la licence comme Active.

La licence est vérifiée une fois par jour (et à chaque démarrage d’Emby). Sans internet, le plugin continue de fonctionner pendant 7 jours après la dernière vérification réussie ; ensuite, il est arrêté jusqu’à pouvoir vérifier à nouveau.

Licence

Sans licence valide, le plugin est arrêté ; seule la page License continue de fonctionner (vous pouvez y démarrer l’essai, acheter, saisir la clé ou mettre à jour).

Avec une licence valide, la même page peut installer une mise à jour ou revenir à la version précédente si une mise à jour pose problème. Redémarrez Emby dans les deux cas.

Configuration

  1. Connexion : dans Cloudflare, créez un jeton d’API (Create Token → Custom token), limité à votre zone, avec les permissions que la page liste : Zone · Zone · Read, Zone · DNS · Edit, Zone · Zone Settings · Edit, Zone · SSL and Certificates · Edit, Zone · Zone WAF · Edit, Zone · Single Redirect · Edit, Zone · Cache Rules · Edit, Zone · Origin Rules · Edit et Account · Account Filter Lists · Edit. Collez-le, puis choisissez la zone (votre domaine). Le jeton est stocké chiffré sur le serveur et n’est plus jamais affiché ; une permission manquante est indiquée sur la page d’état.
  2. Mode :
    • Recommandé : l’interface passe par Cloudflare, la vidéo en direct (« stream offload »). L’hôte de l’application passe par le proxy Cloudflare ; les requêtes vidéo, audio et de téléchargement sont redirigées (307) vers l’hôte de streaming, en « DNS only », qui va droit à votre serveur.
    • DNS only (sans proxy) : Cloudflare uniquement pour le DNS, le DDNS et le certificat. Les règles WAF et le blocage en périphérie ne s’appliquent pas, car le trafic ne passe pas par Cloudflare.
  3. Noms et ports : l’hôte de l’application (par exemple media.example.com) avec le port HTTPS utilisé par vos clients (443, ou l’un des ports proxifiés par Cloudflare : 2053, 2083, 2087, 2096, 8443), le port externe que votre routeur redirige vers le serveur (s’il diffère, Edge Shield ajoute une règle d’origine) et l’hôte de streaming (par exemple direct.example.com) avec son port HTTPS externe. L’IPv4 publique est détectée quand le champ est vide ; le DDNS tient les enregistrements à jour quand elle change.
  4. Certificat du serveur : Let’s Encrypt automatiquement (DNS-01, avec le jeton) pour les deux noms, ou un certificat que vous gérez vous-même. Full (strict) nécessite un certificat valide sur le serveur. Le certificat est renouvelé 30 jours avant son expiration.
  5. TLS : version TLS minimale et, en option, HSTS sur l’hôte de l’application (ne l’activez que lorsque HTTPS fonctionne de façon fiable ; c’est difficile à annuler).
  6. Protection : blocage automatique des IP avec des échecs de connexion (5 échecs en 10 minutes, blocage 24 heures par défaut, ×4 à chaque répétition), les IP ou plages CIDR à ne jamais bloquer, la limite de débit de connexion (plus de 10 requêtes en 10 s depuis une IP → blocage de 10 s), le blocage des en-têtes IP envoyés par les clients et les pays autorisés (codes ISO ; vide = tous).
  7. Enregistrez, puis ouvrez Status and fixes et cliquez sur Fix everything, pour que les paramètres et les règles atteignent Cloudflare et Emby. Redémarrez Emby Server quand la page le demande (les paramètres HTTPS, certificat et adresse transmise prennent effet après un redémarrage).

Utilisation quotidienne

  • La page d’état vérifie le jeton, les enregistrements DNS, les paramètres TLS, le certificat, les règles, la véritable IP client et HTTPS dans Emby ; chaque problème a un bouton Fix.
  • IP bloquées : la liste affiche l’adresse, la raison et l’expiration ; vous pouvez débloquer une IP ou en bloquer une à la main, avec une note et une durée. Votre réseau local, les plages Cloudflare et la liste d’autorisation ne sont jamais bloqués.
  • Under Attack : activez-le de 30 minutes à 12 heures pendant une attaque ; il se désactive tout seul. Tant qu’il est actif, les applications natives (Android TV, Roku, iOS, Kodi…) ne peuvent pas se connecter.
  • Restriction de port (pare-feu) : la page affiche des commandes prêtes à l’emploi pour ne laisser que Cloudflare atteindre le port de l’hôte de l’application ; Edge Shield ne modifie jamais votre pare-feu lui-même.
  • Remove the Edge Shield rules ne supprime que les règles créées par le plugin ; les paramètres DNS et TLS restent tels quels.

Ce qu’il envoie où

  • À Cloudflare, avec votre jeton : les paramètres de zone, les enregistrements DNS avec votre IP publique, les règles et les IP à bloquer. Le commentaire d’une entrée de la liste de blocage contient uniquement l’expiration et la raison (le nombre d’échecs de connexion, ou « manual » avec votre note). Depuis la version 0.1.1, le nom d’utilisateur tenté n’est pas envoyé à Cloudflare ; il reste dans la liste de blocage et le journal sur votre serveur.
  • https://www.cloudflare.com/cdn-cgi/trace pour détecter l’IP publique, et l’API publique de Cloudflare pour ses plages d’IP (quotidiennement).
  • À Let’s Encrypt : la demande de certificat pour vos noms d’hôte ; la clé privée reste sur votre serveur.
  • Rien ne va vers medialab.works, sauf la vérification de licence.

Dépannage

  • « The token lacks the … permission » : modifiez le jeton dans Cloudflare, ajoutez la permission indiquée et cliquez à nouveau sur Fix.
  • « Video would flow through the Cloudflare CDN » : l’hôte de l’application est proxifié mais aucun hôte de streaming n’est défini. Définissez un hôte de streaming (« DNS only ») ou passez en mode DNS only.
  • « The server’s public IP could not be detected » : saisissez l’IPv4 publique dans les paramètres.
  • Les applications ne se connectent pas : vérifiez que Under Attack est désactivé et que le port externe de l’hôte de streaming est redirigé vers le port HTTPS d’Emby.
  • Les changements n’apparaissent pas dans Emby : la page d’état indique Restart needed ; redémarrez Emby Server.