Skip to content

[Bug]: CheckHelperImageJob fails with HTTP 403 + HTML page, while direct curl to the same URL succeeds #10935

Description

@watsonsimpore

Error Message and Logs

Telegram notification (received repeatedly over 2 consecutive days):

CheckHelperImageJob failed with: HTTP request returned status code 403:

...(truncated HTML page, not JSON)

This is notable because it's not the usual cURL timeout/DNS errors reported in
other issues (e.g. #6298) — the job receives a full HTML page with HTTP 403,
suggesting a WAF/challenge response rather than a network connectivity failure.

Steps to Reproduce

  1. Self-hosted Coolify instance with Telegram notifications enabled for job failures.
  2. Wait for the scheduled CheckHelperImageJob run (checks https://cdn.coollabs.io/coolify/versions.json).
  3. Job fails with HTTP 403 and an HTML response body instead of JSON.
  4. From the same server, run: curl -v https://cdn.coollabs.io/coolify/versions.json
    → returns HTTP 200 with valid JSON immediately, no blocking, no rate limiting.
Image

Example Repository URL

No response

Coolify Version

v4.1.2

Are you using Coolify Cloud?

No (self-hosted)

Operating System and Version (self-hosted)

Ubuntu 25.10

Additional Information

Manual verification that outbound connectivity from the server is healthy:

$ curl -v https://cdn.coollabs.io/coolify/versions.json
< HTTP/2 200
< content-type: application/json
< server: cloudflare
{ "coolify": { "v4": {...}, "helper": {"version": "1.0.14"}, ... } }

Since a plain curl succeeds instantly from the same host, this rules out
firewall/DNS/proxy issues on my side. Looking at app/Jobs/CheckHelperImageJob.php,
the request is made via Http::retry(3, 1000)->get(...) — Laravel's default
Guzzle client, with no custom User-Agent header. cdn.coollabs.io is served via
Cloudflare, and it's a known pattern for Cloudflare's bot protection / WAF to
intermittently challenge generic HTTP client signatures (default Guzzle UA)
while allowing curl through. This might explain the intermittent 403 + HTML
challenge page seen here, distinct from the timeout/DNS issues in other reports.

Suggested fix: set an explicit User-Agent header (e.g. "Coolify/{version}") on
this HTTP call, which is a common workaround for Cloudflare bot-protection
false positives.

Image

Metadata

Metadata

Assignees

Labels

✅ DoneIssues that are fixed and a PR is ready to be merged.🐛 Possible BugReported issues that need to be reproduced by the team.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions