Videoconferencing met Jitsi in de praktijk (2024)

Videoconferencing is een blijvertje, maar willen we daarvoor afhankelijk blijven van big tech? Gelukkig bestaan er ook opensourcealternatieven die je op je Linux-server kunt installeren, zoals Jitsi Meet.

Zoom, Microsoft Teams, Google Meet, Cisco Webex Meetings, tijdens de coronacrisis hebben velen van ons er voor het eerst mee leren werken of er heel wat meer uren in gesleten dan ze van tevoren gewend waren. Videoconferencingsoftware is een blijvertje, maar daarmee is ook de macht van big tech op ons leven weer vergroot. Je data gaan door de servers van een bedrijf dat sowieso al veel over ons weet.

Gelukkig bestaan er ook allerlei alternatieve videoconferencingoplossingen, veel daarvan zijn open source. Een voorbeeld is Jitsi Meet. Je installeert dit op je Linux-server, maakt gebruik van de gratis server https://meet.jit.si, of een van de andere door de community onderhouden servers, of betaalt voor Jitsi-as-a-service zoals die van 8x8. Dit bedrijf heeft het Jitsi-project in 2018 overgenomen en bouwt zijn videoconferencingoplossing 8x8 Meet op basis van Jitsi Meet.

Architectuur

Jitsi Meet is het zichtbare deel van de videoconferencingoplossing. Het is een WebRTC-compatibele JavaScript-toepassing die je toelaat om te videobellen in je webbrowser. WebRTC is een opensourceproject gebaseerd op open standaarden dat JavaScript-api's aanbiedt voor alle grote webbrowsers voor realtime communicatie met video, audio en generieke data.

De centrale component is echter Jitsi Videobridge, ofwel JVB, een WebRTC-compatibele server die de videostreams van deelnemers aan een videoconferentie routeert. Jitsi Conference Focus, ofwel Jicofo, is verantwoordelijk voor het beheer van de mediasessies tussen de deelnemers en JVB. Nadat een nieuwe conferentie is aangemaakt en een deelnemer is binnengekomen, maakt Jicofo een Jingle-sessie tussen JVB en de deelnemer aan. Jingle is een uitbreiding van het Extensible Messaging and Presence Protocol, ofwel XMPP, met peer-to-peersignaling voor multimedia.

Een andere, optionele, component is Jitsi Gateway to SIP, ofwel Jigasi. Deze laat SIP-clients toe om in te bellen en aan een Jitsi Meet-conferentie deel te nemen. Jigasi registreert zichzelf ook als SIP-client bij een SIP-server. Je kunt hiermee ook vanuit een Jitsi Meet-conferentie anderen via SIP opbellen. En Jigasi kan ook live transcriptie van spraak aanbieden via een externe spraak-naar-tekstdienst zoals Google Cloud Speech-to-Text of Vosk Server, een offline systeem voor spraakherkenning dat je op een server kunt installeren. Jitsi Broadcasting Infrastructure, ofwel Jibri, voorziet dan weer, optioneel, in het opnemen of streamen van een Jitsi Meet-conferentie.

Tot slot maakt Jitsi in zijn architectuur ook gebruik van de XMPP-server Prosody. Bij XMPP denk je misschien in eerste instantie aan een chatserver, maar Jitsi gebruikt XMPP als communicatieprotocol tussen zijn verschillende services. Prosody is in een standaardinstallatie van Jitsi niet extern toegankelijk: het wordt alleen gebruikt voor de interne communicatie.

Jitsi Meet ondersteunt end-to-endencryptie. Daarvoor gebruikt het de WebRTC-functie Insertable Streams die Chrome heeft geïmplementeerd, maar Firefox nog niet.

Jitsi heeft een modulaire architectuur. Bron: Jitsi Meet Handbook

Wat heb je nodig?

Om je Jitsi-server op te zetten, heb je een Linux-server nodig die publiek toegankelijk is. Omdat WebRTC alleen over HTTPS werkt, heb je een TLS-certificaat voor je server nodig. Hoewel dat in principe met een zelfondertekend certificaat gaat en ook met een server op een intern netwerk, maakt het dit allemaal wat gecompliceerder. De eenvoudigste optie is dan ook om Jitsi op een virtual private server, ofwel vps, te installeren met een TLS-certificaat voor een domein dat naar het IP-adres van de vps verwijst.

