IPv6 interrompe una callback quando il provider seleziona un percorso AAAA che il tuo proxy, firewall, TLS o applicazione non riescono a completare.
In uno stack di server domestici self-hosted, un browser può caricare l’app tramite IPv4 mentre un provider OAuth, un mittente webhook, una rete mobile o un’API esterna sceglie IPv6 per la richiesta di ritorno. Il test pulito consiste nel confrontare lo stesso hostname della callback tramite record A e AAAA, osservare i log del reverse proxy e dell’applicazione, e rimuovere o riparare solo la famiglia di indirizzi che fallisce invece di cambiare URL di redirect a caso.
Registra l’URL esatto della callback e la fase di errore
Copia l’URL della callback generato dall’applicazione e l’URI di redirect registrato con il provider esterno. Confronta schema, hostname, porta, percorso, slash finale e maiuscole/minuscole prima di testare la rete.
Una guida al debug delle callback sottolinea che i redirect OAuth richiedono una corrispondenza esatta dell’URI di redirect anche quando il servizio sottostante è raggiungibile. IPv6 non può spiegare un disallineamento lato provider che avviene prima che qualsiasi richiesta raggiunga il tuo server domestico.
Classifica il sintomo: il provider rifiuta l’URI, il browser va in timeout, il proxy restituisce 502, TLS fallisce, o l’app riceve la callback ma genera l’URL successivo errato. Questo determina se il primo test riguarda la configurazione del provider, DNS, trasporto, proxy o impostazioni dell’applicazione.
Confronta le risposte A e AAAA per l’hostname della callback
Interroga l’hostname della callback da un resolver pubblico e registra ogni indirizzo A e AAAA. Poi confronta quegli indirizzi con l’IPv4 WAN, il prefisso IPv6 delegato, il punto di terminazione del tunnel o l’indirizzo del reverse proxy che effettivamente serve l’applicazione.
Un caso OAuth self-hosted descrive disallineamento dell’URI di redirect e timeout come errori distinti. Una stringa di callback corretta può comunque fallire quando il DNS indirizza il provider a un indirizzo irraggiungibile.
Se l’hostname ha un record AAAA che non appartiene al percorso proxy attivo, rimuovilo temporaneamente e ripeti la callback. Se l’errore scompare, il test ha isolato un problema di raggiungibilità IPv6; non lasciare il record pubblicato finché il percorso IPv6 completo non è verificato.
Testa l’host della callback separatamente su IPv4 e IPv6
Da un sistema dual-stack esterno, forza una richiesta su IPv4 e un’altra su IPv6 allo stesso hostname e percorso della callback. Registra risoluzione DNS, connessione TCP, handshake TLS, stato HTTP, intestazioni di risposta e tempo totale.
La spiegazione di Cloudflare sul comportamento client dual-stack mostra perché un servizio può apparire sano a una popolazione di client mentre un’altra raggiunge una famiglia di indirizzi o un percorso di traduzione diverso.
Se IPv4 ha successo e IPv6 va in timeout prima del TLS, ispeziona l’annuncio del router, il prefisso delegato, le regole firewall, il binding del proxy e il routing di ritorno. Se entrambi si connettono ma solo IPv6 produce un redirect applicativo errato, sposta la diagnosi alle intestazioni inoltrate e alla generazione dell’URL dell’app.
Verifica che il reverse proxy ascolti e instradi su IPv6
Conferma che il proxy pubblico ascolti sull’indirizzo IPv6 e sulla porta pubblicizzati nel DNS. Poi verifica che l’host virtuale corrispondente, il certificato, la rotta e la mappatura backend siano identici all’ascoltatore IPv4 funzionante.
Un caso di supporto pubblico n8n mostra come un’applicazione self-hosted possa generare una callback inutilizzabile quando l’indirizzo callback esterno non corrisponde all’URL e all’ambiente proxy che il provider raggiunge effettivamente.
Invia una callback IPv6 forzata mentre osservi i log di accesso e di errore del proxy. Nessuna voce di log significa che la richiesta si è fermata prima del proxy; una voce di accesso con 404 o host errato indica routing dell’host virtuale; un 502 o timeout indica il percorso proxy-backend.
Verifica le intestazioni inoltrate e le impostazioni URL dell’applicazione
Dietro un reverse proxy, l’applicazione potrebbe aver bisogno dello schema pubblico, host e porta dalle intestazioni inoltrate attendibili o da variabili d’ambiente esplicite. Senza questi, può generare un hostname interno, callback HTTP, indirizzo IPv6 privato o porta del container.
Confronta l’URL di callback mostrato dall’applicazione con le intestazioni della richiesta ricevute al proxy e al backend. Non presumere che la connessione IPv6 cambi l’host; la vera differenza potrebbe essere che l’host virtuale IPv6 omette le stesse regole di inoltro usate da IPv4.
Applica una correzione alla volta: URL base pubblico, intervallo proxy attendibile, host inoltrato, protocollo inoltrato o mappatura dell’ascoltatore. Riprova il flusso del provider dopo ogni modifica e mantieni invariato l’URL esatto della callback registrato presso il provider a meno che l’indirizzo pubblico dell’app non cambi realmente.
Mantieni o rimuovi IPv6 in base al test esterno completo
IPv6 è pronto solo quando l’hostname della callback si risolve correttamente, l’indirizzo pubblico è raggiungibile, il reverse proxy serve il certificato e l’host corretti, il backend riceve la richiesta e l’applicazione completa il flusso di lavoro.
La spiegazione di ZimaSpace su la raggiungibilità diretta IPv6 del server domestico fornisce un confine di sicurezza più ampio: l’indirizzamento globalmente instradabile non elimina la necessità di controlli espliciti di firewall e proxy.
Se lo stack non è pronto, rimuovi il record AAAA dell’hostname della callback o termina IPv6 su un tunnel o proxy funzionante invece di pubblicare un percorso diretto rotto. Riabilitalo solo dopo aver testato da una rete IPv6 esterna, non solo dall’interno della stessa LAN.
Supporto e consigli
Altro da leggere

How to Reduce Plex Database Contention on a Busy Docker Host
A Plex configuration guide for busy hosts that treats the database as local application state and reduces I/O contention without inventing a shared DB...

How to Prevent Duplicate Plex Scans and Imports
A prevention guide for duplicate Plex scans and imports that removes overlapping triggers instead of disabling library updates entirely.

How to Recover Plex After Its App-Data Volume Fills Up
A recovery ladder for full Plex app-data volumes that protects the database first and avoids deleting unknown files just to make the service start.

