WZ-IT Logo

Jitsi Meet in eigene Anwendungen integrieren – mit Code-Beispielen

Timo Wevelsiep
Timo Wevelsiep
#JitsiMeet #WebRTC #VideoIntegration #iFrameAPI #LibJitsiMeet #OpenSource #SelfHosted #DSGVO #JWT #SecureDomain

Jitsi Meet ist ein freies, WebRTC-basiertes Videokonferenzsystem unter Apache-2.0-Lizenz. Es läuft vollständig im Browser und kann self-hosted betrieben werden. Durch die modulare Architektur aus Jitsi Videobridge (SFU), Jicofo, Prosody, Jibri und Jigasi eignet es sich hervorragend für Integrationen, Rebranding und Automatisierung. Infos: Jitsi Meet, Architektur.

Warum Einbettung für Unternehmen sinnvoll ist

  • DSGVO & Datenhoheit: Betrieb in eigener oder europäischer Infrastruktur.
  • Browser-basiert: Hohe Kompatibilität ohne Client-Installation.
  • APIs & SDKs: Vom schnellen iFrame-Embed bis zur Low-Level-Steuerung über lib-jitsi-meet.
  • Skalierbar: Horizontal über zusätzliche Videobridges.

Inhaltsverzeichnis


2) Integrationswege im Überblick

Integration Zweck Quelle
iFrame/External API (JavaScript) Schnellster Weg für Web-Embedding und Meeting-Steuerung in der App iFrame API
lib-jitsi-meet (Low-Level JS API) Eigene UI bauen, Medien & Signalisierung direkt steuern lib-jitsi-meet, Repo
Mobile SDKs (Android/iOS) Native Integration in mobile Apps inkl. Feature-Flags Android SDK Guide, SDK-Samples
JWT & Secure Domain Zutrittskontrolle und Rechte über Tokens bzw. Prosody-Accounts Secure Domain, Token Auth
Colibri-REST (Videobridge) Betreiber-Schnittstelle für Monitoring/Control auf Bridge-Ebene JVB REST
Self-Hosting-Guides Schnellstart für Debian/Ubuntu oder Docker Quickstart, Docker Guide

3) iFrame/External API: schnelles Web-Embedding mit Events und Commands

Minimal-Beispiel:

<div id="meet"></div>
<script src="https://meet.jit.si/external_api.js"></script>
<script>
  const domain = "meet.jit.si"; // oder eigene Instanz: "meet.example.com"
  const options = {
    roomName: "DemoRoom123",
    width: "100%",
    height: 700,
    parentNode: document.querySelector('#meet')
  };
  const api = new JitsiMeetExternalAPI(domain, options);
</script>

Quelle: iFrame API – Getting started.

Events & Commands:

// Teilnehmer-Events
api.addEventListener('participantJoined', e => console.log('joined', e));
api.addEventListener('participantLeft', e => console.log('left', e));

// Meeting steuern
api.executeCommand('toggleAudio');
api.executeCommand('toggleVideo');

// Moderation (mit passenden Rechten)
api.executeCommand('kickParticipant', 'PARTICIPANT_ID'); // ID aus Events entnehmen

Referenz: Events und Commands.

Erweiterte Funktionen:

// Breakout-Raum anlegen
api.executeCommand('addBreakoutRoom', 'Workshop');

// Teilnehmer in Breakout-Raum verschieben
api.executeCommand('sendParticipantToRoom', {
  participantId: 'abcd1234',
  roomName: 'Workshop'
});

// Hand heben / senken
api.executeCommand('toggleRaiseHand');

// Tile-View toggeln
api.executeCommand('toggleTileView');

// Aufzeichnung starten/stoppen (erfordert Jibri)
api.executeCommand('startRecording', { mode: 'file' });
api.executeCommand('stopRecording', 'file');

4) lib-jitsi-meet: Low-Level-API für eine eigene Web-UI

Mit lib-jitsi-meet steuerst du Verbindung, Räume und Medien direkt. Ideal, wenn du eine eigene UI entwickeln möchtest.

<script src="https://meet.jit.si/libs/lib-jitsi-meet.min.js"></script>
<script>
  // 1) Init
  JitsiMeetJS.init();

  // 2) Verbindung
  const options = {
    hosts: {
      domain: 'meet.example.com',
      muc: 'conference.meet.example.com'
    },
    serviceUrl: 'wss://meet.example.com/xmpp-websocket'
  };
  const connection = new JitsiMeetJS.JitsiConnection(null, null, options);

  // 3) Events
  connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_ESTABLISHED, onConnected);
  connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_FAILED, console.error);
  connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_DISCONNECTED, console.warn);

  connection.connect();

  function onConnected() {
    // 4) Conference + Events
    const confOpts = { openBridgeChannel: true };
    const room = connection.initJitsiConference('myRoom', confOpts);
    room.on(JitsiMeetJS.events.conference.CONFERENCE_JOINED, () => console.log('joined'));
    room.on(JitsiMeetJS.events.conference.TRACK_ADDED, track => {
      const el = track.getOriginalElement?.() || track.attach(document.createElement(track.getType()));
      document.body.append(el);
    });

    // 5) Lokale Tracks hinzufügen
    JitsiMeetJS.createLocalTracks({ devices: ['audio', 'video'] })
      .then(tracks => {
        tracks.forEach(t => room.addTrack(t));
        room.join();
      });
  }
