Command reference
Every documented BOA command and helper tool, indexed straight from the documentation pages — each entry links back to the page that documents it.
| Command | Purpose | Documented in |
|---|---|---|
aegir2boa-preflight |
Read-only phase-0 discovery for a candidate vanilla Ægir box - inventories the estate and grades STAGE 1 / STAGE 2 PASS/WARN/FAIL, writing a human report and a machine contract under /tmp; writes only /tmp, installs nothing, SQL is SELECT/SHOW-only; A2B_NO_DRUSH=1 suppresses the one optional drush health check, A2B_ALLOW_BOA=1 permits inspecting a BOA box (verdicts stay FAIL), --aegir-root handles non-standard layouts; exit 0 report emitted, 2 precondition failure, 3 hard-floor bail | /operating/migration-cloning/aegir-to-boa |
aegir2boa-stage1 |
In-place Apache-to-Nginx flip on the vanilla source using Ægir's native http_service_type - verbs --flip / --revert / --status, every acting verb a DRY run unless --live; both stacks stay installed until sign-off so the revert is flipping back; scope is http_service_type apache only (apache_ssl experimental, cluster/pack refused); logs to /var/log/aegir2boa-stage1.log | /operating/migration-cloning/aegir-to-boa |
aegir2boa-stage2 |
The dual-resident migrator - source verbs (check/pre-mig/create/export/transfer/proxy/cert-sync/revert/resume/status) refuse to run on a BOA box and target verbs (import/target-status) refuse to run on a vanilla box; adopts the estate per-site or by whole-panel db-import, demotes the source to an HTTP(S) proxy with a per-site dotfile revert; every acting verb a DRY run unless --live; logs to /var/log/aegir2boa-stage2.log | /operating/migration-cloning/aegir-to-boa |
autosymlink |
Root worker for native files/private symlinking - global modes DRY (default) / report / live / batch / --batch-if-clean, plus narrow single-site mode --site <url> [--account <oNNN>] [--apply] [--force-unshare] used by the Provision install/clone/migrate hooks; crash-safe conversion, logs to /var/log/boa/autosymlink.log; a NOT CLEAN dry run ends with a read-only [EXPLAINED] section that re-probes each blocking finding and reports the diagnosis and fix (ghost alias, platform gone, migrate stranded, space, non-standard symlink) | /operating/files-symlinking/tools-reference |
clearwebbans |
One-shot idempotent recovery from web-IDS false positives - removes permanent 'Brute force Web Server' csf.deny entries and temporary 80/443 bans, clears web.log and scan_nginx archive logs plus the nginx-native IPv6 web-ban store (web6.tempban), resets the scan_nginx byte-offset to end of access.log, regenerates both nginx geo-ban sets (IPv4 via nginx_deny.sh, IPv6 via nginx_deny6.sh); SSH/FTP bans untouched; supports --dry-run; lock /run/clearwebbans.lock | /operating/abuse-guard/operations |
dhcpfix |
Safe-on-live-servers DNS recovery tool - installs the /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate no-op hook (so dhclient can never overwrite resolv.conf on lease renewal) and writes the canonical resolv.conf once (127.0.0.1 plus 1.1.1.1/8.8.8.8/9.9.9.9 fallbacks), leaving it mutable; no lease release/renew, no dhclient.conf rewrites; _DEBUG_MODE=YES env gives verbose [dhcpfix] output | /operating/troubleshooting/dns-resolver |
fix-drupal-site-symlinks.sh |
Hardened NOPASSWD sudo entry point (/usr/local/bin, 700 root) letting aegir/oN users trigger the root-level single-site conversion - accepts only --site=<url> [--account=<oNNN>] [--force-unshare], fail-closed token validation, cannot reach autosymlink's global batch/live modes; the documented manual recovery for incomplete clone unshares | /operating/files-symlinking/tools-reference |
floodreport |
Read-only summariser of Abuse Guard i18n-flood activity from /var/xdrago/monitor/log/i18n_flood.log and the per-trip snapshot dir - per-vhost event counts, timeline, merged attack profile and findings (SATURATION / LOAD-PAUSE / SHED / DETECT); options --days N, --hours N, --data DIR, --json | /operating/abuse-guard/operations |
hosting-dispatch |
Centralized command that dispatches the registered queue processors (tasks, cron, task_gc) | /developing/aegir-apis/hosting-api |
hosting-import |
Import an existing back-end context name into the front end | /developing/aegir-apis/hosting-api |
hosting-pause |
Prepare the hostmaster site to be migrated to a new platform | /developing/aegir-apis/hosting-api |
hosting-resume |
Complete the migration of the hostmaster site to a new platform | /developing/aegir-apis/hosting-api |
hosting-setup |
Set up initial configuration such as the cron entry for the queue dispatcher | /developing/aegir-apis/hosting-api |
hosting-task |
Execute a specific queue item (one Ægir task node) | /developing/aegir-apis/hosting-api |
loadguard |
Standalone load-policy CLI (verbs enforce | ok-tasks | ok-spiders | run-tasks) installed at /opt/local/bin/loadguard but NOT wired into any shipped crontab - manual-only placeholder orchestrator; second.sh remains the live load-control enforcement path; kill filter targets only processes older than _KILL_MIN_RUNTIME (900 s default) | /operating/monitoring/load-control |
loadreport |
Read-only /proc load profiler answering which recurring BOA agents drive idle load - modes live (default), --json, --log (append daily JSONL history), --data (summarise an off-node corpus); header shows the box's live monitor-throttle class; cron-logged every 30 min at idle priority | /operating/monitoring/loadreport |
migratefs |
Operator-only relocation of account static/files stores and shared /data/disk/arch onto the single attached /mnt filesystem, symlinked back (<mount>/files/<oN>/static/files and <mount>/files/system/arch) - DRY plan by default, --apply to perform; options --target <mount>, --account <oN> (implies skipping arch), --no-arch, --yes, --grace <sec> (default 15); refuses to run with more than one /mnt mountpoint; never scheduled/automated | /operating/migration-cloning/migratefs-storage-relocation |
owl.sh |
Nightly maintenance orchestrator (/var/xdrago/owl.sh, replaces daily.sh) - freezes run state into /run/night/run.env and dispatches the night/ workers (night.inc.sh, 10-account.sh, 20-sites.sh, 90-global-post.sh); launched from root crontab at 04:15; optional parallel account fan-out via _NIGHT_PARALLEL/_NIGHT_MAX_PARALLEL; per-account logs /var/log/boa/daily/acct-<user>-<NOW>.log; xoct/xcopy disable toggle /var/xdrago/.owl.sh.off; skips entirely on /root/.proxy.cnf or /root/.pause_heavy_tasks_maint.cnf boxes | /operating/monitoring/nightly-owl |
provision-backup |
Generate a backup tarball of DB, files and config | /developing/aegir-apis/provision-api |
provision-clone |
Clone a site to a new name on the same platform | /developing/aegir-apis/provision-api |
provision-delete |
Backup and remove a site, or remove an empty platform | /developing/aegir-apis/provision-api |
provision-deploy |
Re-deploy a backup tarball with pre and post upgrade hooks | /developing/aegir-apis/provision-api |
provision-disable |
Disable a running site by swapping its vhost for a disabled redirect | /developing/aegir-apis/provision-api |
provision-dlock |
Lock a platform's local (vendor) Drush - thin wrapper that auto-fixes the platform root and delegates to the canonical lock path used by Platform Verify; detection-based idempotent (re-running in the locked state is a clean no-op) | /developing/aegir-apis/provision-api |
provision-dunlock |
Unlock a platform's local Drush before vdrush/composer work; idempotent, and Verify/upgrade re-locks all platforms automatically | /developing/aegir-apis/provision-api |
provision-enable |
Re-enable a disabled site | /developing/aegir-apis/provision-api |
provision-import |
Detect existing site directories on a platform and register them as Ægir site nodes | /developing/aegir-apis/provision-api |
provision-install |
Install a new Drupal site (DB, files, vhost, install profile) | /developing/aegir-apis/provision-api |
provision-lock |
Lock a platform against new site creation | /developing/aegir-apis/provision-api |
provision-login-reset |
Generate a one-time admin-login URL for the site | /developing/aegir-apis/provision-api |
provision-migrate |
Move a site to a different platform (used for Drupal-version upgrades) | /developing/aegir-apis/provision-api |
provision-restore |
Revert a site to a previous backup tarball | /developing/aegir-apis/provision-api |
provision-save |
Save a context to disk (used internally by other commands) | /developing/aegir-apis/provision-api |
provision-stats |
Return Drupal stats such as user count and post count | /developing/aegir-apis/provision-api |
provision-unlock |
Unlock a platform so new sites can be created again | /developing/aegir-apis/provision-api |
provision-verify |
Re-emit Nginx vhost and settings.php from current Ægir context (idempotent) | /developing/aegir-apis/provision-api |
stackbuild |
Builder-mirror tool that snapshots, packages and publishes the heavy stack components (Modern/Legacy OpenSSL, ICU, cURL and each selected PHP) that a real barracuda upgrade just built, as prebuilt per-component .deb.gz packages with sha256 sidecars; verbs check, package, publish, sync, all; refuses to run unless _USE_PREBUILT_PKGS=NO on the builder box; run daily from cron | /developing/prebuilt-builder-pipeline |
staticbuild |
Mirror-source builder for the newer Drupal core and distribution test codebases (plus the Backdrop family) that publishes them to /var/www/static/{core,distro,dev/{dev,lts,pro}}; run as root on the mirror-source VM, builds as the Octopus user (o8, -u overrides); subcommands check / all / build / package / distribute / backdrop, every published version derived from the actual build | /developing/build-test/staticbuild-test-codebases |
symlinkinfo |
Read-only query of one or more sites' files-symlink and archive history from autosymlink logs plus the live filesystem - reports conversions, State NOW (active/disabled/deleted/partial), Store NOW and every archive event; options --logs-only, --fs-only, --log-dir DIR, --disk-root DIR | /operating/files-symlinking/tools-reference |
updatesymlinks |
Root wrapper around autosymlink with queue pausing, locking, load guards and email - 'updatesymlinks --auto-fix' (gated by _AUTOSYMLINK_NIGHTLY=YES) pauses the Ægir queue, waits _AUTOSYMLINK_PAUSE_GRACE (240 s default), then runs the batch-if-clean apply; '--orphan-report' (gated by _ORPHAN_FILES_REPORT=YES) is read-only and never pauses tasks; argless run = legacy full manual mode; '--debug|-d' explains why a run did nothing; cron line 47 0-5,22,23 * | /operating/files-symlinking/nightly-automation |