Shared managed Caddy settings
To also serve the same routed hosts through plain HTTP, add this top-level setting:
[caddy.global]http = trueThis is a global managed-Caddy toggle, not an isolated per-stack listener. If any active stack enables caddy.global.http = true, the shared Caddy instance serves HTTP for all active stacks until the last opting-in stack stops.
To move the shared managed Caddy listeners off the default privileged ports, set one or both listener ports:
[caddy.global]httpPort = 8080httpsPort = 4443Those are shared managed-Caddy settings too. Active stacks must agree on any non-default caddy.global.httpPort and caddy.global.httpsPort values because they all route through the same Caddy instance.
To expose the managed Caddy front door beyond loopback, set a shared listener bind host:
[caddy.global]bindHost = "0.0.0.0"That widens only the managed Caddy HTTP/HTTPS listeners. The admin API stays on 127.0.0.1, and routed backends can keep their own services.<name>.bindHost on loopback behind Caddy.
Active stacks must agree on any non-default caddy.global.bindHost value because they share one managed Caddy instance.
To move the managed Caddy admin API off the default endpoint, set:
[caddy.global]adminAddress = "127.0.0.1:22000"Active stacks must agree on any non-default caddy.global.adminAddress value because they share one managed Caddy instance.
For same-host composition within one manifest, use distinct paths such as /api/* and /admin/*, or combine one root-mounted fallback service with more specific subpath services on the same hostname.