Bonjour,
Je débute totalement dans docker et je suis novice dans la gestion d'un serveur. Je possède un VPS debian 9 chez OVH.
Je viens de tester une image qui permet de créer un serveur de streaming live : https://hub.docker.com/r/tiangolo/nginx-rtmp/

L'installation est incroyable de simplicité ! Une ligne de commande et le serveur de streaming est opérationnel !
Je configure OBS (logiciel permettant le stream), j'ouvre le lien RTMP via VLC et tout fonctionne parfaitement.
<3

Par contre en l'état tout le monde peut streamer sur le serveur. Il est possible de mettre n'importe quoi en clef de stream. Et cette clef de stream permet juste de générer le lien de visionnage rtmp://ip/live/clefdestream

Est-il possible d'ajouter des clefs de stream spécifique ?
C'est a dire autoriser le streaming uniquement avec des clefs de stream déterminées à l'avance ?

Il faut connaitre l'IP et surtout la clef que tu as choisi, quel est le souci ?

Les personnes qui regarde le stream connaissent forcément l'ip ou le nom de domaine du serveur puisque pour voir le flux ils ont l'adresse du serveur.

Ensuite la clef de stream est rentrée sur OBS. Cela peut être n'importe quoi, et cela restera fonctionnel.

Exemple :
Dans OBS je rentre l'adresse du serveur : rtmp://ipserveur/live (adresse connu par toutes les personnes ayant déjà visionné le stream) et ensuite je rentre n'importe qu'elle clef, ex : toto. Et à partir de là le stream est opérationnel. Il suffit de se rendre à rtmp://ipserveur/live/toto pour voir le flux vidéo en direct.

Donc n'importe qui peut streamer n'importe quoi sur le serveur avec n'importe qu'elle clef.

En fouillant j'ai vu qu'il était possible d'autoriser le streaming qu'à partir de certaines adresses IP en ajoutant des lignes de code dans le fichier nginx.conf.
Problème, je ne comprends pas où est ce fichier nginx.conf et cette solution n'est pas vraiment pratique.
En effet j'aimerais pouvoir autoriser le stream sur ce serveur à 3 amis et ils ont tous des IP dynamiques donc il faudrait à chaque fois que leur IP change aller modifier ce fichier nginx.conf...

11 jours plus tard

Avez vous une idée de comment modifier le fichier nginx.conf ?

Il est dit sur la page docker : "If you need to modify the configurations you can create a file nginx.conf and replace the one in this image using a Dockerfile that is based on the image

FROM tiangolo/nginx-rtmp
COPY nginx.conf /etc/nginx/nginx.conf"

Mais je ne comprend pas comment modifier ce fichier.

Il faut que tu récupères le fichier existant dans ton container, au moyen de la commande "docker cp" (je te laisse regarder la doc.
Tu le modifie avec les valeurs que tu veux.
Ensuite, tu crée un fichier Dockerfile qui contient les instructions indiquées plus haut, et tu construis ton image avec la commande "docker build" (là aussi, la doc est ton amie...) et tu pourras lancer le container avec la commande "docker run" (je te laisse deviner où trouver les instructions détaillées...)

Ok, merci pour la réponse.
Du coup il n'est pas possible de modifier le fichier Nginx.conf sans avoir à recompiler tout le bazar ?

L'idée est d'ajouter dans ce fichier les IP autorisées à envoyer un flux vidéo sur le serveur. Le problème étant que les 4-5 IP concernées étant dynamiques, la modif de se fichier sera à réaliser relativement souvent 5-6 fois par semaines.

Il n'y a pas d'autre moyen plus pratique pour modifier ce fichier ?

Tu devrais déjà te simplifier la tâche en passant par du no-IP/Dynamic DNS

Du coup il n'est pas possible de modifier le fichier Nginx.conf sans avoir à recompiler tout le bazar ?

Attention, on ne parle pas de tout recompiler ! Tu pars d'une image déjà construite, et tu ne fais qu'ajouter un fichier pour recréer une nouvelle image. Ca prend au max 30 secondes (si tu as déjà pullé l'image d'origine).

Merci de votre aide !

Du coup, j'ai récupéré le fichier Dockerfile et j'ai fais les modifs sur mon fichier nginx.conf.
Par contre je n'arrive pas a reconstruire l'image et la relancer sur le serveur.

Avez vous un tuto qui me permettrais de comprendre cette manipulation ?

    Répondre…