Gepinde Jitsi-testomgeving voor de callproeven (#2540) #2579

Merged
brenno merged 1 commit from feat/callbewijs-01-jitsi-testomgeving into main 2026-10-24 16:10:07 +00:00
Owner

Samenvatting

Voegt testbed/jitsi-meet/ toe: een herhaalbare, volledig lokale Jitsi-deployment als bewijskader voor de komende call-issues (#2533 e.v.). Los van het bestaande kale Prosody-testbed in testbed/docker-jitsi-meet/.

  • Pin: alle vier de services (web, prosody, jicofo, jvb) op stable-11248 via JITSI_IMAGE_VERSION; collect-evidence.sh legt per run de image-digests vast.
  • Loopback-only en hermetisch: alle poorten op 127.0.0.1; geen STUN/TURN, geen AWS-harvest, geen third-party-requests, P2P uit zodat media altijd via de JVB loopt.
  • Twee echte identiteiten + weigerpad: geregistreerde host/guest (internal auth) en anonieme gasten die op een moderator wachten.
  • run.sh: init / up / users / status / verify / down / reset.
  • PROCEDURE.md + EVIDENCE_FORM.md: vaste proefstappen (join, tweeweg-A/V, mute, camera, schermdelen, reconnect, leave, weigeringen, media-E2EE-status) met expliciete geslaagd/gefaald/niet getest-status en gescheiden netwerkbewijs (signalling / SFU / TURN).
  • collect-evidence.sh: geredigeerde logs (.env-wachtwoorden, jwt/token-parameters, niet-loopback-IP's) + context, containers, digests.
  • probe/join.js (optioneel): playwright-core tegen systeem-Chrome; twee echte browserclients in één kamer, met screenshots als bewijs.
  • web/custom-config.js: repareert de wss://http://… websocket-URL die upstream bouwt bij DISABLE_HTTPS=1.
  • Secret-scan-allowlists + test/secret_scan_testbed_allowlist_test.dart gegeneraliseerd: elke testbed-map met een eigen .gitignore wordt nu automatisch op de invariant getoetst. test/jitsi_meet_testbed_test.dart bewaakt pin/loopback/hermetiek.

Live geverifieerd

Stack gestart; host (ingelogd) en anonieme guest joinen één kamer (APP.conference.isJoined()==true voor beide); jicofo alloceerde de MUC; de JVB handelde twee endpoints af met ICE Running — media liep echt door de SFU. Screenshots in evidence/.

Poorten (lokaal, commit b84c2fa78 (gerebased op main incl. #2578))

  • make check — groen (format, analyze, conventies, volledige testsuite, coverage, goldens)
  • make check-secrets — groen (gitleaks dir+git, trufflehog filesystem+git: 0 lekken)
  • make sast — groen (semgrep, 0 findings)
  • make check-release niet gedraaid: geen release-relevante wijziging; DAST niet gedraaid (geen webbundel-wijziging).

Waardenweging (bewaker)

Raakt geen bestandsformaat of gebruikersopslag. Nieuwe afhankelijkheid playwright-core is optionele dev-tooling in testbed/ (niet shipped, gepind + lockfile, zonder browserdownload). Externe betrouwbaarheid is alleen ghcr.io bij het pullen van images; pin + digest-legging maakt dat toetsbaar. OciDeck kan zelf nog niet aan een call deelnemen — dit is de meetomgeving, zoals de CHANGELOG ook stelt.

Generated with Devin

## Samenvatting Voegt `testbed/jitsi-meet/` toe: een herhaalbare, volledig lokale Jitsi-deployment als bewijskader voor de komende call-issues (#2533 e.v.). Los van het bestaande kale Prosody-testbed in `testbed/docker-jitsi-meet/`. - **Pin:** alle vier de services (web, prosody, jicofo, jvb) op `stable-11248` via `JITSI_IMAGE_VERSION`; `collect-evidence.sh` legt per run de image-digests vast. - **Loopback-only en hermetisch:** alle poorten op `127.0.0.1`; geen STUN/TURN, geen AWS-harvest, geen third-party-requests, P2P uit zodat media altijd via de JVB loopt. - **Twee echte identiteiten + weigerpad:** geregistreerde `host`/`guest` (internal auth) en anonieme gasten die op een moderator wachten. - **`run.sh`**: init / up / users / status / verify / down / reset. - **`PROCEDURE.md` + `EVIDENCE_FORM.md`**: vaste proefstappen (join, tweeweg-A/V, mute, camera, schermdelen, reconnect, leave, weigeringen, media-E2EE-status) met expliciete `geslaagd/gefaald/niet getest`-status en gescheiden netwerkbewijs (signalling / SFU / TURN). - **`collect-evidence.sh`**: geredigeerde logs (`.env`-wachtwoorden, jwt/token-parameters, niet-loopback-IP's) + context, containers, digests. - **`probe/join.js`** (optioneel): playwright-core tegen systeem-Chrome; twee echte browserclients in één kamer, met screenshots als bewijs. - **`web/custom-config.js`**: repareert de `wss://http://…` websocket-URL die upstream bouwt bij `DISABLE_HTTPS=1`. - Secret-scan-allowlists + `test/secret_scan_testbed_allowlist_test.dart` gegeneraliseerd: elke testbed-map met een eigen `.gitignore` wordt nu automatisch op de invariant getoetst. `test/jitsi_meet_testbed_test.dart` bewaakt pin/loopback/hermetiek. ## Live geverifieerd Stack gestart; host (ingelogd) en anonieme guest joinen één kamer (`APP.conference.isJoined()==true` voor beide); jicofo alloceerde de MUC; de JVB handelde **twee** endpoints af met ICE `Running` — media liep echt door de SFU. Screenshots in `evidence/`. ## Poorten (lokaal, commit b84c2fa78 (gerebased op main incl. #2578)) - `make check` — groen (format, analyze, conventies, volledige testsuite, coverage, goldens) - `make check-secrets` — groen (gitleaks dir+git, trufflehog filesystem+git: 0 lekken) - `make sast` — groen (semgrep, 0 findings) - `make check-release` niet gedraaid: geen release-relevante wijziging; DAST niet gedraaid (geen webbundel-wijziging). ## Waardenweging (bewaker) Raakt geen bestandsformaat of gebruikersopslag. Nieuwe afhankelijkheid `playwright-core` is optionele dev-tooling in `testbed/` (niet shipped, gepind + lockfile, zonder browserdownload). Externe betrouwbaarheid is alleen `ghcr.io` bij het pullen van images; pin + digest-legging maakt dat toetsbaar. OciDeck kan zelf nog niet aan een call deelnemen — dit is de meetomgeving, zoals de CHANGELOG ook stelt. Generated with [Devin](https://devin.ai)
Every upcoming call issue (#2533 onwards) needs evidence against a real
Jitsi deployment, not a fake MeetingSession. Adds testbed/jitsi-meet:
the four-service stack (web, prosody, jicofo, jvb) pinned at
stable-11248, loopback-only and hermetic (no STUN/TURN, no third-party
requests, P2P off so media always crosses the JVB). run.sh drives
init/up/users/verify/reset; PROCEDURE.md fixes the proof protocol and
EVIDENCE_FORM.md the per-run proof; collect-evidence.sh gathers
redacted logs and image digests. The optional playwright probe runs the
two-real-clients smoke test against system Chrome.

Generated .env/config/evidence stay out of git and out of both secret
scanners; the allowlist test now derives that invariant per testbed.
web/custom-config.js repairs the wss://http:// websocket URL upstream
builds when DISABLE_HTTPS=1.

Verified live: both probe clients join one room (host authenticated,
guest anonymous), jicofo allocates the room, the JVB reports ICE
Running on both endpoints.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno force-pushed feat/callbewijs-01-jitsi-testomgeving from 776b1a15e6 to b84c2fa78a 2026-10-24 15:55:25 +00:00 Compare
brenno merged commit 8a1a02cda4 into main 2026-10-24 16:10:07 +00:00
Sign in to join this conversation.
No description provided.