Skip to content

Make Chrome and proxyrouter DNS configurable together - #44

Merged
mandatoryprogrammer merged 4 commits into
mandatoryprogrammer:mainfrom
bconik:fix/proxyrouter-dns
Oct 5, 2026
Merged

mandatoryprogrammer merged 4 commits into
mandatoryprogrammer:mainfrom
bconik:fix/proxyrouter-dns

Conversation

@bconik

@bconik bconik commented Jul 27, 2026 •

Copy link
Copy Markdown

DNS failures in proxyrouter can prevent requests even when Chrome has working DNS. Add one optional THERMOPTIC_DNS Compose variable so operators can select the same resolver for both services without editing separate settings.

  • Set THERMOPTIC_DNS to one literal IPv4 or IPv6 resolver address in the shell or Compose .env file.
  • Leave it unset or empty to inherit Docker DNS in both services. This removes Chrome's previous hardcoded public-resolver default and preserves access to site/VPN DNS when configured by Docker.
  • Document the variable alongside the other README configuration entries, with detailed usage, container recreation, and the embedded-resolver limitation in _readme/internal-notes.md.

Validation used Docker Engine 29.7.2, Compose 5.5.0, and existing Chrome/router images. Fifteen configuration checks passed for unset/empty values, IPv4/IPv6, CI/GPU overlays, and environment-file precedence. Actual container checks confirmed identical DNS settings, automatic recreation when changing or clearing the variable, and working Docker service discovery. With a private local DNS fixture, the Chrome container's OS resolver resolved the target and the actual router returned HTTP 200. These initial checks used the Chrome container's OS resolver; the separate run below also exercised the actual browser. No builds, image pulls, or dependency installs were needed for local validation.

Full-stack verification on 2026-10-05 used the current PR source with the existing Chrome 142.0.7444.175 image and a private DNS/HTTP fixture. Six authenticated requests from the host through the published loopback proxy port passed: navigation and fetch() with direct router egress, a privately named upstream HTTP proxy, and Chrome bypassing the router for the private target. All returned HTTP 200 with the exact 72-byte UTF-8 body and correct Content-Length. Application routing logs and fixture DNS/origin logs confirmed the browser paths and that both Chrome and proxyrouter used the selected resolver. Temporary profiles, CA material, containers, and the network were isolated from the regular deployment. No dependency installs, image pulls, or rebuilds were needed.

The test network used a non-overlapping subnet because this host's Tailscale route captures Docker's automatically allocated subnet. This run covered HTTP over IPv4; live IPv6 DNS and the reporter's rootless/VM environment remain untested. The latest PR head also passes the existing compose-e2e and docker-build CI jobs.

noreply and others added 3 commits July 27, 2026 19:14
The chrome service already sets an explicit DNS resolver (8.8.8.8/1.1.1.1)
to work around Docker setups where the embedded resolver isn't reliably
reachable (e.g. rootless Docker with a VM-based network stack). proxyrouter
never got the same override, even though it's the service that actually
resolves every proxied request's target host.

Without working DNS in proxyrouter, requests fail (intermittently or
entirely depending on the environment) with generic connection errors
that give no indication DNS is the cause.
@mandatoryprogrammer mandatoryprogrammer changed the title Add DNS override to proxyrouter service Make Chrome and proxyrouter DNS configurable together Oct 5, 2026
@mandatoryprogrammer

Copy link
Copy Markdown
Owner

Added support for this (there were some caveats to the existing PR), thanks for the contribution!

@mandatoryprogrammer
mandatoryprogrammer merged commit 3637cf7 into mandatoryprogrammer:main Oct 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants