Skip to content

Powered by Grav

BOA-5.88.811 — Cadence Edition

BOA-5.88.811 — Cadence Edition

BOA-5.88.811 PRO/LTS is the Cadence Edition — the first release under BOA's new rapid-release rhythm, and the direct sequel to the Continuity milestone. Where 5.88.8 gave every generation of the Drupal family a first-class home on one platform, 5.88.811 makes that home tidier and reaches it faster: interrupted tasks no longer strand invisible leftovers, the prebuilt stack packages that transformed install times on Devuan Daedalus now reach Devuan Excalibur, and the Backdrop CMS integration introduced last cycle gets its first round of real-world polish, and modern systems now apply their own OS security updates automatically between releases. And the version number itself is new — 5.88.8 has become 5.88.811, which is worth a word before the features.

In total, 40 commits across four repositories went into this release:

Repository Branch Commits
omega8cc/boa 5.x-dev 28
omega8cc/provision 5.x-dev 7
omega8cc/hosting 5.x-dev 4
omega8cc/hosting_custom_settings 5.x-dev 1

Even the single hosting_custom_settings commit earns its place: it refreshes the fleet's default permission map so this release's new control-panel tasks land in front of the right roles out of the box, rather than waiting on a per-instance grant.

As always for the Cadence releases, the LTS edition remains fully current alongside PRO — every change below ships for both PRO and LTS. This release needs no reboot beyond the ordinary upgrade flow, no OS upgrade gate, and no new mandatory control file.

Reading the Version: 5.88.800 → 5.88.811

BOA is moving to a deliberately rapid, small-release rhythm, and the patch number now carries the story of each release on its face. From 5.88.8 onward the patch is a three-digit figure read as 8XY, with the baseline 5.88.8 counting as 5.88.800:

  • Y (the ones digit) advances for bugfix content.
  • X (the tens digit) advances for feature and component content.
  • A combined release that carries both advances both digits at once.

This release carries substantial new capability and a round of fixes, so it is a combined release: +11 on 5.88.800 lands it at 5.88.811. The point of the scheme is visibility — releases become small and frequent, so the pace of work shows up in the release stream itself instead of being buried in commit history. Everything continues to happen firmly in the 5.x tree; the eights carry the Continuity line forward, and the number simply counts as it grows.

Leftover Management for Interrupted Tasks

The headline feature of this release is a brand-new, CMS-neutral capability — it works the same for Drupal and for Backdrop sites. When a migrate, clone or restore task is interrupted or aborted partway through, it could previously leave behind a half-built site directory, and sometimes an orphaned copy database, with nothing in the control panel to show for it. Those leftovers were effectively invisible, and cleaning them up meant a trip to the shell.

That is now a managed, first-class part of the platform:

  • Automatic skip-and-record. Verify now recognises the leftovers an interrupted task left behind, skips them cleanly, and records each one per platform instead of tripping over it or importing a broken site.
  • A "leftover import" platform task surfaces each recorded leftover in the control panel as a disabled, badged placeholder site, owned by the base site's own client — so what was invisible is now something you can see, attribute and decide about.
  • A "leftover purge" task, tenant-bound and the only button on such a placeholder, cleanly removes the leftover directory and any provably-orphaned copy database. The database drop is fleet-wide gated — a name is never dropped while any live site row still references it — and the whole operation is host- and server-bound on the backend, so a purge can only ever remove its own tenant's stray artefacts.
  • Root-level operator commandsprovision-leftover-import and provision-leftover-purge — give operators the same reach directly from the shell, for scripted or fleet-wide cleanups.

The whole capability was validated as a full twelve-leg VM test matrix, green across the interrupted-task shapes it is designed to catch.

Prebuilt Stack Packages Reach Devuan Excalibur

BOA-5.88.8 introduced prebuilt .deb stack packages on Devuan Daedalus, cutting installs and upgrades from a long build to a short one. This cycle extends that reach to the next Devuan release:

  • Prebuilt packages default to YES on Devuan Excalibur too. Fresh installs and upgrades on Excalibur now consume the prebuilt boa-* stack packages instead of compiling from source, with the same per-component fallback to a source build if a package cannot be fetched. An explicit _USE_PREBUILT_PKGS=NO in the cnf still wins, so a box that prefers to build from source can say so.
  • Every PHP version BOA builds now compiles natively on Excalibur. The GCC-14 toolchain on Excalibur needed porting work across the build CFLAGS — including for the legacy PHP versions BOA still carries — so the whole build estate is Excalibur-ready, not just the prebuilt path.

The prebuilt path was proven end to end on a fresh Excalibur VM — and it changes what an install feels like. Measured on a modest 4-core AMD cloud VM (4 vCPU / 8 GB): a fresh single-PHP BOA install reaches a serving Ægir control panel — master and first satellite — in about 25 minutes on a ready Devuan base, and under 40 minutes from a bare Debian 13 VM including the automatic conversion to Devuan Excalibur.

Backdrop CMS, Refined

The Backdrop CMS support that debuted in the Continuity Edition gets its first pass of real-world polish, so day-to-day Backdrop work feels as settled as the Drupal work beside it:

  • Smoother conversions and migrations. Backdrop conversion and migrate runs are steadier across the board — validated as a twelve-leg task matrix, green under both PHP 8.4 and PHP 8.3, and re-verified a second time from a zero-overlay, mirror-delivered install so the shipped package itself is proven, not merely the code in the tree.
  • A dependable admin bar. Backdrop's own admin-bar cache callback is served reliably again: BOA's Nginx /js/ handling now falls through to the front controller where Backdrop core serves that request, so the admin bar stays present instead of intermittently vanishing. A stale menu router after a Drupal 7-to-Backdrop conversion is resolved by rebuilding the registries in a fresh process at the end of the conversion. Both were confirmed end to end in a real browser on a live box.
  • bee on the same footing as Drush. Backdrop's command-line companion is now staged and normalised exactly the way Drush is, so it behaves consistently inside the safe shell.
  • A tidier panel for Backdrop. Upgrade tasks that apply to the wrong major version are hidden, Backdrop task titles are shortened, and task action buttons are kept on a single line. Informational requirement rows in the Backdrop update-database task log are reported as info rather than dressed up as warnings.

Boxes that opted out of Backdrop during the 5.88.8 rollout are gently brought back to the current default so they pick up this refined integration — see Operator Notes for exactly what that means and how to keep Backdrop off if you genuinely want it off.

Automatic OS Security Updates

Modern systems now keep themselves patched between BOA releases: security-only unattended upgrades are on by default on Devuan Daedalus and Excalibur and Debian Bookworm and Trixie. Updates come exclusively from the distribution's own security archive, so a freshly disclosed vulnerability is not left waiting for the next barracuda run:

  • Security-only, by construction. General package upgrades remain barracuda's job, and the stack components BOA builds itself — Nginx, PHP, Percona — are excluded outright.
  • No surprise reboots. A new security kernel is activated only through BOA's own gated, graceful reboot flow — exactly the behaviour hosted systems already know; Automatic-Reboot stays off.
  • Convergent and respectful. Boxes that already ran unattended upgrades (a common cloud-image default) are converged, not duplicated, and a customised setup is never torn down. Opt out at any time with _SYSTEM_AUTO_SECURITY=NO — an explicit NO stops BOA managing the configuration without removing anything.

Fresh Mirrors for the Distribution Network

The network that serves BOA's package and fetch traffic gains two fresh, redundant mirrorsfiles.aegir.biz and files.aoboshi.com — joining the mirror seed:

  • The fast-mirror seed advances to the current dated list so existing boxes regenerate it with the two new hosts. The seed only writes when it is absent, so an operator's customised mirror list is preserved untouched.
  • The new mirror hosts are wired in cleanly: paired CSF allow rules for the mirror traffic, and a web-IDS exemption for the two new vhosts that is matched positionally on the parsed vhost host field. That positional match is the point — heavy, legitimate mirror traffic is exempted, while a files.* token smuggled into a request URI, Referer or User-Agent cannot launder its way into the same exemption.

The cutover adds the new mirrors with zero fleet downtime.

Documentation Alignment

The move to the unified documentation site is now complete across the live tree:

  • Every live script, tool, INI template and doc points at docs.boa.io or a pinned canonical upstream URL. The legacy bit.ly shortlinks are fully retired from the live tree.
  • The per-instance control-files README was rewritten as a compact cheat sheet that links straight into docs.boa.io, rather than trying to carry the reference itself.
  • The nightly release-reminder email now points at docs.boa.io/releases, where these notes and every future release live.

Operator Notes

This release has no mandatory action — no forced reboot beyond the usual upgrade flow, no OS upgrade gate, and no new control file to pin. Three default-resolving knobs are worth a conscious decision:

  • Automatic OS security updates default to on for Devuan Daedalus/Excalibur and Debian Bookworm/Trixie. Set _SYSTEM_AUTO_SECURITY=NO to manage OS security updates yourself; opting out stops BOA managing the configuration and removes nothing.
  • Prebuilt packages now default to YES on Devuan Excalibur as well as Daedalus. Set _USE_PREBUILT_PKGS=NO to keep compiling the stack from source on those releases; an explicit cnf value always wins, and other OS releases are unaffected.
  • A one-time heal restores the current Backdrop default. A box that set _BACKDROP_SUPPORT=NO during 5.88.8's opt-in rollout is brought back to YES once, gated by an internal migration marker, so estates that opted out before Backdrop was fully baked pick up the complete, refined integration. If you deliberately do not want Backdrop platforms built, set _BACKDROP_SUPPORT=NO again after upgrading — an explicit value written after the marker is honoured as a settled operator choice and stays put.

