diff --git a/plays/nginx_rtmp.yml b/plays/nginx_rtmp.yml
deleted file mode 100755
index b515bb231fb5122a3b8779d5ddfaa2923be40087..0000000000000000000000000000000000000000
--- a/plays/nginx_rtmp.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ansible-playbook
----
-- hosts: nginx_rtmp
-  vars:
-    nginx_rtmp: "{{ glob_nginx_rtmp | default({}) | combine(loc_nginx_rtmp | default({})) }}"
-  roles:
-    - nginx-rtmp
diff --git a/roles/nginx-rtmp/files/index.html b/roles/nginx-rtmp/files/index.html
deleted file mode 100644
index 24c9c74943f877f1e64aec9739c5cad5a2b8a5e0..0000000000000000000000000000000000000000
--- a/roles/nginx-rtmp/files/index.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-  <meta charset="UTF-8">
-  <title>Crans Stream</title>
-  <link href="lib/bootstrap4/css/bootstrap.min.css" rel="stylesheet">
-  <link href="//unpkg.com/video.js@7/dist/video-js.min.css" rel="stylesheet">
-  <style>
-  body, html {
-    height: 100%;
-  }
-  .video-js .vjs-big-play-button {
-    display: none;
-  }
-  </style>
-</head>
-<body class="bg-dark">
-  <div class="container-fluid h-100 p-0">
-      <div class="row align-items-center h-100 mx-0">
-        <div class="col-lg-8">
-          <video id="my-video" class="video-js embed-responsive shadow-lg rounded-sm"></video>
-          <p class="text-right text-white">
-            <a class="text-white text-decoration-none" href="#" id="refreshStream">
-              <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-arrow-repeat" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
-                <path fill-rule="evenodd" d="M2.854 7.146a.5.5 0 0 0-.708 0l-2 2a.5.5 0 1 0 .708.708L2.5 8.207l1.646 1.647a.5.5 0 0 0 .708-.708l-2-2zm13-1a.5.5 0 0 0-.708 0L13.5 7.793l-1.646-1.647a.5.5 0 0 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0 0-.708z"/>
-                <path fill-rule="evenodd" d="M8 3a4.995 4.995 0 0 0-4.192 2.273.5.5 0 0 1-.837-.546A6 6 0 0 1 14 8a.5.5 0 0 1-1.001 0 5 5 0 0 0-5-5zM2.5 7.5A.5.5 0 0 1 3 8a5 5 0 0 0 9.192 2.727.5.5 0 1 1 .837.546A6 6 0 0 1 2 8a.5.5 0 0 1 .501-.5z"/>
-              </svg>
-              Rafraîchir
-            </a>
-            —
-            <a class="text-white text-decoration-none" href="#" id="linkStream">
-              <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-box-arrow-up-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
-                <path fill-rule="evenodd" d="M1.5 13A1.5 1.5 0 0 0 3 14.5h8a1.5 1.5 0 0 0 1.5-1.5V9a.5.5 0 0 0-1 0v4a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 0 0-1H3A1.5 1.5 0 0 0 1.5 5v8zm7-11a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-1 0V2.5H9a.5.5 0 0 1-.5-.5z"/>
-                <path fill-rule="evenodd" d="M14.354 1.646a.5.5 0 0 1 0 .708l-8 8a.5.5 0 0 1-.708-.708l8-8a.5.5 0 0 1 .708 0z"/>
-              </svg>
-              Ouvrir le flux dans une application externe
-            </a>
-            —
-            <a class="text-white text-decoration-none" href="#aboutModal" data-toggle="modal">
-              <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-info-square" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
-                <path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/>
-                <path d="M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z"/>
-                <circle cx="8" cy="4.5" r="1"/>
-              </svg>
-              À propos
-            </a>
-          </p>
-        </div>
-        <div class="col-lg-4 h-100 px-0">
-          <div class="embed-responsive h-100 shadow-lg rounded-left">
-            <iframe src="https://irc.crans.org/web/?join=video_NOM&nick=viewer1&password=&realname=Viewer1"></iframe>
-          </div>
-        </div>
-      </div>
-  </div>
-
-  <div class="modal fade" id="aboutModal" tabindex="-1">
-    <div class="modal-dialog-centered modal-dialog modal-lg">
-      <div class="modal-content">
-        <div class="modal-header">
-          <h4 class="modal-title" id="exampleModalLabel">À propos</h4>
-          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-            <span aria-hidden="true">&times;</span>
-          </button>
-        </div>
-        <div class="modal-body">
-          <p>Crans Stream est un service maintenu par le <a href="https://crans.org/">Crans</a> permettant de diffuser un contenu vidéo. Il a pour but d'être utilisé pour diffuser des séminaires ou évènements.</p>
-
-          <h4>Comment je diffuse ?</h4>
-          <p>Pour diffuser un contenu vous devez être adhérent Crans et être sur le campus de Cachan.</p>
-          <h5>Avec Open Broadcaster Software</h5>
-          <p>
-            <a href="https://obsproject.com/">Open Broadcaster Software (OBS)</a>
-            est une solution libre et open source de diffusion vidéo.
-            Pour diffuser sur cette plateforme, allez dans l'onglet « Stream (flux) » des paramètres :
-          </p> 
-          <ul>
-            <li><b>Serveur :</b> <code>rtmps://stream.adm.crans.org:1935/live</code>,</li>
-            <li><b>Clé de stream :</b> votre identifiant.</li>
-          </ul>
-          <h5>Avec FFmpeg</h5>
-          <p>
-            <code>
-              ffmpeg -re -i mavideo.webm -vcodec libx264 -vprofile baseline
-              -acodec aac -strict -2 -f flv
-              rtmps://stream.adm.crans.org:1935/live/identifiant
-            </code>
-          </p>
-
-          <h4>Mentions légales</h4>
-          <p>
-            Le service de diffusion vidéo du Crans est un service d'hébergement
-            au sens de l'article 6, I, 2e de la loi 2004-575 du 21 juin 2004.
-            Conformément aux dispositions de l'article 6, II du même,
-            l'association Crans conserve les données de nature à permettre
-            l'identification des auteurs du contenu diffusé.
-            Ce service est hébergé par l'association Crans, au
-            61 Avenue du Président Wilson, 94235 Cachan Cedex, France.
-          </p>
-          <p>
-            <b>En cas de réclamation sur le contenu diffusé</b> de type
-            <code>https://stream.crans.org/identifiant</code>,
-            l'auteur peut être contacté par courrier à l'adresse
-            <code>identifiant@crans.org</code>.
-            La loi vous autorise à contacter directement l'hébergeur à
-            l'adresse suivante :
-            <pre>Association Crans - ENS Paris-Saclay<br/>Notification de Contenus Illicites<br/>61, Avenue du Président Wilson<br/>94235 Cachan Cedex<br/>France</pre>
-            Vous pouvez également envoyer directement vos réclamations par
-            courrier électronique à l'adresse <code>bureau[at]crans.org</code>.
-          </p>
-        </div>
-      </div>
-    </div>
-  </div>
-
-  <script src="lib/jquery/jquery.min.js"></script>
-  <script src="lib/bootstrap4/js/bootstrap.min.js"></script>
-  <script src="//unpkg.com/video.js@7/dist/video.min.js"></script>
-  <script>
-  // Get current stream
-  let streamId = window.location.pathname.split("/").pop()
-  if (streamId.length === 0) {
-    streamId = "crans"  // default on crans account
-  }
-  const streamUrl = `/hls/${streamId}.m3u8`
-  document.getElementById("linkStream").href = streamUrl
-
-  // Create player
-  const player = videojs('my-video', {
-    controls: true,
-    autoplay: true,
-    preload: 'auto',
-    muted: true,
-    fluid: true,
-    aspectRatio: '16:9'
-  })
-
-  function loadStream() {
-    fetch(streamUrl, {
-      method: 'HEAD',
-       cache: 'no-cache'
-    }).then((response) => {
-     if (response.ok) {
-        // Stream exists, load!
-        player.poster()
-        player.src({
-          type: 'application/x-mpegURL',
-           src: streamUrl
-        })
-      } else {
-        // Stream does not exist, alert!
-        player.poster('/no-stream.jpg')
-      }
-    })
-  }
-
-  $(document).ready(function () {
-    loadStream()
-
-    document.getElementById("refreshStream").addEventListener("click", function(){
-      loadStream()
-    })
-  })
-  </script>
-</body>
-</html>
diff --git a/roles/nginx-rtmp/files/no-stream.jpg b/roles/nginx-rtmp/files/no-stream.jpg
deleted file mode 100644
index af44c5a43ea0399422d9fe21c302a262c53f7a3e..0000000000000000000000000000000000000000
Binary files a/roles/nginx-rtmp/files/no-stream.jpg and /dev/null differ
diff --git a/roles/nginx-rtmp/handlers/main.yml b/roles/nginx-rtmp/handlers/main.yml
deleted file mode 100644
index 3b8f2d6927c32e1ccdb51d04f84b0944f2aa7d93..0000000000000000000000000000000000000000
--- a/roles/nginx-rtmp/handlers/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-
-- name: restart nginx
-  service:
-    name: nginx
-    state: restarted
-  become: true
diff --git a/roles/nginx-rtmp/tasks/main.yml b/roles/nginx-rtmp/tasks/main.yml
deleted file mode 100644
index a60c62cbe3bac0591a5cd35fd73b43449dfd4a9a..0000000000000000000000000000000000000000
--- a/roles/nginx-rtmp/tasks/main.yml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-
-- name: Install nginx with rtmp module
-  apt:
-    name:
-      - nginx-full
-      - libnginx-mod-rtmp
-      - libjs-bootstrap4
-  register: apt_result
-  retries: 3
-  until: apt_result is succeeded
-  become: yes
-
-- name: Copy module and site configuration files
-  template:
-    src: "{{ item }}.j2"
-    dest: "/etc/{{ item }}"
-  loop:
-    - nginx/modules-available/60-rtmp.conf
-    - nginx/sites-available/stream
-  notify: restart nginx
-
-- name: Enable NGINX site
-  file:
-    src: /etc/nginx/sites-available/stream
-    dest: /etc/nginx/sites-enabled/stream
-    state: link
-  notify: restart nginx
-
-- name: Enable RTMP module
-  file:
-    src: /etc/nginx/modules-available/60-rtmp.conf
-    dest: /etc/nginx/modules-enabled/60-rtmp.conf
-    state: link
-  notify: restart nginx
-
-- name: Create site folder
-  file:
-    path: /var/www/stream/hls
-    state: directory
-
-- name: Copy index.html and assets
-  copy:
-    src: "{{ item }}"
-    dest: "/var/www/stream/{{ item }}"
-  loop:
-    - index.html
-    - no-stream.jpg
-
-- name: Link javascript libs
-  file:
-    src: /usr/share/javascript
-    dest: /var/www/stream/lib
-    state: link
-
-- name: Configure tmpfs
-  lineinfile:
-    path: /etc/fstab
-    line: tmpfs /var/www/stream/hls tmpfs rw,noexec,nodev,nosuid 0 0
diff --git a/roles/nginx-rtmp/templates/nginx/modules-available/60-rtmp.conf.j2 b/roles/nginx-rtmp/templates/nginx/modules-available/60-rtmp.conf.j2
deleted file mode 100644
index e780fb6c9a9842a58339015195642b734fad73d4..0000000000000000000000000000000000000000
--- a/roles/nginx-rtmp/templates/nginx/modules-available/60-rtmp.conf.j2
+++ /dev/null
@@ -1,18 +0,0 @@
-{{ ansible_header | comment }}
-
-rtmp {
-    server {
-        listen 1935;
-        chunk_size 4096;
-        application live {
-            live on;
-            hls on;
-            hls_path /var/www/stream/hls/;
-            hls_fragment 3;
-            hls_playlist_length 20;
-
-            record off;
-        }
-    }
-}
-
diff --git a/roles/nginx-rtmp/templates/nginx/sites-available/stream.j2 b/roles/nginx-rtmp/templates/nginx/sites-available/stream.j2
deleted file mode 100644
index 2a074c8da1ec704eaf1a416aaccf9cc1f0f3ed19..0000000000000000000000000000000000000000
--- a/roles/nginx-rtmp/templates/nginx/sites-available/stream.j2
+++ /dev/null
@@ -1,40 +0,0 @@
-{{ ansible_header | comment }}
-
-server {
-    listen 80;
-    listen [::]:80;
-
-    server_name {{ nginx_rtmp.uri }};
-
-    root /var/www/stream;
-    index index.html;
-
-    location / {
-        try_files $uri $uri/ /index.html;
-    }
-
-    location /hls {
-        # Disable cache
-        add_header Cache-Control no-cache;
-
-        # CORS setup
-        add_header 'Access-Control-Allow-Origin' '*' always;
-        add_header 'Access-Control-Expose-Headers' 'Content-Length';
-
-        # allow CORS preflight requests
-        if ($request_method = 'OPTIONS') {
-            add_header 'Access-Control-Allow-Origin' '*';
-            add_header 'Access-Control-Max-Age' 1728000;
-            add_header 'Content-Type' 'text/plain charset=UTF-8';
-            add_header 'Content-Length' 0;
-            return 204;
-        }
-
-        types {
-            application/dash+xml mpd;
-            application/vnd.apple.mpegurl m3u8;
-            video/mp2t ts;
-        }
-    }
-}
-