</script>

Doku: lib-jitsi-meet API, Repo.


5) Mobile Integration: Jitsi SDK für Android und iOS

Android-Beispiel:

JitsiMeetConferenceOptions defaultOptions = new JitsiMeetConferenceOptions.Builder()
    .setServerURL(new URL("https://meet.example.com"))
    .setFeatureFlag("welcomepage.enabled", false)
    .build();
JitsiMeet.setDefaultConferenceOptions(defaultOptions);

JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
    .setRoom("MobileMeeting")
    .build();
JitsiMeetActivity.launch(this, options);

Quellen: Android SDK Guide, SDK-Samples. Für iOS siehe die Samples im Repo.


6) Zugriff und Authentifizierung: Secure Domain und JWT

Secure Domain: Nur authentifizierte Nutzer dürfen neue Räume erstellen; Gäste können danach beitreten. Guide: Secure Domain

Token-Authentifizierung (JWT): Zutritt mit signiertem Token – ideal zur Integration mit eigenen Backends/Portalen. Guide: Token Authentication

Beispiel-Payload:

{
  "context": {
    "user": {
      "avatar": "https://example.com/avatar.png",
      "name": "Max Mustermann",
      "email": "[email protected]"
    },
    "features": {
      "recording": true,
      "livestreaming": false,
      "screen-sharing": true
    }
  },
  "aud": "jitsi",
  "iss": "wz-it.com",
  "sub": "meet.example.com",
  "room": "TeamMeeting2025",
  "exp": 1735753200
}

Token-Erzeugung (Node.js):

import jwt from "jsonwebtoken";

const payload = {
  context: { user: { name: "Max Mustermann" } },
  aud: "jitsi",
  iss: "wz-it.com",
  sub: "meet.example.com",
  room: "TeamMeeting2025",
  exp: Math.floor(Date.now() / 1000) + 60 * 60
};
const token = jwt.sign(payload, process.env.JITSI_APP_SECRET);
console.log("JWT:", token);

Prosody-Setup (vereinfacht):

VirtualHost "meet.example.com"
    authentication = "token"
    app_id = "wz-it.com"
    app_secret = "YOUR_APP_SECRET"

7) Monitoring und Betrieb: Colibri-REST (Bridge-Ebene)

Die Jitsi Videobridge stellt eine REST-Schnittstelle (Colibri/Colibri2) bereit – für Monitoring, Konferenz-Allokation und Health/Stats; nicht für Endnutzer-Aktionen wie „Kick".

Stats abrufen:

# Standard (lokal): JVB_COLIBRI_PORT=8080
curl -s http://127.0.0.1:8080/colibri/stats

Beispielantwort:

{
  "conferences": 4,
  "participants": 52,
  "bit_rate_download": 2400000,
  "bit_rate_upload": 2700000
}

Quellen: Colibri REST, Docker Guide.

Teilnehmeraktionen wie kick erfolgen über die iFrame-API (Client) oder XMPP-Moderation, nicht per REST. Referenz: iFrame Commands.


8) Self-Hosting, DSGVO und Betrieb

  • Quickstart: Debian/Ubuntu, Docker.
  • Security/Privacy: Jitsi Security.
  • DSGVO: Betrieb in deutschen/europäischen Rechenzentren möglich; Log-, Backup- und Zugriffssteuerung bleiben vollständig in Unternehmenshand.

9) Fazit

Mit iFrame/External API bindest du Jitsi Meet in Minuten ins Web ein. Mit lib-jitsi-meet baust du eine eigene Web-UI mit voller Kontrolle über Medien & Signalisierung. Mit den Mobile-SDKs integrierst du Konferenzen nativ in Android/iOS. Secure Domain/JWT regeln den Zugang, Colibri-REST liefert Betriebsmetriken.

Alles Open Source, self-hosted und DSGVO-konform – ideal für Unternehmen, die Souveränität und Anpassbarkeit brauchen.

WZ-IT unterstützt bei Konzeption, Hosting, SSO, Branding, UI-Entwicklung, Skalierung, Monitoring und Support. WZ-IT Jitsi Meet Service


Kostenloses Beratungsgespräch vereinbaren

Sie möchten Jitsi Meet in Ihre Anwendung integrieren? Wir beraten Sie gerne zu:

  • Technischer Machbarkeit & Architektur
  • Hosting-Optionen & Skalierung
  • SSO-Integration & Sicherheit
  • Individuelle Anpassungen & Branding

Jetzt kostenlosen Beratungstermin buchen →


Lassen Sie uns über Ihr Projekt sprechen

Ob konkrete IT-Herausforderung oder einfach eine Idee – wir freuen uns auf den Austausch. In einem kurzen Gespräch prüfen wir gemeinsam, ob und wie Ihr Projekt zu WZ-IT passt.

Vertraut von führenden Unternehmen

NextGymParitelEVADXBRekorderARGEKeymateAphyNegosh

Um das Formular abzusenden, brauchen wir ihr Einverständnis, um das Captcha anzuzeigen.

Mit dem Klicken auf den Button akzeptieren Sie unsere Datenschutzbestimmungen und die Cookie-Richtlinie von Cloudflare.