Jitsi Meet Server - dl0dx/clubstation GitHub Wiki

Jitsi-Meet Server mit NixOS

Clubtreffen als Videokonferenz

Wegen der Corona-Pandemie können zur Zeit (d.h. seit 2020-03-22) keine Clubtreffen in der Clubstation von R01 stattfinden. Als Ersatz wird deshalb zur gewohnten Zeit eine Videokonferenz mit Jitsi durchgeführt. Jitsi ist eine freie Videokonferenzsoftware, die direkt per Webbrowser genutzt werden kann. Auf meet.jit.si kann man Jitis ohne Anmeldung direkt ausprobieren und ein erster Test mit diesem Server verlief sehr erfolgreich.

Ein eigener Jitsi-Server

Aus technischem Interesse wurde für das zweite Online-Clubtreffen testweise ein eigener Jitsi-Meet Server aufgesetzt. Vorteile eines eigenen Servers:

  • Keine Abhängigkeit von einem Gastzugang auf einem fremden Server.

  • Bessere Datenschutz.

  • Zusätzliche Features (z.B. Passwort geschützte Videokonferenzen).

  • Zugriff auf die Technik.

NixOS

NixOS ist ein Betriebssystem auf Linux-Basis mit vielen interessanten Features. NixOS hiflt dabei, ein Linux-System reproduzierbar zu konfigurieren und zu installieren.

Infrastruktur

Der Jitsi-Server wurde mit AWS aufgesetzt. Die folgende Beschreibung konzentriert sich auf die Konfiguration des eigentlichen Servers mit NixOS und ist nicht AWS spezifisch.

Folgendes wird vorausgesetzt:

  • Der Server ist im Internet über eine öffentliche IP Adresse erreichbar. Bei AWS muss man außerdem die entsprechenden Ports für Jitsi in der (AWS)-Firewall öffnen.

  • Der Server hat einen DNS-Eintrag.

  • Auf dem Server ist NixOS-20.09 vorinstalliert. Bei AWS kann man z.B. ami-01d4a0c2248cbfe38 verwenden.

  • Ein Server mit 4GB RAM und ca. 10GB Festplatte und schneller Internetanbindung sollte genügen.

Achtung: Bei Amazon kostet 1GB ausgehende Daten ca 9 Cent. Zwei Stunden Videokonferenz mit ca 10 Teilnehmern erzeugen ca. 50GB Datenvolumen (4,50 Euro). Zum Testen wurde Jitsi-Meet ohne Zugangskontrolle oder Passwort betrieben. Man sollte den Server in dieser Konfiguration nicht "unbeaufsichtigt" laufen lassen ! Es können erhebliche Kosten entstehen.

Installation des Jitsi-Meet Servers

Nachdem man einen entsprechenden Server (z.B. bei AWS) provisioniert hat, sind nur zwei Schritte erforderlich um Jitsi-Meet zu installieren:

  1. Die Konfigurationsdatei anpassen.

  2. Die Konfiguration bauen, starten und installieren.

1) Konfigurationsdatei anpassen

In /etc/nixos/configuration.nix wird der komplette Server mit allen Diensten und der gesamten installierten Software konfiguriert. Für AWS kann /etc/nixos/configuration.nix z.B. so aussehen:

[root@ip-172-31-63-288:~]# cat /etc/nixos/configuration.nix
{ modulesPath, ... }: {
  # AWS spezifischer Teil
  imports = [ "${modulesPath}/virtualisation/amazon-image.nix" ];
  ec2.hvm = true;

  # Allgemeiner Teil (nicht AWS spezifisch)

  services.jitsi-meet = {
    enable = true;
    config = {
        enableWelcomePage = true;
        defaultLang = "de";
        noticeMessage = "Mein online meeting";
        gatherStats = false;
        disableThirdPartyRequests = true;
        localRecording.enabled = false;
    };
    hostName = "meinhostname.meinedomain.de";
  };
  services.jitsi-videobridge = {
    enable = true;
    openFirewall = true;
  };

  networking = {
    firewall.enable = true;
    firewall.allowPing = true;
    firewall.allowedTCPPorts = [ 80 443];
  };

  security.acme.email = "[email protected]";
  security.acme.acceptTerms = true;
}

