Fixes the warm-domain HTTPS routing failure surfaced by the cc-ci canonical sweep (cold deploy is green, but the stable warm domain returns 000 on /xrpc/_health).
Root cause: the caddy sidecar uses on-demand TLS and calls http://app:3000/tls-check before issuing a cert. On a multi-tenant host every co-located stack aliases its main service app on the shared proxy overlay; caddy (attached to both proxy and internal) resolves bare app to a FOREIGN stack's endpoint (observed: caddy dialed proxy IPs 10.10.0.x belonging to other stacks; connection refused), so the tls-check fails, no cert is issued, and HTTPS is dead.
Fix: give the PDS a unique pds alias on the internal network and point caddy's reverse_proxy + on_demand_tls ask at pds:3000. pds exists only on internal, so it always resolves to THIS stack's PDS. The service name stays app (no downstream breakage).
Verified by cc-ci on the warm-canonical deploy path (the cold per-run domain was never affected).
Fixes the warm-domain HTTPS routing failure surfaced by the cc-ci canonical sweep (cold deploy is green, but the stable warm domain returns 000 on /xrpc/_health).
**Root cause:** the caddy sidecar uses on-demand TLS and calls `http://app:3000/tls-check` before issuing a cert. On a multi-tenant host every co-located stack aliases its main service `app` on the shared `proxy` overlay; caddy (attached to both `proxy` and `internal`) resolves bare `app` to a FOREIGN stack's endpoint (observed: caddy dialed proxy IPs 10.10.0.x belonging to other stacks; connection refused), so the tls-check fails, no cert is issued, and HTTPS is dead.
**Fix:** give the PDS a unique `pds` alias on the `internal` network and point caddy's `reverse_proxy` + `on_demand_tls ask` at `pds:3000`. `pds` exists only on `internal`, so it always resolves to THIS stack's PDS. The service name stays `app` (no downstream breakage).
Verified by cc-ci on the warm-canonical deploy path (the cold per-run domain was never affected).
cc @trav @notplants
The caddy sidecar uses on-demand TLS and asks http://app:3000/tls-check before issuing a cert.
On a shared host every co-located stack aliases its main service 'app' on the 'proxy' overlay;
caddy (on both proxy+internal) resolves bare 'app' to a FOREIGN stack's endpoint, so the tls-check
connection is refused, no cert is issued, and the PDS is unreachable over HTTPS (xrpc/_health=000).
Give the PDS a unique 'pds' alias on the internal network and point caddy's reverse_proxy +
on_demand_tls ask at it; 'pds' exists only on internal, so it always resolves to this stack's PDS.
Service name stays 'app' (no downstream breakage).
autonomic-bot
changed title from fix(routing): unique pds alias so caddy resolves THIS stack on shared proxy to fix(routing): rename main service app->pds so caddy resolves THIS stack on shared proxy2026-06-18 01:59:18 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes the warm-domain HTTPS routing failure surfaced by the cc-ci canonical sweep (cold deploy is green, but the stable warm domain returns 000 on /xrpc/_health).
Root cause: the caddy sidecar uses on-demand TLS and calls
http://app:3000/tls-checkbefore issuing a cert. On a multi-tenant host every co-located stack aliases its main serviceappon the sharedproxyoverlay; caddy (attached to bothproxyandinternal) resolves bareappto a FOREIGN stack's endpoint (observed: caddy dialed proxy IPs 10.10.0.x belonging to other stacks; connection refused), so the tls-check fails, no cert is issued, and HTTPS is dead.Fix: give the PDS a unique
pdsalias on theinternalnetwork and point caddy'sreverse_proxy+on_demand_tls askatpds:3000.pdsexists only oninternal, so it always resolves to THIS stack's PDS. The service name staysapp(no downstream breakage).Verified by cc-ci on the warm-canonical deploy path (the cold per-run domain was never affected).
cc @trav @notplants
fix(routing): unique pds alias so caddy resolves THIS stack on shared proxyto fix(routing): rename main service app->pds so caddy resolves THIS stack on shared proxyfdbd1e2feeto11e41b059211e41b0592to4987ba91c7View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.