diff --git a/group_vars/jitsi.yml b/group_vars/jitsi.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a9d1b0fcc16ea33a9ddb55a42ff0a30787da69c0
--- /dev/null
+++ b/group_vars/jitsi.yml
@@ -0,0 +1,11 @@
+---
+# We use embedded Jitsi configuration
+loc_nginx:
+  servers: []
+
+glob_jitsi:
+  ip: "{{ query('ldap', 'ip', ansible_hostname, 'srv') }}"
+  hostname: "{{ ansible_hostname }}.crans.org"
+  configuration:
+    - "liveStreamingEnabled"
+    - "prejoinPageEnabled"
diff --git a/hosts b/hosts
index 546127cf420c039554175eccaa14f93a1deff996..c95de5ce4ff4c2afb8af48cb59cfe5361793c94c 100644
--- a/hosts
+++ b/hosts
@@ -26,6 +26,7 @@ sputnik.adm.crans.org
 [certbot:children]
 dovecot
 gitlab
+jitsi
 mailman
 radius  # We use certbot to manage LE certificates
 reverseproxy
@@ -69,6 +70,9 @@ horde.adm.crans.org
 [irc]
 irc.adm.crans.org
 
+[jitsi]
+jitsi.adm.crans.org
+
 [keepalived:children]
 routeurs_vm
 
@@ -93,6 +97,7 @@ charybde.adm.crans.org
 
 [nginx:children]
 django_cas
+jitsi
 mailman
 reverseproxy
 roundcube
diff --git a/plays/jitsi.yml b/plays/jitsi.yml
new file mode 100755
index 0000000000000000000000000000000000000000..77395233a36410ddd0eb26c3435a56b6d417125f
--- /dev/null
+++ b/plays/jitsi.yml
@@ -0,0 +1,11 @@
+#!/usr/bin/env ansible-playbook
+---
+- hosts: jitsi
+  vars:
+    certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}'
+    nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}'
+    jitsi: '{{ glob_jitsi | default({}) | combine(loc_jitsi | default({})) }}'
+  roles:
+    - certbot
+    - nginx
+    - jitsi
diff --git a/roles/jitsi/tasks/main.yml b/roles/jitsi/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b2500196c11896082e9e8f02e8574da73e79d634
--- /dev/null
+++ b/roles/jitsi/tasks/main.yml
@@ -0,0 +1,77 @@
+---
+- name: Install GPG dependencies
+  apt:
+    update_cache: true
+    install_recommends: false
+    name:
+      - apt-transport-https
+      - gnupg2
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Define host
+  lineinfile:
+    path: /etc/hosts
+    regexp: "^{{ item }}"
+    line: '{{ item }} {{ jitsi.hostname }}'
+  loop: "{{ jitsi.ip }}"
+
+- name: Import public key of Jitsi repository
+  apt_key:
+    url: https://download.jitsi.org/jitsi-key.gpg.key
+
+- name: Configure Jitsi repository
+  template:
+    src: apt/sources.list.d/jitsi.list.j2
+    dest: /etc/apt/sources.list.d/jitsi.list
+    mode: 0644
+    owner: root
+    group: root
+
+- name: Configure debian questions
+  debconf:
+    name: "{{ item.name }}"
+    question: "{{ item.question }}"
+    value: "{{ item.value }}"
+    vtype: "{{ item.vtype }}"
+  loop:
+    - name: jitsi-meet-prosody
+      question: jitsi-videobridge/jvb-hostname
+      value: "{{ jitsi.hostname }}"
+      vtype: "string"
+    - name: jitsi-meet-web-config
+      question: jitsi-meet/cert-choice
+      value: "I want to use my own certificate"
+      vtype: "select"
+    - name: jitsi-meet-web-config
+      question: jitsi-meet/cert-path-crt
+      value: "/etc/letsencrypt/live/{{ certbot[0].certname }}/fullchain.pem"
+      vtype: "string"
+    - name: jitsi-meet-web-config
+      question: jitsi-meet/cert-path-key
+      value: "/etc/letsencrypt/live/{{ certbot[0].certname }}/privkey.pem"
+      vtype: "string"
+
+- name: Install Jitsi-meet
+  apt:
+    update_cache: true
+    install_recommends: false
+    name:
+      - jitsi-meet
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Apply Jitsi configuration
+  lineinfile:
+    path: "/etc/jitsi/meet/{{ jitsi.hostname }}-config.js"
+    regexp: "{{ item }}"
+    line: "    {{ item }}: true,"
+  loop: "{{ jitsi.configuration }}"
+
+- name: Indicate role in motd
+  template:
+    src: update-motd.d/05-service.j2
+    dest: /etc/update-motd.d/05-jitsi
+    mode: 0755
diff --git a/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2 b/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2
new file mode 100644
index 0000000000000000000000000000000000000000..4d0cc941d4dc48731b57700aa5695d32fe8d4f6e
--- /dev/null
+++ b/roles/jitsi/templates/apt/sources.list.d/jitsi.list.j2
@@ -0,0 +1,3 @@
+{{ ansible_header | comment }}
+
+deb https://download.jitsi.org stable/
diff --git a/roles/jitsi/templates/update-motd.d/05-service.j2 b/roles/jitsi/templates/update-motd.d/05-service.j2
new file mode 100755
index 0000000000000000000000000000000000000000..d1f742950e2f2507b421cd5e7f7ee4669ec0aefc
--- /dev/null
+++ b/roles/jitsi/templates/update-motd.d/05-service.j2
@@ -0,0 +1,3 @@
+#!/usr/bin/tail +14
+{{ ansible_header | comment }}
+> Jitsi a été déployé sur cette machine. Voir /etc/jitsi/.