De vereisten voor een professionele Jitsi-installatie zijn niet altijd eenvoudig te berekenen: ze hangen van veel factoren af, waaronder de architectuur. Je kunt meerdere Jitsi-videobridges elk op een eigen server draaien om een Jitsi Meet-server op te schalen. We gaan er hier van uit dat je een Jitsi-server opzet voor een kleine vriendenkring of kleine organisatie.

De belangrijkste vereiste is voldoende netwerkbandbreedte. Volgens de ontwikkelaars moet je bij hd, een resolutie van 720p, per deelnemer op 2,5Mbps rekenen en voor 4k op 10Mbps. Bekijk dus zeker de netwerkbandbreedte die je vps beschikbaar heeft, voordat je daarop een Jitsi-server gaat installeren. Heeft je server 1Gbps netwerkbandbreedte, dan kun je daarmee videoconferenties voor 100 deelnemers in 4k of 400 deelnemers in hd houden.

De ontwikkelaars raden 8GB ram aan, maar voor kleine conferenties zou 4GB en voor heel kleine conferenties zou 2GB mogelijk zijn. Voor de cpu raden ze vier cores aan en voor opslag een harde schijf van 250GB. Een ssd is niet noodzakelijk.

Omdat Jibri aan video encoding doet, zijn de vereisten voor de ram en cpu daarvoor nog hoger. Het is niet aan te raden om Jibri en Jitsi Meet op dezelfde server te draaien, omdat het de prestaties van die laatste negatief beïnvloedt.

Voor dit artikel hebben we een vps geconfigureerd met 4GB ram, twee cores op 80 procent, 160GB ssd-opslag en 1Gbps netwerkbandbreedte. We installeerden daarop Ubuntu Server 22.04 LTS. Op dat verse Ubuntu-systeem installeerden we daarna Jitsi zonder Jigasi en zonder Jibri.

Videoconferencing met Jitsi in de praktijk (2)

Voorbereiding van de installatie

Het Jitsi Meet Handbook biedt installatie-instructies in zijn Self-Hosting Guide voor Debian of Ubuntu, openSUSE, Docker of manuele stappen. Wij kozen voor de installatie op Ubuntu, die ook door de ontwikkelaars aangeraden wordt voor wie snel aan de slag wil met Jitsi.

Als eerste raden we aan om de Universe-repository toe te voegen en je systeem up-to-date te maken:

sudo apt-add-repository universe
sudo apt update
sudo apt upgrade

Je hebt ook nog een aantal pakketten nodig; sommige daarvan zijn wellicht al geïnstalleerd:

sudo apt install apt-transport-https gnupg2 nginx-full wget curl

Repository’s toevoegen

We dienen nu nog twee repository’s toe te voegen. De eerste voor die van Prosody, die een nieuwere versie van de XMPP-server bevat dan die in de repository van Ubuntu:

wget -qO- https://packages.prosody.im/debian/pubkey.asc | sudo tee /etc/apt/keyrings/prosody.asc
echo "deb [signed-by=/etc/apt/keyrings/prosody.asc] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/prosody.list

We voegen hier eerst de publieke sleutel toe die de ontwikkelaars van Prosody gebruiken om de pakketten in hun repository mee te ondertekenen, en daarna verwijzen we in de definitie van de repository naar die sleutel.

Doe nu hetzelfde voor de repository van Jitsi:

wget -qO- https://download.jitsi.org/jitsi-key.gpg.key | sudo tee /etc/apt/keyrings/jitsi.asc
echo 'deb [signed-by=/etc/apt/keyrings/jitsi.asc] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list

Update dan de pakketbronnen weer met sudo apt update. Als alles goed is, zou je nu met apt search jitsi allerlei Jitsi-pakketten moeten zien, en Prosody is beschikbaar in versie 0.12.

Videoconferencing met Jitsi in de praktijk (3)

