cimnine.jitsi_meet
jitsi_meet
Eine Ansible-Rolle zur Installation von Jitsi Meet.
Einführung
Dies ist eine Ansible Rolle, die Jitsi Meet mit nginx als TLS-terminierendem Proxy und (optional) einem Let's Encrypt-Zertifikat (über certbot) auf Ubuntu Bionic (18.04) installiert.
Anforderungen
- Eine Domain muss auf Ihren Server zeigen, um Let's Encrypt nutzen zu können.
- Ihre Firewall muss die Ports 80/tcp, 443/tcp, 4443/tcp und 10000/udp zulassen.
- Wenn Ihr Server hinter einem NAT steht, müssen Sie diese Ports weiterleiten.
Rolleneinstellungen
apt_mirror
: Unter Ubuntu muss universe aktiviert sein. Diese Variable gibt Ihr Systemspiegel an. Standardmäßig aufhttp://archive.ubuntu.com/ubuntu
eingestellt.jitsi_domain
: Unter welcher Domain Jitsi erreichbar sein wird. Muss ein Domainname sein, wenn Sie Let's Encrypt verwenden möchten. Andernfalls kann es eine IP sein. Standardmäßig auf{{ inventory_hostname }}
eingestellt.certbot_enabled
: Ob certbot installiert und ein Zertifikat für{{ jitsi_domain }}
angefordert werden soll. Standardmäßig auffalse
eingestellt.certbot_admin_email
: Welche E-Mail-Adresse für Let's Encrypt registriert werden soll. Erforderlich, wenncertbot_enabled=true
. Die E-Mail sollte existieren. Kein Standardwert.jitsi_nat
: Ob Sie Jitsi Meet hinter einem NAT betreiben. Standardmäßig auffalse
eingestellt. Wenn aktiviert, müssenjitsi_nat_local_ip
undjitsi_nat_public_ip
gesetzt werden.jitsi_nat_public_ip
: Die öffentliche IP Ihres Jitsi Meet-Hosts. Standardmäßig auf die von ipify gemeldete IPv4 eingestellt.jitsi_nat_private_ip
: Die private IP Ihres Jitsi Meet-Hosts. Standardmäßig auf die IPv4, die Ansible als Standard für den Host betrachtet, eingestellt.nginx_server_names_hash_bucket_size
: Dieserver_names_hash_bucket_size
von nginx. Wird in der globalennginx.conf
deklariert, wennnginx_modify_server_names_hash_bucket_size
auftrue
gesetzt ist. Standardmäßig auf64
eingestellt.nginx_modify_server_names_hash_bucket_size
: Ob der Wert vonserver_names_hash_bucket_size
in der globalennginx.conf
-Datei geändert werden soll. Standardmäßig auftrue
eingestellt.
Schauen Sie sich auch geerlingguy/ansible-role-certbot/.../defaults/main.yml für weitere Konfigurationseinstellungen an, die mit certbot zusammenhängen.
Abhängigkeiten
Hängt von der geerlingguy.certbot
Ansible-Rolle für die Let's Encrypt / certbot Aufgaben ab:
ansible-galaxy install geerlingguy.certbot
Schnellstart
# unter macOS mit Homebrew
brew install ansible
# unter Debian
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
# oder über Python / pip
sudo python3 -m pip install ansible
Richten Sie einen neuen Server mit Ubuntu 18.04 ein oder holen Sie sich einen auf Digital Ocean, Vultr, Hetzner Cloud, Cloudscale, Azure, Google Cloud, AWS, ...
Stellen Sie sicher, dass Sie sich über Ihren SSH-Schlüssel anmelden können:
ssh-copy-id [email protected]
ssh [email protected]
Erstellen Sie eine Inventar-Datei:
# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # auf `no` setzen, wenn Sie sich über root anmelden
apt_mirror=http://archive.ubuntu.com/ubuntu # ändern Sie auf den Spiegel, den Sie bereits verwenden
certbot_enabled=yes
jitsi_nat=no # aktivieren, wenn Ihr Server hinter einem NAT steht.
Erstellen Sie eine Playbook-Datei:
# jitsi.yml
- hosts: jitsi
roles:
- cimnine.jitsi_meet
Installieren Sie die erforderlichen Abhängigkeiten:
ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot
Führen Sie die Playbook-Datei im Inventar aus:
# wenn `sudo` auf Ihrem Server kein Passwort erfordert:
ansible-playbook -i jitsi.ini jitsi.yml
# oder wenn `sudo` auf Ihrem Server ein Passwort erfordert:
ansible-playbook -K -i jitsi.ini jitsi.yml
Konfiguration
Jitsi Meet kann über diese Ansible-Rolle konfiguriert werden. Dazu wird die Datei /etc/jitsi/meet/{{ jitsi_domain }}-config.js
aus dem upstream-Paket durch eine von dieser Rolle verwaltete Datei ersetzt.
Um dieses Verhalten zu aktivieren, definieren Sie die Variable: managed_jitsi_config
und setzen Sie sie auf yes
.
Fügen Sie also die letzte Zeile des folgenden Beispiels zu Ihrer jitsi.ini
hinzu:
# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # ändern Sie auf den Spiegel, den Sie bereits verwenden
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes # verwalten Sie Ihre Jitsi-Konfiguration über diese Rolle
Dann setzen Sie alle erforderlichen Konfigurationsvariablen. Die Standards finden Sie in der Datei defaults/main.yml
der Rolle. Alle Variablen müssen angegeben werden, nicht nur die, die Sie überschreiben möchten! Achten Sie auf leere Variablen wie analytics: {}
: Aufgrund der Funktionsweise von Jitsi muss dies ein leeres Objekt sein und darf nicht null sein.
Alle Einstellungen, deren Werte, Verwendung und Wirkung sind in jitsi-meet config.js dokumentiert.
Ein minimales Beispiel ist:
jitsi_config:
hosts:
domain: "{{ jitsi_domain }}"
muc: "conference.{{ jitsi_domain }}"
bosh: "//{{ jitsi_domain }}/http-bind"
clientNode: "http://jitsi.org/jitsimeet"
testing:
enableFirefoxMulticast: false
p2pTestMode: false
desktopSharingChromeExtId: null
desktopSharingChromeSources: [ 'screen', 'window', 'tab' ]
desktopSharingChromeMinExtVersion: '0.1'
channelLastN: -1
enableWelcomePage: true
enableUserRolesBasedOnToken: false
p2p:
enabled: true
stunServers:
- urls: 'stun:stun.l.google.com:19302'
- urls: 'stun:stun1.l.google.com:19302'
- urls: 'stun:stun2.l.google.com:19302'
preferH264: true
analytics: {}
deploymentInfo: {}
localRecording: {}
e2eping: {}
deploymentUrls: {}
HINWEIS:
Die Anforderungen an config.js
können sich jederzeit ändern, wenn Jitsi Meet aktualisiert wird, da die upstream-Entwickler dazu nicht sehr kommunikativ sind. Überprüfen Sie die CHANGELOG und Ankündigungen des Jitsi Meet-Projekts auf neu benötigte Werte, bevor Sie aktualisieren.
HINWEIS:
Die Struktur ist groß-/kleinschreibungsempfindlich und folgt den genauen Variablenangaben in config.js
. Achten Sie also darauf, dass webrctIceUdpDisable
sehr unterschiedlich zu WebRTCIceUDPDisable
ist. Jitsi ist inkonsistent bei der Benennung von Variablen (z. B. mischt es zufällig URL
und Url
), daher sollten Sie auf den genauen Namen achten.
Deinstallation
Die folgenden Befehle helfen Ihnen, die Installation zu entfernen. Sie entfernen möglicherweise nicht vollständig jede Datei, aber es reicht aus, um neu zu beginnen, falls Sie etwas durcheinandergebracht haben.
systemctl stop jitsi-videobridge
systemctl disable jitsi-videobridge
apt-get purge -y jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge
systemctl stop nginx
systemctl disable nginx
apt-get purge -y nginx nginx-common nginx-full
apt purge certbot
rm -rf /etc/jitsi /etc/nginx /etc/letsencrypt
crontab -e -u root
reboot
Lizenz
MIT
Install jitsi-meet with nginx and (optionally) certbot
ansible-galaxy install cimnine.jitsi_meet