A website shows an error page or 'This site is temporarily unavailable.'
What you see
Section titled “What you see”A visitor, or you, opens the site and gets one of:
- A page headed “This site is temporarily unavailable.” with a sentence under it.
- A plain HTTP 503 page.
- 502 Bad Gateway or 504 Gateway Time-out from nginx.
- 403 or 404 for every page, including pages that exist.
- WordPress’s “critical error” page. That one is covered in WordPress shows a critical error.
Check what the server answers first:
curl -sI https://example.com/1. The site is suspended or in Trash
Section titled “1. The site is suspended or in Trash”The page “This site is temporarily unavailable.” is what a suspended site serves, with a status of 503. The sentence under it is the reason: “This site has expired.”, “This site exceeded its disk allowance.”, or the text typed when it was suspended manually. A site in Trash is offline the same way.
Check: open Hostings and find the site. The state pill reads suspended, or the site is listed in Trash.
Fix: click Resume in the site’s top bar. For a disk-quota suspension, free disk space or raise the limit first, otherwise the next check suspends it again. See Suspend, resume or delete a website and PHP versions and limits.
2. Maintenance mode is on
Section titled “2. Maintenance mode is on”With maintenance mode on, every request to the HTTPS site returns 503 and a “we’ll be back” page, while certificate renewals keep working.
Check: a MAINTENANCE badge shows at the top of the site’s page and on its row in the list.
Fix: open the site, then Settings & limits, untick Maintenance mode on the Vhost options card and click Save vhost options. See Manage domains and aliases.
3. PHP-FPM is not running or cannot start
Section titled “3. PHP-FPM is not running or cannot start”nginx answers 502 when it cannot reach PHP-FPM, and 504 when PHP does not answer in time.
Check: open Service health and look at the php<version>-fpm row for the site’s PHP version, see Check the health of a node’s services. From the node:
sudo hctl service listsudo journalctl -u php8.3-fpm -n 50 --no-pagerFix: click Restart on the row, or run sudo hctl service restart php8.3-fpm with the site’s version. If the site was switched to a version that is not installed, the PHP-version change failed with fpm_ensure for PHP 8.4 failed; install the version from Service health, then switch again.
4. Every PHP worker is busy
Section titled “4. Every PHP worker is busy”504 or very slow pages, while the FPM service is running, mean the site’s PHP pool is full. Raise PHP-FPM max_children within what the node’s memory allows, or find the slow request. The node also raises it by itself after the pool ran out of workers three times, unless you turned that off. See PHP versions and limits.
5. nginx cannot read the files
Section titled “5. nginx cannot read the files”A 403 or 404 for every page, right after an import, a restore or an unzip as root, usually means the document tree is not readable by nginx. Hyperion checks permissions every five minutes and repairs them. To repair at once:
sudo hctl hosting repair-perms example.comSee hctl hosting repair-perms. On a WordPress site, the Site health row says “the document root is missing or empty” for a 404 and names an access rule or an unreadable document root for 401 and 403, see Repair a broken WordPress site.
Apply the fix for the cause that matched. If a quick repair needs a fresh state, restore the latest good backup from the site’s Backups tab.
Check that it is fixed
Section titled “Check that it is fixed”curl -sI https://example.com/The first line reads HTTP/2 200 (or a redirect your site makes). The site’s state pill reads active.