fix(ops): caddy cannot run on the co-tenant box, so stop starting it #5565
ccantynzAI Reviewcommented 2d ago
AI Triage
(no summary)
Priority: medium Risk area: mixed
Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)
Suggestions only — nothing has been applied. The PR author stays in control.
gluecron[bot]🤖 botAI Reviewcommented 2d ago
AI review unavailable
The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
The problem
caddybinds host:80/:443. On the 161 box Coolify's Traefik owns both, so everycompose upleft a caddy container stuck inCreatedand returned non-zero.That much was known and tolerated. The cost was not:
The excuse was correct on every single tick, which is what makes it useless — a genuine compose failure arrived pre-explained and read as routine. Same shape as the rest of this week's findings: a signal that is always firing is not a signal.
The fix
Remove the cause instead of apologising for it.
scripts/docker-compose.coolify-override.ymlnow puts caddy behind adedicated-edgeprofile that nothing activates, so the co-tenant stack isgluecron+autoheal.set -ea non-zeroupwould abort before the ingress reattach and the health gate that actually decides), but it no longer names a cause it cannot inspect.How it surfaced
CI had been OOM-killed on every branch by the 2g container ceiling merged in #5562 —
bunx tsc --noEmit,exit 137, no test output. Raising it, I reached for the barecompose upthat this file's own header warns is unsafe on this box: it recreatedgluecrondetached from thecoolifynetwork and 502'd the site until the ingress guard from39b591freattached it ~60s later. That guard works exactly as designed. This removes the other half of the same trap.Tests
dedicated-edgeprofile and re-assert the create-timecoolifyattachment the override exists for — so a future edit can't quietly drop the ingress declaration while editing the profile.tsc --noEmitclean.