Skip to main content

Documentation

No results found.
Features

Server Page

Dashboard → Develop → Server (Admin+) shows what machine the site runs on and how loaded it is right now — the answer to "is the site slow because of the server?" without SSH access.

What it shows

Live tiles (refresh every 10 seconds via polling):

Tile Value Notes
Load average 1-minute load, with 5/15-minute sub-line Utilisation bar normalises against the core count
CPU usage Overall busy % since the previous poll Reads — on the first render; the number appears from the second poll (it's a delta between two /proc/stat samples)
Memory Used % with used/total sub-line "Available" follows the kernel's MemAvailable, so reclaimable cache counts as free
Disk Free space with total sub-line For the filesystem holding the install

Utilisation bars go amber at 70% and red at 90%.

Spec cards:

  • Server — hostname, OS + kernel, architecture, processor model, core count, total memory, the user the PHP process runs as, web server, uptime, and the current server time in the site timezone.
  • PHP & Database — PHP version + SAPI, memory limit, max execution time, upload limits, OPcache status (with hit rate), and the database engine + version.

Rows whose probe came back empty are dropped, so a locked-down host shows a shorter list instead of blanks.

Dashboard widget

The Server card shows the 1-minute load average and free disk on the dashboard homepage, linking to the full page. On by default; sites can hide it via Dashboard → Customize. (Sites that saved a Customize selection before this card shipped keep their saved set — they opt in from the same modal.)

How probing works (no root, locked-down PHP)

All data comes from app/Support/ServerStats.php, which layers three strategies and degrades to null at every step — mirroring the HostCapabilities philosophy that nothing hard-fails on a missing function:

  1. Pure PHP first — sys_getloadavg(), disk_free_space(), php_uname(), ini_get() are plain syscalls unaffected by open_basedir and absent from common disable_functions lists (only the legacy alias diskfreespace typically appears).
  2. /proc reads second — /proc/cpuinfo, /proc/meminfo, /proc/stat, /proc/uptime are world-readable by design; no root needed.
  3. proc_open subprocess last — subprocesses aren't bound by open_basedir, so a cat/sysctl/whoami covers hosts that block the direct read. RunCloud's stock disable_functions list keeps proc_open enabled while blocking exec/shell_exec/system/popen — the installer relies on that (its live preflight warns if a needed function is blocked).

macOS dev boxes (Herd) have no /proc; the sysctl/vm_stat fallbacks cover CPU model, cores, memory, and boot time there.

Hardware facts (CPU model, cores, total memory) are cached for an hour; live numbers are never cached. The CPU % baseline sample is kept in the cache between polls.

Things that genuinely need root — exact hardware model (dmidecode), SMART disk health, other users' process details — are deliberately out of scope.