PRO/LTS parity holds — everything in this release ships in both trees.

Component Versions

Two stack components move this cycle: Valkey refreshes to 9.1.1, and Backdrop CMS to 1.34.3 -- the platform builds picked up the same-day upstream maintenance release automatically. Otherwise the Cadence Edition is a code release riding the exact stack shipped with BOA-5.88.8 — the Devuan Excalibur work is build-toolchain and packaging, not a version change. The current set:

Component Version
Nginx 1.31.3
Valkey 9.1.1
OpenSSH 10.4p1
PHP 8.5.8, 8.4.23, 8.3.32 (8.4 remains the default CLI/FPM), 8.2.32 available
Composer 2.10.2
Drush 8 (classic) 8.5.4
New Relic 12.8.0.37
Backup stack Python 3.14.6 + Duplicity 3.1.0
Backdrop CMS 1.34.3
ImageMagick distro-packaged

Also unchanged since BOA-5.88.8: OpenSSL 3.5.7 LTS, cURL 8.21.0, Apache Solr 9.10.1, Percona Server (8.4 current, 5.7 legacy), mydumper. The tested Drupal and Backdrop distribution catalogue carries over from the 5.88.8 build.

Important Fixes

  • Daily log rotation reliably re-opens nginx logs. The stock logrotate postrotate calls an init-script action the nginx init script did not implement, so the daily logrotate cron failed and nginx kept writing to the renamed files until the next reload. The init script now implements the rotate action, signalling nginx to re-open its logs (and succeeding harmlessly when nginx is intentionally stopped); deployed servers pick up the updated script automatically on the next barracuda run.
  • Backdrop conversion and migrate fatals cured. A class of intermittent fatal errors during Backdrop conversion and migration is resolved along the config-path arc: sites.php is kept truthy before the first deploy bootstrap, the views module is loaded before the Drupal 7 conversion update batch, and the boot layer's config-path arguments are passed through at stage time. Validated as a twelve-leg task matrix under PHP 8.4 and 8.3, plus a zero-overlay, mirror-delivered re-verify.
  • Backdrop admin bar served reliably. Nginx /js/ handling falls through to the front controller when a static js.php is absent, so Backdrop core's admin-bar client-cache callback is served instead of starved; and a stale menu router after a Drupal 7-to-Backdrop conversion is fixed by rebuilding the registries in a fresh process at the end of the conversion.
  • Backdrop restore credentials reloaded in time. Database credentials are reloaded before the restore task re-renders its maintenance settings, so the live credentials are no longer blanked for the restore window — and an aborted restore can no longer strand a credential-less leftover.
  • websh keeps per-account PHP selection on a malformed prefix. The safe-shell wrapper preserves the argument list — and with it the per-account PHP-CLI selection — even when handed a malformed COLUMNS prefix, instead of blanking the arguments and re-running the command under the wrong PHP. BOA's own wrappers always emit a well-formed value, so this was a latent edge in practice, but a real one; VM-proven.
  • clearwebbans reports again. The operator tool no longer redirects its own error output to /dev/null, so its "already running" message and any later error reach the operator.
  • Satellite vhost sync converges for any tool vintage. The satellite per-domain SSL-proxy vhost sync now strips kTLS from the regenerated front when a box opts out via its no_ktls control file, so the sync converges regardless of the fetched-tool vintage on the box — a self-healing hardening for a real staleness class.
  • Quieter task logs. websh no longer runs its prefix-strip on a non-matching line, eliminating stray "no previous regular expression" noise from the logs of non-Drush /bin/sh commands; the filtering semantics are byte-for-byte identical.

Upgrade Instructions

Run inside a screen session as root:

SH
screen
wget -qO- https://files.boa.io/BOA.sh.txt | bash
barracuda up-lts
octopus up-lts all force
boa reboot

For silent, logged mode (output to /var/backups/reports/up/, emailed on completion — useful for cron):

SH
screen
wget -qO- https://files.boa.io/BOA.sh.txt | bash
barracuda up-lts log
octopus up-lts all force log

Full upgrade documentation: Manual BOA upgrade reference Self-upgrade automation: SELFUPGRADE reference

© 2026 BOA Documentation. All rights reserved.