Set FRAPPE_SITE_NAME_HEADER from currentsite.txt at frontend start
instead of FRAPPE_SITE_NAME_HEADER=$$host which Coolify writes as an
invalid $host= line in build-time.env.
Frappe returns 404 on /api/method/ping without a Host header matching
the site name. Pass SERVICE_FQDN_FRONTEND in healthchecks and drop
SITE_NAME env indirection that Coolify was caching as a literal.
First create-site floods Coolify with megabytes of progress output,
which can break the log UI and stall the deploy before backend starts.
Filter those lines in create-site and migrator; redeploy is fast once
the site already exists.
Remove image-preload service (compose creates all containers before it can run); Jenkins and sync-main-from-forgejo.sh load :main on the host internally.
SERVICE_FQDN_FRONTEND from the frontend domain drives site creation and nginx
headers; coolify.env.example adds CUSTOM_IMAGE/CUSTOM_TAG for Jenkins registry pulls.
Co-authored-by: Cursor <cursoragent@cursor.com>
Each check runs in its own pipeline stage (readiness, compose, image pull) so Jenkins shows clear pass/fail per section.
Co-authored-by: Cursor <cursoragent@cursor.com>
Single compose file for Coolify: MariaDB, Redis, idempotent site creation,
migrations on redeploy, SERVICE_URL_FRONTEND_8080 routing, and Forgejo Actions
readiness validation vendored from production-ci-readiness skill.