Troubleshooting
Map of the failure messages you might see, and what to do about each. The dashboard's status pages always tell you the failure reason in plain language; this page goes a layer deeper.
Provisioning failed
failure_reason: port_exhausted
The platform allocates an upstream port from a pool (3000-3999 for Node.js, 8000-8999 for Python). If both pools are full (1000 sites of each type on the same host, very unlikely in practice), new Node or Python sites fail with this reason.
What to do: contact support. The fix is operator-side (expand the pool or migrate sites).
failure_reason: clpctl_fatal
The underlying CloudPanel command failed during site:add. The dashboard shows a one-line reason from CloudPanel; common cases include "domain already exists" (someone else on this server has the same domain) or "siteUser already exists" (you previously had a site with this domain that wasn't fully cleaned up).
What to do: delete the failed site from the dashboard, wait a moment, and retry. If the error persists, contact support with your domain and the failure_detail message.
failure_reason: db_add_failed
Site creation succeeded but the database creation step failed. Specific to PHP-backed (WordPress, Laravel) and Python-backed (Django) frameworks.
What to do: delete and re-add. If it persists, contact support; this usually indicates an operator-side database server issue.
failure_reason: postinstall_failed
The framework scaffold step failed (composer install, npm install, pip install, etc.). Common cause: transient network issue reaching the package registry. The failure_detail line on the dashboard shows the exact error.
What to do: delete and re-add. The scaffold is idempotent in concept but the bridge doesn't currently re-run; deletion + recreation is the cleanest reset.
DNS failed
failure_reason: dns_no_propagation
24 hours have passed since you started DNS verification and our resolvers still don't see the right A record. The platform stops polling and surfaces this terminal state.
What to do: see the DNS guide for the troubleshooting tree (record type, TTL, delegation, Cloudflare proxy, typo). Once you've fixed the root cause, the "Try again" button restarts DNS polling.
SSL failed
ssl_status: failed_caa (failure_reason: caa_blocks_letsencrypt)
Your domain has a CAA record that doesn't allow Let's Encrypt. The dashboard tells you exactly which CA your CAA permits.
What to do: add letsencrypt.org to your CAA, or remove the CAA records. See the SSL guide.
ssl_status: failed_rate_limit (failure_reason: acme_rate_limit)
Let's Encrypt's rate limit per registered domain has been hit. Usually because a previous host burned through the budget.
What to do: wait until the rate limit window resets (typically a week from when it was exhausted) and click "Retry SSL" on the provisioning page.
ssl_status: failed_dns (failure_reason: acme_dns_timing)
Our resolvers see your A record but Let's Encrypt's resolver still has a stale negative cache. The platform retries on a backoff schedule (1h / 6h / 24h).
What to do: wait through the auto-retries. If all three fail, click "Retry SSL" manually.
ssl_status: failed_other (failure_reason: acme_other)
Something else went wrong with SSL issuance. The platform doesn't auto-retry these because they're typically not transient.
What to do: contact support with the failure_detail message. Common root causes: Let's Encrypt outage, network issue between us and ACME servers, or an unexpected HTTP-01 challenge response.
Site is live but my changes aren't appearing
For static, React SPA
Browser cache. Hard-refresh (Cmd+Shift+R on macOS, Ctrl+Shift+R on Windows/Linux). If still stale, check your SFTP client confirmed the upload (some clients silently fail uploads to read-only paths or on quota errors).
For WordPress, Laravel, Django
Application-level cache. WordPress has its own object cache; Laravel has php artisan cache:clear; Django depends on what cache backend you've set up. CloudMagnus has a "Purge cache" button on the site detail page that flushes the nginx FastCGI cache, but framework-level caches are out of our reach.
For Next.js, Node.js, Python
You probably need to restart your app process after deploying. SSH in and restart your npm start / gunicorn / etc. We don't currently have an in-dashboard restart button for custom processes; that's on the roadmap.
I can't reach my site at all
In order: check the status pill in the dashboard. If "live," check the uptime monitoring panel. If both green, the issue is between you and us (your ISP, your DNS, your firewall). Try from a different network or use whatsmydns.net to see whether the problem is location-specific.
If the dashboard shows your site as down, the operator has been paged. Check our status page or wait for a status email.
Still stuck
Email [email protected] with: your account email, the affected domain, the failure_reason from the dashboard if there is one, and what you've already tried. Faster reply if you include all four than if we have to ask follow-up questions.