Come configurare un nome di dominio personalizzato per Jitsi Meet Docker
Il percorso più breve per un dominio personalizzato per Jitsi Meet Docker consiste nel puntare un nome host DNS all'host Docker, impostarlo PUBLIC_URLsull'URL HTTPS finale, configurare TLS attendibile per lo stesso nome host e assicurarsi che i media WebRTC possano ancora raggiungere Jitsi Videobridge. Per un'installazione diretta verso Internet, la configurazione ufficiale di Docker supporta l'automazione integrata dei certificati tramite ENABLE_LETSENCRYPT, LETSENCRYPT_DOMAIN, e LETSENCRYPT_EMAIL.
Questa guida utilizza meet.example.comcome esempio concreto e presuppone il progetto standard docker-jitsi-meet . Sostituisci il nome host, l'indirizzo email e l'indirizzo IP utilizzato solo per la documentazione con i tuoi valori. La configurazione qui descritta è stata verificata rispetto al manuale ufficiale di Jitsi Docker e al progetto corrente env.exampleil 7 ottobre 2026.
Cosa ti serve prima di cambiare dominio
Un dominio personalizzato funziona al meglio quando il nome host viene deciso prima di richiedere un certificato. Ad esempio, se gli utenti devono aprire https://meet.example.com, DNS, PUBLIC_URLe il certificato TLS dovrebbero tutti utilizzare meet.example.com. Mescolare jitsi.example.comin un posto e meet.example.comin un altro è una causa comune di avvisi relativi al certificato o reindirizzamenti all'host sbagliato.
Un dominio sotto il tuo controllo.
Un server con Docker Engine e Docker Compose.
Un indirizzo IP pubblico, oppure un proxy inverso che possiede già le porte 80 e 443.
Accesso firewall per le porte web e il traffico multimediale di Jitsi.
docker-jitsi-meetLa directory esistente e il relativo .envfile.
Il manuale ufficiale di Jitsi Docker afferma che PUBLIC_URLdeve essere impostato sul dominio reale per una distribuzione in produzione. Documenta inoltre le porte esterne principali 80/TCP, 443/TCP e 10000/UDP per la configurazione diretta standard. Consultare la guida all'hosting self-service di Jitsi Docker .
Passaggio 1: puntare il nome host personalizzato al server Jitsi
Crea un record A per il nome host che desideri utilizzare. In questo esempio, meet.example.compunta all'indirizzo IPv4 pubblico del server. Se il tuo server dispone di una connettività IPv6 stabile, puoi anche aggiungere un record AAAA che punta al suo indirizzo IPv6 pubblico.
Type: A
Name: meet
Value: YOUR_PUBLIC_IPV4
TTL: 300
Non copiare 203.0.113.10l'esempio in un'implementazione reale; quell'indirizzo è riservato alla documentazione. Se utilizzi un provider DNS con modalità proxy/CDN, inizia con la normale risoluzione DNS, a meno che tu non abbia verificato che il proxy supporti il modello di traffico Jitsi che intendi utilizzare.
Esempio di configurazione DNS per il sottodominio meet. Sostituisci l'indirizzo illustrato con l'indirizzo IP pubblico effettivo del tuo host Jitsi.
Passaggio 2: Impostare i valori PUBLIC_URL e HTTPS nel file .env
Apri il .envfile nella directory in cui hai clonato o estratto docker-jitsi-meet. Per un'implementazione diretta in cui il container web Jitsi sarà in ascolto pubblicamente sulle porte 80 e 443, le impostazioni importanti sono:
PUBLIC_URLNon è solo una questione estetica. Jitsi lo utilizza durante la creazione di una configurazione efficace, quindi lasciarlo su localhost o su un vecchio hostname può produrre link non funzionanti e comportamenti incoerenti. L'esempio di progetto corrente nota anche che se si utilizza deliberatamente una porta HTTPS non standard, tale porta deve essere in PUBLIC_URL.
L'esempio ufficiale attualmente identifica ZeroSSL come server ACME predefinito e consente LETSENCRYPT_ACME_SERVER="letsencrypt"di specificare Let's Encrypt quando necessario. Se la tua installazione esistente ha già ottenuto correttamente un certificato attendibile, mantieni l'impostazione ACME corrispondente al tuo ambiente di lavoro anziché cambiare provider senza un valido motivo.
I valori chiave del file .env devono utilizzare lo stesso nome host pubblico che gli utenti digiteranno nei loro browser.
Passaggio 3: Aprire le porte del firewall necessarie
Per la distribuzione Docker con accesso diretto a Internet descritta sopra, consentire le porte 80/TCP, 443/TCP e 10000/UDP. Mantenere aperta anche la porta di gestione SSH. Su un host Ubuntu che utilizza UFW, un esempio minimo è il seguente:
Le porte web servono per il sito e per la verifica del certificato. UDP 10000 è la porta multimediale predefinita di Jitsi Videobridge. Una pagina può caricarsi perfettamente mentre le riunioni falliscono o perdono audio/video se la porta multimediale è bloccata, quindi controllare solo HTTPS non è sufficiente.
Se il tuo host si trova dietro un NAT, controlla anche JVB_ADVERTISE_IPS. Il manuale ufficiale spiega che questa variabile controlla l'indirizzo che Jitsi Videobridge pubblicizza per i media ed è necessaria in molte implementazioni LAN o NAT. Un tipico esempio di Internet pubblico è:
JVB_ADVERTISE_IPS=YOUR_PUBLIC_IPV4
La verifica del firewall dovrebbe includere la porta multimediale UDP di Jitsi Videobridge, e non solo le porte del sito web.
Passaggio 4: riavviare lo stack Docker con il nuovo dominio
Salva .env, quindi ricrea i container in modo che le modifiche all'ambiente vengano applicate:
docker compose down
docker compose up -d
docker compose ps
Una semplice operazione restartnon è la scelta migliore dopo aver modificato le variabili d'ambiente, perché la definizione del container esistente potrebbe ancora contenere l'ambiente precedente. Ricreare lo stack rende PUBLIC_URLespliciti i nuovi valori di porta e le impostazioni del certificato.
Se si parte da una copia pulita del progetto, seguire prima i passaggi di avvio rapido ufficiali, inclusa la generazione delle password necessarie e la creazione delle directory di configurazione. Le versioni recenti del container Jitsi eseguono i servizi come utente non privilegiato e richiedono spazio di archiviazione scrivibile e directory temporanee, quindi un'installazione completamente nuova dovrebbe seguire i comandi di directory presenti nel manuale corrente piuttosto che un vecchio tutorial di terze parti.
Dopo aver modificato il file .env, ricrea lo stack e verifica che i container Jitsi principali siano in esecuzione.
Passaggio 5: Confermare DNS e HTTPS dall'esterno del server
Una volta che il DNS si è propagato, verificare che il nome host si risolva nell'indirizzo pubblico previsto:
dig +short meet.example.com
Quindi testa l'endpoint HTTPS:
curl -I https://meet.example.com
Una risposta positiva dimostra che DNS, TCP 443 e il servizio web funzionano correttamente insieme. Non dimostra ancora che la trasmissione multimediale multiparte funzioni, quindi si tratta di un controllo intermedio piuttosto che del risultato finale.
Se digviene restituito un indirizzo obsoleto, attendere il TTL del DNS o correggere il record. Se il DNS è corretto ma curlsi verifica un timeout, verificare i gruppi di sicurezza cloud, il firewall dell'host, le regole del router/NAT e se un altro servizio sta già occupando la porta 443.
La risoluzione DNS e una richiesta di intestazione HTTPS andata a buon fine forniscono una prima rapida verifica del nome host personalizzato.
Passaggio 6: Verificare l'emissione del certificato e i registri web.
Se il browser continua a mostrare un avviso relativo al certificato, invece di eliminare ripetutamente la configurazione e richiedere un altro certificato, esamina i log del contenitore web:
docker compose logs --tail=200 web
Verifica la presenza di errori di convalida ACME, errori di associazione delle porte o mancate corrispondenze del nome host. Il manuale di Jitsi avverte dei limiti di frequenza delle autorità di certificazione e raccomanda di conservare l'archivio di configurazione che contiene i certificati emessi. Durante ripetuti esperimenti di configurazione, l'ambiente di staging può essere utile, ma dopo aver abbandonato lo staging, il manuale indica che potrebbe essere necessario eliminare i vecchi certificati di staging dall'archivio web prima di richiedere un certificato di produzione.
Se disponi già di un certificato attendibile da un'altra fonte, Jitsi supporta anche il montaggio di una catena completa di certificati e della relativa chiave privata nel servizio web, anziché abilitare il flusso ACME integrato. Segui l'esempio di montaggio del certificato nella sezione ufficiale relativa ai certificati esistenti .
Utilizza i log del container web per diagnosticare i problemi relativi ai certificati o all'avvio di nginx, anziché richiedere ripetutamente nuovi certificati.
Passaggio 7: Apri il dominio personalizzato in un browser
Visita il sito https://meet.example.comcon un browser moderno. Dovresti visualizzare la pagina di destinazione di Jitsi sotto il nome host scelto, con un indicatore TLS valido. Crea una stanza di prova con un nome temporaneo.
Per le riunioni reali, è necessario utilizzare HTTPS. La guida ufficiale di Docker avverte specificamente che l'accesso HTTP diretto può causare il malfunzionamento delle API WebRTC del browser, come quelle per l'accesso al microfono e alla videocamera. HTTPS è quindi parte integrante della configurazione funzionale, non un semplice indicatore di sicurezza.
La pagina di destinazione deve essere caricata dall'hostname HTTPS finale prima di iniziare i test multimediali.
Passaggio 8: Effettua una chiamata reale, non solo la pagina iniziale.
Se possibile, partecipa alla stessa stanza da due dispositivi o reti diversi. Verifica che ogni partecipante possa inviare e ricevere audio e video. Un test con due browser è importante perché un'installazione potrebbe visualizzare correttamente il sito web, ma l'indirizzo Videobridge o il percorso UDP potrebbero essere errati.
Per le installazioni dietro NAT, un sintomo comune è che la prima connessione sembra normale, ma il flusso multimediale si interrompe man mano che si aggiungono altri partecipanti. In tal caso, ricontrollare JVB_ADVERTISE_IPSla mappatura NAT pubblica e la porta UDP 10000. Il manuale di Jitsi specifica esplicitamente che l'indirizzo multimediale di Videobridge rimane rilevante anche quando il traffico HTTP viene gestito da un proxy inverso.
Una chiamata a due partecipanti andata a buon fine rappresenta un test end-to-end migliore rispetto alla semplice verifica del caricamento della home page di Jitsi.
Quando è consigliabile utilizzare un proxy inverso
La configurazione diretta descritta sopra è appropriata quando il container web Jitsi può utilizzare le porte pubbliche 80 e 443. Se sullo stesso server sono già in esecuzione Nginx, Apache, Caddy, Traefik o un altro proxy su tali porte, non tentare di associare Jitsi a questi ultimi contemporaneamente.
Per un reverse proxy sullo stesso host, la guida ufficiale di Jitsi per Docker raccomanda di disabilitare HTTPS all'interno del container Jitsi, evitando l'esposizione pubblica delle sue porte web interne e inoltrando le richieste all'ingresso HTTP del container. Il proxy deve inoltre supportare l'inoltro WebSocket /xmpp-websocket. Un tipico ambiente lato Jitsi è:
Successivamente, termina il certificato attendibile sul tuo proxy inverso. Questa soluzione è più adatta quando un singolo proxy gestisce i certificati per diverse applicazioni. Non è un motivo per modificare l'indirizzo visibile esternamente PUBLIC_URL; gli utenti dovrebbero comunque visualizzare il dominio HTTPS finale.
Risoluzione dei problemi relativi ai domini personalizzati
Il vecchio dominio appare ancora dopo la modifica del file .env.
Ricrea i contenitori con docker compose downseguito da docker compose up -d. Verifica inoltre di aver modificato il .envfile utilizzato dal progetto Compose che stai effettivamente avviando.
La convalida del certificato HTTPS non è riuscita.
Verificare che i record DNS A/AAAA puntino al server che riceve la richiesta e che la porta pubblica 80 sia raggiungibile utilizzando il flusso di certificati diretti integrato. Controllare docker compose logs webl'errore ACME esatto prima di effettuare un'altra richiesta.
La pagina si carica, ma i partecipanti non hanno audio né video.
Verifica la porta UDP 10000 e, per le implementazioni NAT, imposta il valore corretto JVB_ADVERTISE_IPS. Ricorda che il reverse proxy gestisce il traffico web; non sostituisce il percorso multimediale di Videobridge.
Il browser funziona ma l'app mobile rifiuta il server
Verifica la catena di certificati. Il manuale di Jitsi Docker indica che le app per dispositivi mobili non funzionano con il certificato autofirmato predefinito. Utilizza un certificato pubblicamente attendibile o un'infrastruttura progettata in modo che l'app riceva una catena di certificati attendibile.
Lista di controllo per la verifica finale
meet.example.comsi risolve all'indirizzo pubblico previsto.
PUBLIC_URL=https://meet.example.comcorrisponde esattamente all'URL del browser.
Il certificato TLS è affidabile e copre meet.example.com.
Le porte 80/TCP e 443/TCP sono raggiungibili per la configurazione diretta.
Il protocollo UDP 10000 raggiunge l'host di Jitsi Videobridge.
JVB_ADVERTISE_IPSè corretto quando il server si trova dietro un NAT o necessita di indirizzi pubblicizzati esplicitamente.
docker compose psmostra i container richiesti in esecuzione.
Un test con due partecipanti ha trasmesso correttamente audio e video.
Una volta superati questi controlli, il dominio personalizzato non solo punta a Jitsi, ma viene configurato anche per le parti che contano davvero in una riunione reale: HTTPS, segnalazione e trasporto multimediale.