IPv6 is breaking a callback when the provider selects an AAAA path that your proxy, firewall, TLS, or application cannot complete.
In a self-hosted home-server stack, a browser may load the app over IPv4 while an OAuth provider, webhook sender, mobile network, or external API chooses IPv6 for the return request. The clean test is to compare the same callback hostname over A and AAAA records, observe the reverse proxy and application logs, and remove or repair only the failing address family instead of changing redirect URLs at random.
Record the Exact Callback URL and Failure Stage
Copy the callback URL generated by the application and the redirect URI registered with the external provider. Compare scheme, hostname, port, path, trailing slash, and letter case before testing the network.
A callback debugging guide emphasizes that OAuth redirects require exact redirect URI matching even when the underlying service is reachable. IPv6 cannot explain a provider-side mismatch that occurs before any request reaches your home server.
Classify the symptom: provider rejects the URI, browser times out, proxy returns 502, TLS fails, or the app receives the callback but generates the wrong next URL. This determines whether the first test belongs in provider configuration, DNS, transport, proxying, or application settings.
Compare the A and AAAA Answers for the Callback Hostname
Query the callback hostname from a public resolver and record every A and AAAA address. Then compare those addresses with the WAN IPv4, delegated IPv6 prefix, tunnel endpoint, or reverse-proxy address that actually serves the application.
A self-hosted OAuth case describes redirect URI mismatch and timeout as distinct errors. A correct callback string can still fail when DNS directs the provider to an unreachable address.
If the hostname has an AAAA record that does not belong to the active proxy path, remove it temporarily and repeat the callback. If the failure disappears, the test has isolated IPv6 reachability; do not leave the record published until the full IPv6 path is verified.
Test the Callback Host Over IPv4 and IPv6 Separately
From an external dual-stack system, force one request over IPv4 and another over IPv6 to the same callback hostname and path. Record DNS resolution, TCP connection, TLS handshake, HTTP status, response headers, and total time.
Cloudflare’s explanation of dual-stack client behavior shows why a service can appear healthy to one client population while another reaches a different address family or translation path.
If IPv4 succeeds and IPv6 times out before TLS, inspect router advertisement, delegated prefix, firewall rules, proxy binding, and return routing. If both connect but only IPv6 produces the wrong application redirect, move the diagnosis to forwarded headers and app URL generation.
Check Whether the Reverse Proxy Listens and Routes on IPv6
Confirm that the public proxy listens on the IPv6 address and port advertised in DNS. Then verify that the matching virtual host, certificate, route, and backend mapping are identical to the working IPv4 listener.
A public n8n support case shows how a self-hosted application can generate an unusable callback when the external callback address does not match the URL and proxy environment the provider actually reaches.
Send one forced IPv6 callback while watching proxy access and error logs. No log entry means the request stopped before the proxy; an access entry with 404 or wrong host points to virtual-host routing; a 502 or timeout points to the proxy-to-backend path.
Verify Forwarded Headers and Application URL Settings
Behind a reverse proxy, the application may need the public scheme, host, and port from trusted forwarded headers or explicit environment variables. Without them, it can generate an internal hostname, HTTP callback, private IPv6 address, or container port.
Compare the application’s displayed callback URL with the request headers received at the proxy and backend. Do not assume the IPv6 connection itself changes the host; the real difference may be that the IPv6 virtual host omits the same forwarding rules used by IPv4.
Apply one correction at a time: public base URL, trusted proxy range, forwarded host, forwarded protocol, or listener mapping. Retest the provider flow after each change and keep the exact callback URL registered at the provider unchanged unless the public application address truly changes.
Keep or Remove IPv6 Based on the Complete External Test
IPv6 is ready only when the callback hostname resolves correctly, the public address is reachable, the reverse proxy serves the right certificate and host, the backend receives the request, and the application completes the workflow.
ZimaSpace’s explanation of direct IPv6 home-server reachability provides the broader security boundary: globally routable addressing does not remove the need for explicit firewall and proxy controls.
If the stack is not ready, remove the callback hostname’s AAAA record or terminate IPv6 at a working tunnel or proxy instead of publishing a broken direct path. Re-enable it only after testing from an external IPv6 network, not merely from inside the same LAN.
Support & Tips
More to Read

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.

