Repository navigation
Conversation
clwsgruk
force-pushed
the
fix/custom-domain-https-listener
branch
from
September 14, 2026 20:36
ff4053c to
be7e8e1
Compare
Owner
|
@clwsgruk Could you rebase this onto current main? The GitHub |
clwsgruk
force-pushed
the
fix/custom-domain-https-listener
branch
from
October 14, 2026 09:18
be7e8e1 to
0fa7770
Compare
|
@almeidapaulopt done! |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request was prepared and submitted by an AI assistant acting on behalf of @jnsgruk.
Summary
Fix per-proxy custom-domain HTTPS when using an external TLS provider such as ACME.
ListenTLSand Funnel behavior for Tailscale-managed TLS.Problem
Per-proxy HTTPS listeners are currently always created with
tsnet.Server.ListenTLS(). For a custom domain using ACME, the proxy manager instead needs the underlying raw listener so it can terminate TLS with the custom-domain certificate.The mismatch causes domain setup to fail with:
Listener selection now uses the resolved TLS provider rather than simply checking whether a domain is configured.
Example setup
Cloudflare provides DNS only; traffic remains inside the tailnet.
For the custom domains, TSDProxy accepts a raw tsnet connection and terminates TLS using the ACME certificate. Matrix continues to use Tailscale-managed TLS through
ListenTLS.Testing
go test -race -count=1 ./...go vet ./...golangci-linton the changed packagesFull-repository
golangci-lintcurrently reports five pre-existing issues on the base commit; the changed packages report zero issues.