Checks
39 checks, learned on servers we run.
All read-only. Hostio runs them on every scan and lists what it finds, danger first.
Scheduler & queues 10 Deploys 9 PHP 5 Certificates 5 Access & keys 5 Database 2 Panel records 3
| 01 | scheduler_missing | The scheduler is not running | danger |
| 02 | queue_mismatch | The worker listens to the wrong queue | danger |
| 03 | duplicate_queue_worker | Two workers on one queue | warning |
| 04 | queue_retry_after_short | Jobs that run twice | warning |
| 05 | opcache_full | OPcache is full | warning |
| 06 | php_version_drift | The panel and nginx disagree on PHP | danger |
| 07 | certificate_expiring | A certificate that will not renew in time | warning |
| 08 | ssh_key_not_allowed | A root key nobody listed | danger |
| 09 | mysql_remote_root | MySQL open to any host | danger |
| 10 | deploy_script_reload | A deploy that reloads PHP-FPM | warning |
| 11 | cron_path_missing | A cron pointing at nothing | danger |
| 12 | git_credentials_in_url | A password inside a git remote | danger |
… + 27 more
| 13 | daemon_path_missing | A daemon pointing at nothing | danger |
| 14 | duplicate_scheduler | Two schedulers | warning |
| 15 | cron_drift | The panel and the box disagree on a cron | warning |
| 16 | non_ploi_cron | A cron the panel does not know | info |
| 17 | non_ploi_supervisor | A daemon the panel does not know | info |
| 18 | deploy_sh_missing | The deploy script calls a missing file | danger |
| 19 | deploy_failed_recent | The last deploy failed | warning |
| 20 | deploy_head_mismatch | The box is not on the deployed commit | warning |
| 21 | deploy_steps_in_ploi | Deploy steps outside the repository | warning |
| 22 | deploy_double_trigger | One push, two deploys | warning |
| 23 | git_dirty_tree | Files edited on the server | warning |
| 24 | deploy_no_lock | Deploys that can overlap | info |
| 25 | deploy_extra_copies | Stale copies of the deploy script | info |
| 26 | php_extension_missing | A missing PHP extension | info |
| 27 | orphan_fpm_pool | A PHP pool nothing uses | info |
| 28 | fpm_pool_no_max_requests | PHP workers that never recycle | info |
| 29 | certificate_expired | An expired certificate in use | danger |
| 30 | certificate_renewal_mechanisms | Two things renew certificates | warning |
| 31 | certificate_unserved | A certificate nothing serves | info |
| 32 | certificate_expired_unserved | An expired leftover certificate | info |
| 33 | unknown_root_key | A root key nobody can name | warning |
| 34 | stale_sudoers_user | A sudo rule for a deleted user | warning |
| 35 | mysql_root_unreachable | MySQL refuses the root socket login | warning |
| 36 | orphan_mysql_user | A MySQL account with no database | info |
| 37 | tenant_include_missing | Tenant sites no longer served | danger |
| 38 | duplicate_server_name | A domain listed twice | info |
| 39 | ploi_tenant_stale | The panel's tenant list is stale | info |
Where the checks come from.
5 weeks
A folder rename stopped the scheduler and nobody noticed.
Hostio compares the scheduled tasks the code defines with the cron lines that run them.
scheduler_missing42,000 jobs
The worker read one queue, the site wrote another, for five months.
Hostio pairs the queues in the site's .env with the workers that listen to them.
queue_mismatch3.7 s
A full OPcache made a WordPress page compile on every request.
Hostio compares the OPcache size with the PHP files its sites hold.
opcache_full