De installatie en een zelfondertekend certificaat

Stel dan nu de firewall in. Ubuntu gebruikt een uncomplicated firewall, ofwel ufw, maar die is standaard inactief, zoals je ziet in de uitvoer van sudo ufw status. Open dan de poorten die Jitsi Meet nodig heeft, en de poort voor SSH, zodat je nog kunt inloggen:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 10000/udp

TCP-poort 22 is voor SSH en 80 voor HTTP, dat hebben we nodig om een TLS-certificaat bij Let’s Encrypt aan te vragen en te vernieuwen. TCP-poort 443 is voor de webinterface van Jitsi Meet over HTTPS, UDP-poort 3478 is voor communicatie met de STUN-server, TCP-poort 5349 is voor de video en audio als UDP-poort 10000 geblokkeerd is, en over die laatste verloopt normaal alle video en audio.

Activeer dan de firewall en bekijk de status. Die zou nu alle bovenstaande poorten als open moeten tonen, zowel voor IPv4 als IPv6:

sudo ufw enable
sudo ufw status

Videoconferencing met Jitsi in de praktijk (4)

Domein

Je Jitsi Meet-server heeft een domein nodig. We gaan er in de rest van dit artikel van uit dat je het fictieve domein example.com hebt en bij je DNS-registrar het subdomein ontmoet.example.com aanmaakt. Voeg dan voor dat domein een A-record toe dat je naar het publieke IPv4-adres van je vps laat verwijzen, en een AAAA-record dat je naar het publieke IPv6-adres laat verwijzen. Beide IP-adressen vind je in de uitvoer van de opdracht ip a op je server, na inet voor IPv4 en na inet6 voor IPv6, of in de beheerinterface van je vps-provider. Let op: een IPv6-adres dat begint met fe80 is een link-local adres, niet het publieke adres waarop je vps van buitenaf bereikbaar is.

Als alles goed is, kun je je VPS nu bereiken, en er bijvoorbeeld via SSH op inloggen, via de fully qualified domain name, ofwel fqdn, ontmoet.example.com. Nu moet je deze ook als hostname instellen op je vps, want het installatieprogramma van Jitsi gaat die gebruiken voor zijn configuratie. Dat doe je als volgt:

sudo hostnamectl set-hostname ontmoet.example.com

De opdracht hostname moet hierna ontmoet.example.com tonen.

Koppel daarna zowel het IPv4- als het IPv6-adres aan het domein ontmoet.example.com in het bestand /etc/hosts:

echo IPV4ADDRESS ontmoet.example.com | sudo tee -a /etc/hosts
echo IPV6ADDRESS ontmoet.example.com | sudo tee -a /etc/hosts

Vervang in bovenstaande opdrachten IPV4ADDRESS en IPV6ADDRESS door het publieke IPv4- en IPv6-adres van de server.

Installatie

Dan is nu alles klaar om Jitsi Meet op je server te installeren:

sudo apt install jitsi-meet

Vul als om de hostname wordt gevraagd het domein ontmoet.example.com in. Op de vraag om een SSL-certificaat te gebruiken, kies je de optie 'Generate a new self-signed certificate'. We gaan dit na de installatie vervangen door een certificaat van Let’s Encrypt.

Nadat de installatie is voltooid, is Jitsi Meet al bereikbaar, maar dan met het zelfondertekende certificaat, dat een waarschuwing in je webbrowser oplevert. Installeer daarom eerst de ACME-client van Let’s Encrypt:

sudo apt install certbot

Voer dan het script van Jitsi Meet uit:

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Dit vraagt een certificaat bij Let’s Encrypt aan via een HTTP-01-challenge, vernieuwt dit ook regelmatig, en configureert je webserver om dit te gebruiken. Vul je e-mailadres in.

Videoconferencing met Jitsi in de praktijk (5)

De eerste gasten in je vergadering

Gebruik inperken

Als je nu in je webbrowser je domein bezoekt, kun je een vergadering starten. Maar iedereen kan dit nu doen, en iedereen in de hele wereld kan dus met anderen praten en de resources van je server gebruiken. Dat wil je waarschijnlijk niet, dus laten we eerst het gebruik inperken.

