Vous avez monté un serveur multimédia domestique sur Plex ou Jellyfin, l'avez rempli de films, de séries et de musique — et vous souhaitez donner accès à des amis ou à la famille. Mais ouvrir les ports du routeur est effrayant : c'est une véritable faille dans votre réseau domestique. Un serveur proxy résout ce problème de manière élégante : il agit comme intermédiaire entre votre serveur et les spectateurs, cachant l'IP réelle et ne nécessitant pas de configurations dangereuses du routeur.
Pourquoi ne pas simplement ouvrir un port : les risques du serveur domestique
La manière la plus évidente de donner accès à un ami à Plex ou Jellyfin est d'ouvrir un port sur le routeur. Par exemple, ouvrir le port 32400 (Plex) ou 8096 (Jellyfin) et envoyer à votre ami un lien du type http://votre-IP:32400. Techniquement, cela fonctionne. Mais en termes de sécurité — c'est une catastrophe.
Voici ce qui se passe lorsque vous ouvrez un port de votre routeur domestique sur Internet :
- Votre IP domestique devient publique. Quiconque connaît l'adresse de votre serveur connaît votre véritable IP domestique. Cela inclut la géolocalisation, le fournisseur, votre adresse avec précision jusqu'au quartier.
- Les scanners de bots vous trouveront en quelques heures. Shodan, Censys et des milliers de scanners automatiques parcourent constamment Internet. Un port ouvert pour Plex ou Jellyfin sera découvert et commencera à recevoir des tentatives de piratage dans les heures suivant son ouverture.
- Vulnérabilités dans le logiciel = piratage du réseau. Plex et Jellyfin sont des logiciels complexes avec un historique de vulnérabilités. Si votre version a une faille non corrigée, un attaquant peut accéder non seulement au serveur multimédia, mais aussi à l'ensemble de votre réseau domestique : ordinateurs portables, NAS, appareils intelligents.
- DDoS et plaintes pour abus. Votre fournisseur d'accès domestique n'est pas obligé de vous protéger contre les attaques DDoS. En cas d'attaque massive, vous serez simplement déconnecté.
- IP dynamique. La plupart des utilisateurs domestiques ont une IP qui change. À chaque fois, vous devrez informer vos amis de la nouvelle adresse ou configurer un service DDNS.
La conclusion est évidente : un port ouvert n'est pas une solution pour un serveur multimédia domestique auquel se connectent des personnes extérieures. Un intermédiaire est nécessaire pour accepter les requêtes des spectateurs et les transmettre à votre serveur, sans révéler votre IP réelle et sans créer de failles dans le réseau domestique.
Comment un proxy aide à partager des médias : schéma de fonctionnement
Un proxy dans le contexte d'un serveur multimédia domestique fonctionne comme un point intermédiaire. Vos amis ne se connectent pas directement à votre IP domestique, mais à l'IP du serveur proxy. Le proxy reçoit la requête, la transmet à votre serveur, reçoit la réponse (flux vidéo, métadonnées, couvertures) et la renvoie au spectateur.
Le schéma est le suivant :
Votre serveur domestique → Serveur proxy → Ami (spectateur)
Ce que cela donne en pratique :
- Votre IP domestique est cachée. Les spectateurs ne voient que l'IP du serveur proxy. Même si un ami partage le lien avec quelqu'un d'autre — ils ne pourront pas attaquer votre réseau domestique directement.
- Pas besoin d'ouvrir les ports du routeur. Votre serveur initie lui-même la connexion sortante avec le proxy (ou le tunnel). Les connexions entrantes depuis Internet vers votre réseau ne passent pas.
- Une adresse stable unique. Le serveur proxy a une IP fixe. Même si votre IP domestique change — les spectateurs ne le sauront pas.
- Chiffrement SSL. Le proxy peut terminer le HTTPS, assurant le chiffrement du trafic entre le spectateur et le proxy.
- Contrôle d'accès. Au niveau du proxy, vous pouvez limiter qui peut se connecter au serveur.
Il est important de comprendre la différence entre deux scénarios d'utilisation du proxy pour un serveur multimédia. Le premier scénario — vous louez un serveur proxy (ou VPS) et configurez un reverse proxy (proxy inverse) dessus : nginx, Caddy ou Traefik. Ce serveur accepte les requêtes des spectateurs et les proxy vers votre serveur domestique. Le deuxième scénario — vous utilisez un service proxy commercial comme tunnel ou nœud intermédiaire pour anonymiser les requêtes sortantes de votre serveur.
Dans cet article, nous examinerons les deux approches, mais l'accent principal sera mis sur la configuration pratique qui permettra à vos amis de regarder le contenu de votre serveur sans complications techniques de leur part.
Quel type de proxy convient à Plex et Jellyfin
Tous les types de proxy ne conviennent pas également au streaming vidéo. Voici un tableau comparatif tenant compte des spécificités des serveurs multimédias domestiques :
| Type de proxy | Vitesse | Stabilité | Convient au streaming | Remarque |
|---|---|---|---|---|
| Proxies de centre de données | ★★★★★ | ★★★★★ | ✅ Excellent | Bande passante élevée, ping stable. Idéal pour le tunneling de stream. |
| Proxies résidentiels | ★★★☆☆ | ★★★☆☆ | ⚠️ Limité | Utile pour contourner les restrictions géographiques lors de l'accès à des services externes depuis Plex. Pour le streaming — instable. |
| Proxies mobiles | ★★★☆☆ | ★★★☆☆ | ❌ Non recommandé | Coût élevé du trafic, vitesse instable. Pas optimal pour les flux vidéo. |
| Reverse Proxy (nginx/Caddy sur VPS) | ★★★★★ | ★★★★★ | ✅ Idéal | La meilleure approche pour une utilisation permanente. Nécessite la location d'un VPS. |
Conclusion sur les types : pour le streaming permanent de contenu multimédia, le choix optimal est un proxy inverse sur un VPS loué, ou des proxies de centre de données avec une bande passante élevée. Les proxies résidentiels sont utiles dans un autre scénario : lorsque Plex ou Jellyfin accède à des sources de métadonnées externes ou à des plugins qui bloquent les IP des serveurs.
💡 Point important
Plex dispose de son propre service de relais cloud (Plex Relay), qui fonctionne comme un proxy intégré via les serveurs de Plex Inc. Il est gratuit, mais limite la vitesse à ~2 Mbit/s, ce qui n'est pas suffisant pour le 1080p. Pour une qualité normale, il faut soit une connexion directe (avec un port ouvert), soit un proxy personnel.
Configuration du proxy pour Plex Media Server : étape par étape
Examinons le scénario le plus pratique : vous avez un serveur domestique avec Plex, et vous souhaitez donner accès à des amis via un proxy inverse sur un VPS. Cela donne une URL stable, un certificat SSL et cache votre IP domestique.
Ce dont vous aurez besoin :
- PC domestique ou NAS avec Plex Media Server installé
- VPS (n'importe lequel, même le moins cher — 1 vCPU, 1 Go de RAM suffisent pour le proxy)
- Domaine (peut être gratuit : DuckDNS, FreeDNS)
- Environ 30-60 minutes de temps
Étape 1. Configurez Plex sur le serveur domestique
Ouvrez Plex Web sur le serveur domestique. Allez dans Paramètres → Accès à distance. Assurez-vous que l'option "Autoriser l'accès à distance" est activée. Notez le port — par défaut, c'est 32400. Pour l'instant, NE pas ouvrir ce port sur le routeur — nous ferons tout via le proxy.
Étape 2. Installez Nginx sur le VPS
Connectez-vous au VPS via SSH. Installez Nginx et Certbot pour SSL :
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y
Étape 3. Configurez le tunnel du VPS au serveur domestique
C'est le point clé. Nous devons nous assurer que le VPS peut atteindre votre Plex domestique. Il existe deux méthodes :
Méthode A (plus simple) : Tunnel SSH depuis le serveur domestique vers le VPS. Sur votre serveur domestique, exécutez la commande qui crée un tunnel permanent — redirige le port 32400 de Plex domestique vers le port 32400 du VPS :
ssh -N -R 32400:localhost:32400 user@VOTRE_VPS_IP
Pour que le tunnel fonctionne en permanence, ajoutez-le à systemd ou utilisez autossh pour une reconnexion automatique en cas de rupture.
Méthode B (plus fiable) : Tailscale ou WireGuard VPN entre le serveur domestique et le VPS. Cela crée un tunnel chiffré permanent sans avoir besoin d'ouvrir des ports. Pour plus de détails — voir la section sur les alternatives.
Étape 4. Configurez Nginx comme proxy inverse
Créez une configuration pour votre domaine. Créez le fichier /etc/nginx/sites-available/plex :
server {
listen 80;
server_name plex.votre-domaine.com;
location / {
proxy_pass http://localhost:32400;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Important pour le streaming vidéo :
proxy_buffering off;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
client_max_body_size 0;
}
}
Étape 5. Obtenez un certificat SSL
sudo certbot --nginx -d plex.votre-domaine.com
Certbot mettra automatiquement à jour la configuration de Nginx et ajoutera HTTPS. Après cela, vos amis pourront accéder à https://plex.votre-domaine.com — et voir votre Plex avec un chiffrement SSL.
Étape 6. Indiquez l'URL du proxy dans les paramètres de Plex
Dans Plex Media Server, allez dans Paramètres → Réseau. Dans le champ "URL personnalisées du serveur", indiquez votre domaine : https://plex.votre-domaine.com:443. Cela dira à Plex que les clients doivent se connecter via cette adresse, et non chercher un chemin direct.
Configuration du proxy pour Jellyfin : étape par étape
Jellyfin est une alternative entièrement gratuite et open-source à Plex. La configuration d'un proxy inverse pour Jellyfin est légèrement différente, mais la logique reste la même. Jellyfin fonctionne par défaut sur le port 8096 (HTTP) et 8920 (HTTPS).
Étape 1. Configurez Jellyfin pour fonctionner derrière un proxy
Ouvrez le panneau de contrôle de Jellyfin. Allez dans Panneau de contrôle → Réseau. Trouvez le champ "URL de base" et laissez-le vide (si Jellyfin sera à la racine). Assurez-vous que l'option "Autoriser les connexions distantes" est activée.
Étape 2. Configuration de Nginx pour Jellyfin
La configuration de Nginx pour Jellyfin est un peu plus complexe, car le serveur utilise WebSocket pour la synchronisation :
server {
listen 80;
server_name jellyfin.votre-domaine.com;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Support WebSocket (important pour Jellyfin !)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Streaming sans mise en mémoire tampon
proxy_buffering off;
proxy_read_timeout 36000s;
}
}
Alternative : Caddy au lieu de Nginx
Si vous ne souhaitez pas vous occuper de Nginx, essayez Caddy — il obtient automatiquement des certificats SSL et a une syntaxe de configuration plus simple. La configuration pour Jellyfin dans Caddy ressemble à ceci :
jellyfin.votre-domaine.com {
reverse_proxy localhost:8096
}
Oui, c'est littéralement deux lignes. Caddy configurera lui-même HTTPS, obtiendra un certificat Let's Encrypt et le mettra à jour automatiquement. Pour la plupart des utilisateurs domestiques, Caddy est un choix plus pratique.
Étape 3. Configurez le tunnel (similaire à Plex)
Utilisez le même tunnel SSH ou la méthode VPN décrite dans la section sur Plex, mais avec le port 8096 :
ssh -N -R 8096:localhost:8096 user@VOTRE_VPS_IP
💡 Conseil de sécurité
Après avoir configuré le proxy, assurez-vous que Jellyfin écoute uniquement sur localhost (127.0.0.1), et non sur toutes les interfaces (0.0.0.0). Cela empêchera l'accès direct au serveur en contournant le proxy. Dans les paramètres de Jellyfin → Réseau → "Lier à l'adresse locale", indiquez 127.0.0.1.
Alternatives : Tailscale, Cloudflare Tunnel et proxy — comparaison
En plus du classique proxy inverse via un VPS, il existe des solutions plus modernes. Examinons leurs avantages et inconvénients :
Tailscale (et Headscale)
Tailscale est un VPN basé sur WireGuard qui crée un réseau privé entre vos appareils. Vous installez Tailscale sur le serveur domestique et sur les appareils de vos amis — et ils obtiennent un accès direct chiffré au serveur via le réseau virtuel.
- Avantages : très facile à configurer, sécurité maximale, pas de latence due au proxy, gratuit jusqu'à 3 utilisateurs
- Inconvénients : les amis doivent installer le client Tailscale, dépendance aux serveurs de Tailscale Inc., plus difficile à mettre à l'échelle pour un grand nombre de spectateurs
- Quand choisir : si vous avez 2-5 amis techniquement compétents qui ne sont pas contre l'installation d'une application
Cloudflare Tunnel (anciennement Argo Tunnel)
Cloudflare Tunnel permet de publier votre serveur domestique sur Internet via l'infrastructure de Cloudflare sans ouvrir de ports. Vous installez cloudflared sur le serveur domestique, il crée un tunnel sortant vers Cloudflare, et votre serveur devient accessible via votre domaine grâce au CDN de Cloudflare.
- Avantages : gratuit, pas besoin de VPS, protection DDoS de Cloudflare, SSL automatiquement
- Inconvénients : Cloudflare interdit l'utilisation du plan gratuit pour le streaming vidéo dans ses CGU. Pour de gros volumes de trafic, un plan payant est nécessaire. De plus, Cloudflare voit tout votre trafic.
- Quand choisir : pour des tests ou un accès occasionnel à Jellyfin/Plex
Tableau comparatif des solutions
| Solution | Difficulté | Coût | Vitesse | Exigences pour les spectateurs |
|---|---|---|---|---|
| Nginx/Caddy sur VPS | Moyenne | ~3-5 $/mois (VPS) | ★★★★★ | Seulement un navigateur ou un client Plex/Jellyfin |
| Tailscale | Faible | Gratuit (jusqu'à 3 utilisateurs) | ★★★★★ | Installer Tailscale |
| Cloudflare Tunnel | Faible | Gratuit / à partir de 20 $/mois | ★★★☆☆ | Seulement un navigateur ou un client |
| Plex Relay (intégré) | Nulle | Gratuit | ★★☆☆☆ | Seulement le client Plex |
Vitesse et qualité de streaming via un proxy : ce qui influence
La principale question lors de l'utilisation d'un proxy pour un serveur multimédia est de savoir si la qualité vidéo va chuter. Analysons ce qui influence réellement la vitesse de streaming via un proxy.
Bande passante de l'Internet domestique
C'est la contrainte la plus importante. Tout le flux vidéo passe par votre connexion Internet domestique (upload). Les exigences typiques en matière de vitesse de téléchargement (upload) sont les suivantes :
- Qualité SD (480p) : ~2-4 Mbit/s par spectateur
- Qualité HD (720p) : ~5-8 Mbit/s par spectateur
- Full HD (1080p) : ~8-15 Mbit/s par spectateur
- 4K HDR : ~25-40 Mbit/s par spectateur
Si vous avez un forfait domestique avec 50 Mbit/s en upload, vous pourrez simultanément fournir 3-4 spectateurs en 1080p. Le proxy ici ne crée pas de limitations supplémentaires — il ne fait que rediriger le trafic.
Transcodage vs flux direct
Plex et Jellyfin peuvent transcoder des vidéos à la volée — convertir le format en fonction des capacités de l'appareil client. Le transcodage charge le processeur du serveur domestique, mais n'est pas lié au proxy. Si l'appareil client prend en charge la lecture directe (Direct Play) — la charge est minimale.
Recommandation : configurez les applications clientes Plex/Jellyfin pour la meilleure qualité et la lecture directe — cela réduira la charge sur le serveur et éliminera les délais de transcodage.
Latence du proxy
Le proxy ajoute un "saut" supplémentaire dans le chemin. Pour le streaming vidéo, une latence de 20-50 ms est pratiquement imperceptible — la mise en mémoire tampon du lecteur vidéo compense cela. Il est crucial de choisir un VPS dans une région proche de vos spectateurs : si vos amis sont à Moscou — prenez un VPS à Moscou ou en Europe, pas aux États-Unis.
Conseils pratiques pour l'optimisation
- Désactivez la mise en mémoire tampon dans Nginx (
proxy_buffering off) — c'est critique pour le streaming vidéo - Augmentez les délais d'attente (
proxy_read_timeout 36000s) — sinon, les longs films seront interrompus - Activez HTTP/2 dans Nginx — cela réduit le surcoût lors de multiples requêtes parallèles
- Utilisez gzip uniquement pour les réponses textuelles (métadonnées, API), mais pas pour les flux vidéo
- Configurez la mise en cache des couvertures et des métadonnées au niveau du proxy — cela réduira la charge sur le serveur domestique
Sécurité : comment protéger le serveur et les données des utilisateurs
En configurant un proxy, vous avez déjà considérablement amélioré la sécurité par rapport à un port ouvert. Mais il y a encore plusieurs mesures importantes à mettre en œuvre.
Authentification au niveau du proxy
Ajoutez une authentification HTTP de base au niveau de Nginx comme barrière supplémentaire. Même si quelqu'un trouve votre URL — sans identifiant et mot de passe, il ne verra pas l'interface de Plex/Jellyfin. Créez un fichier de mots de passe :
sudo htpasswd -c /etc/nginx/.htpasswd nom_utilisateur
Cependant, gardez à l'esprit : l'authentification de base de Nginx peut entrer en conflit avec l'API de Plex/Jellyfin. Il est préférable de se fier entièrement à l'authentification intégrée de ces services — elle est suffisamment fiable.
Restriction par IP
Si vos amis ont des IP statiques (ou sont prêts à vous informer de leurs IP lors de changements) — ajoutez une liste blanche dans Nginx :
location / {
allow 1.2.3.4; # IP de l'ami 1
allow 5.6.7.8; # IP de l'ami 2
deny all;
proxy_pass http://localhost:32400;
}
Fail2ban contre le bruteforce
Installez Fail2ban sur le VPS — il bloque automatiquement les adresses IP qui font trop de tentatives de connexion échouées. Cela protégera à la fois Nginx et SSH sur le VPS lui-même :
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
Mises à jour régulières
Mettez à jour Plex/Jellyfin, Nginx et le système d'exploitation du VPS régulièrement. La plupart des piratages de serveurs multimédias se produisent via des vulnérabilités connues dans des versions obsolètes de logiciels. Configurez les mises à jour de sécurité automatiques sur le VPS :
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades
Surveillance et journaux
Configurez la visualisation des journaux de Nginx pour suivre les activités suspectes. La commande pour voir les dernières requêtes en temps réel :
sudo tail -f /var/log/nginx/access.log
Faites attention aux requêtes avec des User-Agent inhabituels, aux requêtes massives vers /admin, /wp-admin et d'autres chemins standard — ce sont des signes de balayage automatique.
Liste de contrôle de sécurité pour le serveur multimédia domestique
- ✅ Le proxy cache l'IP domestique réelle
- ✅ Le certificat SSL est installé et se met à jour automatiquement
- ✅ Les ports Plex/Jellyfin NE sont PAS ouverts directement sur le routeur
- ✅ Plex/Jellyfin écoute uniquement sur localhost
- ✅ Fail2ban est installé sur le VPS
- ✅ SSH sur le VPS fonctionne uniquement par clés (pas par mot de passe)
- ✅ Les mises à jour de sécurité automatiques sont activées
- ✅ Un compte séparé a été créé pour chaque spectateur dans Plex/Jellyfin
- ✅ L'accès à la section d'administration est restreint
Conclusion et recommandations
Configurer un proxy pour un serveur multimédia domestique Plex ou Jellyfin est un équilibre entre commodité, sécurité et vitesse. Ouvrir un port de routeur offre la vitesse maximale, mais crée de réels risques pour l'ensemble du réseau domestique. Le proxy résout ce problème en ajoutant une latence minimale, tout en assurant une protection adéquate.
Le meilleur choix pour la plupart des utilisateurs domestiques est un proxy inverse sur un VPS bon marché via Caddy (plus simple) ou Nginx (plus flexible) en combinaison avec un tunnel SSH ou WireGuard/Tailscale. Cela donne une URL stable, un chiffrement SSL et un contrôle total sur qui et comment se connecte à votre serveur.
Si vous utilisez Plex ou Jellyfin non seulement pour partager du contenu avec des amis, mais aussi pour accéder à des sources externes de métadonnées, de bandes-annonces ou de plugins qui bloquent les IP des serveurs — pour ces requêtes, les proxies résidentiels sont excellents : ils imitent le trafic d'un utilisateur domestique ordinaire et ne suscitent pas de soupçons auprès des services externes.
Pour ceux qui souhaitent la vitesse maximale de tunneling de flux vidéo avec des latences minimales, il convient de se tourner vers les proxies de centre de données — ils offrent une bande passante élevée et un temps de disponibilité stable, ce qui est critique pour un streaming ininterrompu en Full HD et 4K.