Rechtstreekse link: https://parley.atticstudios.be

Gebaseerd op: Jitsi Meet – https://jitsi.org


Omschrijving

Parleley, parlelellyleloooo, par le nee, par…snip, parsley, parno, parley. Parley, that’s the one. Parley. Parley!

Jack Sparrow

Jitsi Meet is een Open Source video conferentie platform. Het is wel zeer open platform waarop standaard iedereen een meeting kan starten en iedereen naar believen uitnodigen. Het enige wat je nodig hebt is een browser of een app voor Android of iOS mobiele toestellen. Dit is niet het eenvoudigste project dat ik al tegen gekomen ben, maar het loopt best lekker 'out of the box'. Als je het self-hosting deel liever overslaat, zij bieden zelfs een publieke service aan op https://jitsi.org. Dat is natuurlijk prachtig, maar ik vind dat iedereen die kan, dit zelf zou moeten hosten, zodat de servers van Jitsi,org zo veel mogelijk beschikbaar blijven voor zij die dat niet kunnen.

Gebruik

Attic Parley heeft één hoofddoel: eenvoud!
Wanneer je met iemand wil praten, zouden er zo weinig mogelijk vereisten moeten zijn om die andere persoon op je favoriete toestel te doen verschijnen.
Wanneer je met een hele hoop andere mensen wil praten, zou dat niet veel moeilijker mogen zijn...

Ik denk dat Attic Parley dat behoorlijk voor elkaar heeft.

Om een gesprek te starten, surf je naar https://parley.atticstudios.be of open je de app op een Android of iOS toestel, vul een tital in voor het gesprek en klik op 'GO':

Deze titel moet één woord zijn, je kan HoofdlettersGebruikenOmHetLeesbaarTeMaken, in het gesprek zal de titel getoond worden met spaties.

Menu

Waarschijnlijk het eerste dat je best doet, is je naam veranderen! Je enkele gegevens invullen en geluid en video toestellen selecteren door op de drie puntjes te klikken rechts onderaan en 'Me' te kiezen.
Als het gepsrek hebt aangemaakt, zijn er ook enkele moderator instellingen.

Je kan je audio en video in- en uitschakelen op het hoofdscherm.

Je kan anderen uitnodigen door hen een link te sturen. Die link is altijd https://parley.atticstudios.be/DeNaamdieJeVoorJeGesprekKoos. Om het gesprek in het voorbeeld te openen, zou dat volgende link zijn:

“https://parley.atticstudios.be/AtticParleyMeetingRoom”

Als je de link op een mobiel toestel opent, toont die een webpagina om de link te openen in de app, of de app te installeren als dat nodig is.

Wanneer andere aanmelden in het gesprek, verschijnen ze beeld-in-beeld. Standaard wordt degene die aan het woord is op het volledige scherm getoond. Je kan dat veranderen in een overzicht van alle deelnemers met de knop rechts onderaan.

Er zijn nog een massa andere opties en mogelijkheden, maar dit zou al voldoende moeten zijn om te beginnen chatten. Zoek gerust verder uit en laat het me weten wat je nuttig vindt! Hou in gedachten dat enkele zaken nog eerder experimenteel zijn, zoals de virtuele achtergrond en het scherm delen (momenteel enkel Chromium, als ik me niet vergis).

Installatie

Voor de originele parley.langers.be server heb ik de volledige manuele installatiegedaan. Super leer-ervaring, maar tenzij je de verschillende onderdelen op verschillende servers wil hosten, zou ik het niet aanbevelen.
Voor Attic Parley gebruikte ik de quick-install guide op een vers geinstalleerde Devian 10.4 vm. Dat werkte behoorlijk naadloos mits enkele extra vereisten (sudo, curl, ...).

Voor de installatie van de host:

sudo apt install -y curl gnupg2 apt-transport-https
sudo apt-add-repository universe
sudo apt update
 
sudo nano /etc/hosts
    # Add hostname to localhost line
    127.0.0.1       localhost       parley.atticstudios.be
 
# Add the Jitsi package repository
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
 
# update all package sources + install
sudo apt update
sudo apt install jitsi-meet
 
# Update config
sudo nano /etc/jitsi/videobridge/sip-communicator.properties
    # Comment and add
    #org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
    org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.2.3.20
    org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=81.82.198.97
    # I changed the default UDP port to 11000 because I need 10000 for another service
    org.jitsi.videobridge.SINGLE_PORT_HARVESTER_PORT=11000
 