Je nachdem welche Dienste konfiguriert werden, kann die Konfiguration beliebig umfangreich werden. /etc/nixos/configuration.nix kann auch weitere Unterkonfigurationen importieren. Für AWS wird zum Beispiel <nixpkgs/nixos/modules/virtualisation/amazon-image.nix> importiert, andere Setups importieren /etc/nixos/hardware-configuration.nix

Falls z.B. ein Server von Hetzner oder ein lokaler Server verwendet werden soll, muss die existierende Konfiguration in /etc/nixos/configuration.nix angepasst werden. Das heißt, die Einträge für services.jitsi-meet und security.acme hinzufügen und die anderen Teile der Konfigurationsdatei erhalten.

TODO: Konkrete Hetzner-Config hinzufügen

2) Konfiguration installieren

Man installiert die Konfiguration mit:

[root@ip-172-31-63-288:~]# nixos-rebuild test
[root@ip-172-31-63-288:~]# nixos-rebuild switch

Dieser Schritt dauert beim ersten Aufruf einige Minuten.

Weitere Optionen sind:

  • nixos-rebuild build : Baue die Konfiguration

  • nixos-rebuild test : Baue die Konfiguration und starte alle Services

  • nixos-rebuild switch : Baue die Konfiguration, starte Services und trage die Konfiguration als default im Bootloader ein.

NixOS Spezialitäten

  • NixOS speichert alle Pakete und Konfiguration unter /nix/store. In einem Dateisystem können gleichzeitig beliebig viele verschieden Version von NixOS installiert sein.

  • Verschiedene Versionen von NixOS, die in /nix/store installiert sind, sind (fast) komplett unabhängig voneinander. Identische Pakete belegen nur einmal Speicherplatz.

  • nixos-rebuild switch legt eine neue Version des Betriebssystems an. Die alte Version bleibt erhalten und kann jederzeit wieder aktiviert werden.

  • Garbage-Collection: Nachdem man den Jitsi-Meet-Server installiert hat, kann man eine Garbage-Collection durchführen und hat (fast) keine Spuren mehr vom der NixOS Version, die auf dem Festplattenimage vorinstalliert war.

Garbage-Collection

  1. Installierte System-Versionen anzeigen: ls -al /nix/var/nix/profiles

  2. Die Referenz auf die system-1-link löschen: rm /nix/var/nix/profiles/system-1-link (Das aktuelle System /nix/var/nix/profiles/system darf nicht gelöscht werden).

  3. Garbage löschen: nix-collect-garbage -d

Installations-Zeit: 10 Minuten

Vom ersten Login bis zur fertigen Installation dauert die ganze Prozedur ca. 10 Minuten. In der Zeit werden die NixOS Pakete aus dem Netz geladen. Es gibt aber einen Haken an der Sache:

Compilieren vs Binary Cache

NixOS beruht darauf sämtliche Pakete reproduzierbar aus den Quellcodes zu compilieren. Da compilieren aber in der Praxis sehr zeitaufwendig ist, wird normalerweise ein Binary Cache benutzt (oder mehrere). Wenn ein Paket mit einer bestimmten Konfiguration und mit bestimmten Abhängigkeiten schon im Binary Cache als vorcompiliertes Paket vorhanden ist, wird es einfach runter geladen. Der voreingestellte Binary Cache enthält die Pakete der Haupt-Releases. Wenn man allerdings andere Versionen benutzt, kann es durchaus sein, dass Pakete erst compiliert werden müssen. (Wenn man selbst Pakete entwickelt - natürlich auch).

TL;DR

Vom ersten Login bis zur fertigen Installation sind nur 4 Schritte nötig.

  • Die Konfigurationsdatei von oben runterladen.

  • Hostname und EMail-Adresse anpassen.

  • Dann Konfiguration nach /etc/nixos/configuration.nix kopieren.

  • Danach: nixos-rebuild switch

⚠️ **GitHub.com Fallback** ⚠️