For this instance, the document below lists both the software dependencies (DEV) and the operational services (OPS) that make up the platform. It is published in CycloneDX 1.6, an OWASP open standard that describes code libraries and third-party managed services in a single document.
Libraries, containers and OS packages that form the application. Tied to the code version; reproducible by anyone with access to the source.
| Name | Type | Version | License |
|---|---|---|---|
| pa-webinar Immagine OCI dell'applicazione Next.js. Base: Debian 12 slim. | container | 0.3.44 | AGPL-3.0-only |
| jitsi/web | container | stable-9258 | Apache-2.0 |
| jitsi/prosody | container | stable-9258 | Apache-2.0 |
| jitsi/jicofo | container | stable-9258 | Apache-2.0 |
| jitsi/jvb Video Bridge. Digest catturato dinamicamente dai pod JVB quando scalano da zero. | container | stable-9258 | Apache-2.0 |
| coturn/coturn | container | — | BSD-3-Clause |
| bitnami/redis | container | 8.6.2 | RSALv2 |
| ingress-nginx/controller | container | v1.9.4 | Apache-2.0 |
| jetstack/cert-manager-controller | container | v1.13.3 | Apache-2.0 |
| debian Base image layer dell'applicazione Next.js. | operating-system | 12-slim | — |
| next | framework | 15.5.15 | MIT |
| react | library | 19.0.0 | MIT |
| next-intl | library | 4.0.0 | MIT |
| @prisma/client | library | 6.0.0 | Apache-2.0 |
| bootstrap-italia | library | 2.12.0 | BSD-3-Clause |
| design-react-kit | library | 5.1.0 | BSD-3-Clause |
| ioredis | library | 5.10.1 | MIT |
| Certificato TLS videocall-test.innovazione.gov.it X.509 rilasciato da Let's Encrypt via cert-manager (ACME HTTP-01). Chiavi RSA 2048 gestite in Secret Kubernetes videocall-test-tls. | cryptographic-asset | — | — |
| Chiave di firma JWT Jitsi Chiave simmetrica HS256 condivisa tra app Next.js e Prosody per autenticare i partecipanti verso Jitsi. Conservata nel Secret videocall-secrets (chiave JITSI_JWT_SECRET). Mai esposta al browser né al cittadino. | cryptographic-asset | — | — |
| Chiave di cifratura PII a riposo AES-256-GCM applicata prima della scrittura su PostgreSQL per campi nominativi ed email degli iscritti. La chiave PII_ENCRYPTION_KEY è gestita nel Secret Kubernetes, il database non la vede. | cryptographic-asset | — | — |
Third-party managed services this instance depends on. Tenant-scoped information that changes whenever the operator reconfigures the deployment or switches provider.
Cluster AKS developers-italia-prod che ospita il namespace videocall-test. Nodepool di sistema + nodepool jitsi-jvb (scale-to-zero) + nodepool jitsi-jibri (scale-to-zero).
Database gestito (server developersitalia-prod, database videocall_test). Contiene dati applicativi: eventi, iscrizioni, consensi GDPR, template email, feedback. I campi nominativi sono cifrati AES-256-GCM lato applicazione prima della scrittura.
Storage account developersitaliarec, container 'recordings'. Conserva le registrazioni video Jibri.
SMTP relay per email transazionali: conferme iscrizione, link moderatore, reminder. Regione EU per mantenere i dati nell'Unione Europea.
A high-level view of the four layers that make up the platform: from user access down to the runtime platform.
Registry OCI da cui AKS pull-a l'immagine pa-webinar. Autenticazione tramite pull secret kubernetes ghcr-secret.
Repository sorgente italia/pa-webinar e pipeline GitHub Actions che produce le immagini :dev e :release e pubblica SBOM alla release. La catena di fornitura del software parte qui.
Ingress controller self-hosted nel cluster. Termina TLS, route verso i servizi interni.
Emissione e rinnovo automatico dei certificati TLS via Let's Encrypt (ACME HTTP-01).
Autorità di certificazione pubblica che firma i certificati TLS della piattaforma.
Single-pod standalone in-cluster usato come bus di messaggistica real-time per la chat. Stato canonico su PostgreSQL; Redis è un relay effimero. Password gestita come Secret Kubernetes.
Server STUN/TURN self-hosted su nodepool dedicato. Utilizzato dai partecipanti dietro NAT simmetrici per relay audio/video.
Telemetria di piattaforma: metriche applicative (/api/metrics), stato cluster, dashboard Grafana di monitoring. Dati aggregati, nessun PII.
[PIANIFICATO — non ancora operativo nel cluster; codice in infra/recorder/, core WebRTC e deploy da completare] Servizio in-cluster che cattura una traccia audio isolata per partecipante (RecordingTrack) e la fornisce al worker di trascrizione per attribuire il transcript al relatore corretto. Diverso dall'audio misto del recording standard: la traccia individuale e' un dato personale ad alta sensibilita' (vicino al biometrico vocale, art. 9 GDPR se usato per identificazione). Non clona ne' identifica la voce: produce solo testo attribuito. Vedi docs/adr/013-multitrack-speaker-attribution.md e docs/POSTPROD.md.
The complete list of components and services, with versions, hashes and technical properties, is available in the sections above and in the downloadable JSON.