sudo nano /etc/systemd/system.conf
    # make sure you have the following values if values are smaller, if not do not update.
    DefaultLimitNOFILE=65000
    DefaultLimitNPROC=65000
    DefaultTasksMax=65000
 
sudo systemctl daemon-reload
sudo systemctl restart jitsi-videobridge2.service

Als je de zaken niet noodzakelijk moeilijker wil maken dan nodig, ben je hier eigenlijk klaar! Poorten 80, 443, 4443 TCP en poort 11000 UDP nog forwarden naar je server en de gekozen domeinnaam naar je router verwijzen en je bent vertrokken! Maar... je zal waarschuwingen krijgen in verband met certificaten en je zal enkel met een browser kunnen werken omdat de mobiele apps een vertrouwd certificaat nodig hebben. De standaard installatie gebruikt een self-signed certificaat. Om dit effectief te kunnen gebruiken, zal je een geldig certificaat nodig hebben voor jouw Jitsi Meet domeinnaam.

Er is een gids beschikbaar om Let's Encrypt certificaten te gebruiken om de webservices te beveiligen, maar omdat ik alles achter één publiek IP adres probeer te hosten, komt poort 443 op een centrale reverse proxy binnen. Dit heb ik nooit aan de praat gekregen voor parley.langers.be, dit was één van de weinige waarvoor ik een ander publiek IP adres gebruikte.
Documentatie over hoe Jitsi Meet aan de praat te krijgen achter een reverse proxy is ondertussen nog steeds niet beschikbaar en informatie die online te vinden is eerder mager en hoofdzakelijk tegenstrijdig. Ik heb ondertussen wel één en ander bijgeleerd over Nginx, en ben net een reeks van 16 publieke adressen kwijt geraakt, dus ik heb er twijfelend voor gekozen toch nog maar eens opnieuw te proberen. De eerste tests lopen goed, het lijkt me deze keer wel gelukt te zijn!

De truk zit hem in de Nginx reverse proxy server blok. Om alles aan de praat te krijgen, kwam ik uiteindelijk op deze configuratie terecht:

Variabelen: _internalIP_ : privaat IP adres van de Jitse Meet server

server {
    listen 443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/parley.atticstudios.be/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/parley.atticstudios.be/privkey.pem;
 
    server_name parley.atticstudios.be;
 
    root /var/www/html/parley.atticstudios.be;
 
    error_page 401 403 404 /404.html;
 
    location / {
        ssi on;
        proxy_pass https://_internalIP_:4444;     #Weirdness! See below
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }
 
    # Bosch
    location /http-bind {
        proxy_pass http://_internalIP_:5280/http-bind;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }
 
    # xmpp websockets
    location /xmpp-websocket {
        proxy_pass              http://_internalIP_:5280/xmpp-websocket;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection "upgrade";
        proxy_set_header        Host $host;
        tcp_nodelay             on;
    }
}

Een zeer vreemd verschijnsel waar ik meer tijd mee verloren ben dan me lief was: poort 443 wordt geproxied naar poort 4444 op de Jitsi Meet server om de web interface te bereiken. Intern kan ik echter gewoon naar https://_InternalIP_ surfen om de startpagina te zien. Als ik 'proxy_pass' naar poort 443 op _InternalIP_ kom ik op de "Bad Gateway" pagina van de Nginx reverse proxy terecht. De fout die wordt gelogd is

"peer closed connection in SSL handshake while SSL handshaking to upstream"

Mogelijk oorzaken verwijzen voornamelijk naar SNI op de doel-server of geen overeenkomst in SSL protocollen. Geen van beiden lijkt waarschijnlijk, in het eerste geval zou ik ook niet naar https://_internalIP_ kunnen surfen lijkt me en als er geen overeenkomstig protocol op beide servers beschikbaar zou zijn, zouden ze net zo goed niet over poort 4444 kunnen praten... Mijn klomp, gebroken 🤯

Om het nog gekker te maken, in de Nginx configuratie op de Attic Parley server is geen enkele referentie naar poort 443 te vinden. De web interface wordt uitsluitend op poort 4444 gehosted. Ik heb niet verder gezocht naar wat die webpagina dan doet verschijnen op poort 443. Op dit moment ben ik erg blij dat ik die poort 4444 gevonden heb in de Nginx configuratie en Attic Parley online is op hetzelfde IP adres als alle andere diensten.

Ik ga deze afvinken voor het moment, en doorgaan naar een volgende 😁👍

Zoals met alle Open Projecten, gebruik deze gerust naar wens. Feedback, problemen, vragen en suggesties zijn zeer welkom. Als je deze zelf wil hosten, help ik graag als ik kan!