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

Hinweis zum Inhalt: Die Informationen in diesem Artikel wurden nach bestem Wissen zum Zeitpunkt der Veröffentlichung zusammengestellt. Technische Details, Preise, Versionen, Lizenzmodelle und externe Inhalte können sich ändern. Bitte prüfen Sie die genannten Angaben eigenständig, insbesondere vor geschäftskritischen oder sicherheitsrelevanten Entscheidungen. Dieser Artikel ersetzt keine individuelle Fach-, Rechts- oder Steuerberatung.

Jitsi Meet in eigene Anwendungen integrieren – mit Code-Beispielen

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 →


Timo Wevelsiep

Geschrieben von

Timo Wevelsiep

Co-Founder & CEO

Co-Founder von WZ-IT. Spezialisiert auf Cloud-Infrastruktur, Open-Source-Plattformen und Managed Services für KMUs und Enterprise-Kunden weltweit.

LinkedIn

Lassen Sie uns über Ihre Idee 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.

E-Mail
[email protected]

Führende Unternehmen vertrauen WZ-IT

  • Rekorder
  • Keymate
  • Führerscheinmacher
  • SolidProof
  • ARGE
  • Boese VA
  • NextGym
  • Maho Management
  • Golem.de
  • Millenium
  • Paritel
  • Yonju
  • EVADXB
  • Mr. Clipart
  • Aphy
  • Negosh
  • ABCO Water
Timo Wevelsiep & Robin Zins - CEOs of WZ-IT

Timo Wevelsiep & Robin Zins

Geschäftsführer

1/3 – Themenauswahl33%

Worum geht es bei Ihrer Anfrage?

Wählen Sie einen oder mehrere Bereiche, bei denen wir Sie unterstützen dürfen.