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 auf http://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 auf false eingestellt.
  • certbot_admin_email: Welche E-Mail-Adresse für Let's Encrypt registriert werden soll. Erforderlich, wenn certbot_enabled=true. Die E-Mail sollte existieren. Kein Standardwert.
  • jitsi_nat: Ob Sie Jitsi Meet hinter einem NAT betreiben. Standardmäßig auf false eingestellt. Wenn aktiviert, müssen jitsi_nat_local_ip und jitsi_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: Die server_names_hash_bucket_size von nginx. Wird in der globalen nginx.conf deklariert, wenn nginx_modify_server_names_hash_bucket_size auf true gesetzt ist. Standardmäßig auf 64 eingestellt.
  • nginx_modify_server_names_hash_bucket_size: Ob der Wert von server_names_hash_bucket_size in der globalen nginx.conf-Datei geändert werden soll. Standardmäßig auf true 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

Installieren Sie Ansible:

# 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

Über das Projekt

Install jitsi-meet with nginx and (optionally) certbot

Installieren
ansible-galaxy install cimnine.jitsi_meet
GitHub Repository
Lizenz
mit
Downloads
651
Besitzer
Called myself «serious software architect» as a joke, then ended up sticking to that.