Open het bestand /etc/prosody/conf.avail/ontmoet.example.com.cfg.lua en zoek naar de regel VirtualHost "ontmoet.example.com". Daarachter staat de volgende regel:

authentication = "anonymous"

Vervang die door:

authentication = "internal_hashed"

Hierdoor kunnen alleen personen die zich aanmelden met een geldige gebruikersnaam en wachtwoord een vergadering aanmaken of eraan deelnemen.

Die authenticatie moet je ook nog in Jicofo inschakelen. Dat kan door in /etc/jitsi/jicofo/jicofo.conf een nieuwe sectie authentication aan te maken binnen jicofo {:

authentication: {
enabled: true
type: XMPP
login-url: ontmoet.example.com
}

Vul hier uiteraard je eigen domein in.

Na deze configuratie moet je nog een gebruiker aanmaken in Prosody:

sudo prosodyctl register gebruikersnaam ontmoet.example.com wachtwoord

De waarschuwing over Lua 5.1 mag je negeren.

Herstart daarna de processen die instaan voor de authenticatie:

sudo systemctl restart prosody.service jicofo.service jitsi-videobridge2.service

Bij het aanmaken van of deelnemen aan een vergadering moet je nu een gebruikersnaam en wachtwoord invoeren.

Videoconferencing met Jitsi in de praktijk (6)

Gastgebruikers toelaten

Meestal wil je ook dat gasten kunnen deelnemen aan je vergaderingen: je wilt niet dat je voor elke persoon die je ooit wilt spreken een account moet aanmaken. Daarom kun je Jitsi zo configureren dat het gastgebruikers toelaat. Die kunnen geen vergadering aanmaken, maar wel deelnemen aan een aangemaakte vergadering via een URL die ze als uitnodiging krijgen.

Open daarvoor weer het bestand /etc/prosody/conf.avail/ontmoet.example.com.cfg.lua en zoek weer naar de regel VirtualHost "ontmoet.example.com". Voeg nu onder dit blok, dus vóór de regel die begint met Component, het volgende blok toe:

VirtualHost "guest.ontmoet.example.com"
authentication = "anonymous"
c2s_require_encryption = false

De guest.ontmoet.example.com lijkt op een subdomein van je domein ontmoet.example.com dat naar je vps verwijst, maar je hoeft hier geen DNS-record voor aan te maken. Dit wordt alleen intern door Jitsi gebruikt. Je moet natuurlijk wel de ontmoet.example.com vervangen door het juiste domein van je server.

Open nu het bestand /etc/jitsi/meet/ontmoet.example.com-config.js. In het begin zie je dat er enkele hosts gedefinieerd worden. Vervang de volgende regel:

// anonymousdomain: 'guest.example.com',

door:

anonymousdomain: 'guest.ontmoet.example.com',

Je verwijdert dus de commentaartekens (//) en vervangt het domein door hetzelfde virtuele subdomein dat je in de configuratie van Prosody hebt ingesteld voor gastgebruikers.

Herstart daarna Prosody en Jitsi Videobridge:

sudo systemctl restart prosody.service jitsi-videobridge2.service

Aan de slag met Jitsi

Als je nu in je webbrowser surft naar het domein van je Jitsi-server, creëert Jitsi Meet automatisch een willekeurige naam voor een vergadering. Klik daarnaast op 'Vergadering starten'. Je krijgt nu de vraag om je te authenticeren als de host of om te wachten tot de host aanwezig is. Heb je een account, klik dan op 'Ik ben de host', vul je gebruikersnaam en wachtwoord in, en klik op 'Login'.

Als host kun je nu gastgebruikers uitnodigen. Klik daarvoor ofwel op het icoontje 'Deelnemers' (de twee personen) en dan op 'Iemand uitnodigen', ofwel op het icoontje 'Meer acties' (de drie puntjes) en dan op 'Personen uitnodigen'. Je krijgt nu een link naar de vergadering te zien waarmee je anderen kunt uitnodigen. Die bestaat gewoon uit de URL van je Jitsi-server met als pad de willekeurige naam voor je vergadering. Die URL geef je aan de gastgebruikers. Als je als gast een dergelijke URL krijgt, hoef je die slechts in je webbrowser te openen om aan de vergadering deel te nemen.

Extra beveiliging

Standaard biedt dit gedrag relatieve veiligheid. Als je niet zelf een naam voor je vergadering kiest, bestaat die naam uit vier willekeurige woorden en is die dus niet zomaar te raden door anderen. Maar iedereen die de URL weet die je aan de gastgebruikers geeft, kan ook zomaar in de vergadering binnenwandelen.

Daarom kun je het beste naar 'Meer acties / Beveiligingsopties' gaan. Als je daar de lobbymodus inschakelt, komen deelnemers altijd eerst in een lobby terecht. Pas wanneer een moderator, standaard iedereen in de vergadering, de deelnemer toelaat, komt hij in de vergadering. Een andere beveiligingsoptie is een wachtwoord. Daarmee heeft een gastgebruiker niet alleen de URL nodig om deel te nemen aan de vergadering, maar ook het bijbehorende wachtwoord. Ook end-to-endencryptie kun je hier inschakelen.

Videoconferencing met Jitsi in de praktijk (7)

Dagelijks gebruik

In het dagelijks gebruik van Jitsi Meet moet je er rekening mee houden dat iedereen in de vergadering standaard moderator is. Zodra een gastgebruiker in de vergadering aanwezig is, heeft die dus dezelfde rechten als de organisator van de vergadering. Iedereen kan dus de microfoon van andere gebruikers dempen of hun camera uitzetten, of extra personen uitnodigen. Dat is allemaal wel te configureren, maar onvoldoende gedocumenteerd. Een tool als Jitsi Admin kan daarbij helpen, maar is voor kleinere organisaties waarschijnlijk een overkill.

Verder bevat Jitsi Meet alle elementaire functionaliteit die je in een videoconferencingtool verwacht. Je kunt je scherm delen (in onze test op een Ubuntu 20.04-desktop werkte dat nog niet helemaal goed samen met Wayland), chatten, een poll starten en een achtergrond kiezen. Heb je Jibri geïnstalleerd, dan kun je ook een opname of livestream starten. Je kunt de webinterface gebruiken in elke moderne webbrowser of een van de mobiele clients voor Android en iOS.

Er is ook een Electron-app voor de desktop, zowel voor Windows als macOS en Linux. De interface is bijna identiek aan de webinterface. Je vult daar gewoon de volledige URL van je Jitsi-vergadering in, of je vult in de instellingen van het programma je server-URL in, waarna je de naam van de vergadering eenvoudig kunt invullen in het hoofdscherm.

Videoconferencing met Jitsi in de praktijk (8)

Conclusie

Je eigen Jitsi Meet-server opzetten voor videovergaderingen is niet zo moeilijk. Je bent daardoor niet afhankelijk van big tech en behoudt de controle over wat er met je data gebeurt. Heb je geavanceerdere functionaliteit nodig, dan is het wat meer werk en is het niet allemaal zo duidelijk gedocumenteerd. Hulp vind je dan op het forum van het project.

Inhoudsopgave

  • 1. Ontmoet Jitsi Meet
  • 2. Wat heb je nodig?
  • 3. De installatie en een zelfondertekend certificaat
  • 4. De eerste gasten in je vergadering
  • 40Reacties

Multipage-opmaak

Videoconferencing met Jitsi in de praktijk (2024)
Top Articles
Latest Posts
Article information

Author: Lilliana Bartoletti

Last Updated:

Views: 5968

Rating: 4.2 / 5 (73 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Lilliana Bartoletti

Birthday: 1999-11-18

Address: 58866 Tricia Spurs, North Melvinberg, HI 91346-3774

Phone: +50616620367928

Job: Real-Estate Liaison

Hobby: Graffiti, Astronomy, Handball, Magic, Origami, Fashion, Foreign language learning

Introduction: My name is Lilliana Bartoletti, I am a adventurous, pleasant, shiny, beautiful, handsome, zealous, tasty person who loves writing and wants to share my knowledge and understanding with you.