jmiller 3eb2562abd
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 18s
@
fix: pre-action backup fires for every extension, not one per 10 min

Root cause of "pre-update backup only fires on the backup extension":
a coarse 600s session throttle. Whenever ANY pre-action backup ran
(including updating MokoSuiteBackup itself, or a core Joomla update), the
key mokosuitebackup.preaction_backup_before_update was armed for 10
minutes. onBeforeCompileHead read it as `recentBackup` and DISABLED the
client-side interceptor for all extensions, and runPreActionBackup was
throttled by the same window. So after updating one extension, every
other extension update silently skipped its backup for 10 minutes.

Replace the time window with "one backup per Update action":
- runPreActionBackup dedupes per-request (a batch update fires the event
  once per extension in a single request -> back up once) via instance
  flags, and consumes a ONE-SHOT session skip flag for the re-fired
  client update/uninstall (skip once, next distinct action backs up).
- ajax.preupdateAck sets the one-shot flag for the SPECIFIC action
  (update|uninstall), passed from installer-backup.js via &msb_action and
  surfaced by Runbackup HtmlView -> CFG.action. A core update passes no
  action, so it never suppresses an extension backup.
- onBeforeCompileHead drops the recentBackup time-suppression (the
  re-fire loop is already guarded client-side by window.__msbResuming).
- The core Joomla update path uses its own key
  (mokosuitebackup.core_update_backed_up), decoupled from extensions.

Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i
@
2026-07-12 17:48:09 -05:00
@
2026-07-12 17:18:28 -05:00
@
2026-07-12 17:48:09 -05:00
@
2026-07-12 17:48:09 -05:00

MokoSuiteBackup

Full-site backup and restore for Joomla — database, files, and configuration.

Field Value
Package pkg_mokosuitebackup
Type Joomla Package (9 sub-extensions + MokoSuiteClient)
Joomla 6.x+
PHP 8.1+
License GPL-3.0-or-later

Features

Backup

  • Full site, database-only, files-only, and differential backup modes
  • Pre-flight validation — checks directory, disk space, extensions, credentials before starting
  • Auto-verify archive integrity after creation
  • Stepped AJAX engine prevents timeout on shared hosting
  • AES-256 ZIP encryption with configurable password
  • Configurable archive naming with placeholders ([HOST], [DATE], [SITE_NAME], etc.)
  • Per-profile retention — configure max backup count and max age (days) per profile, with global defaults
  • Data sanitization — optionally clear user passwords, emails, and sessions in backup

Content Snapshots

  • Lightweight JSON snapshots of articles, categories, and modules
  • Includes tags, custom fields, workflow associations
  • Restore modes: Replace (clean slate) or Merge (upsert)
  • Selective article restore — browse and pick individual items
  • Automatic retention (max count + max age)
  • Scheduled snapshot task via com_scheduler

Remote Storage

  • Multi-remote — upload to multiple destinations per profile simultaneously
  • SFTP with SSH key file auth + remote directory browser
  • Amazon S3 and S3-compatible (DigitalOcean Spaces, Wasabi, MinIO)
  • Google Drive with OAuth2 and resumable uploads
  • Graceful degradation — local backup preserved if upload fails

MokoRestore Standalone Wizard

  • 9-step restore wizard that works without Joomla installed
  • Per-table conflict resolution: Replace / Skip / Merge / Data Only
  • Post-restore actions: reset passwords, hits, versions, sessions, cache
  • Auto-detect sanitized passwords and prompt for reset
  • Standalone mode: restore.php scans directory for ZIP files
  • Wrapped mode: restore.php bundled inside backup ZIP
  • Security gate with filesystem verification

Notifications

  • Email on success/failure per profile
  • ntfy push notifications
  • Notifications for restore and snapshot operations

Admin Dashboard

  • Last backup status, next scheduled, total count, storage used
  • Snapshot widget with latest info and type badges
  • 30-day backup trend chart
  • Per-profile storage breakdown
  • System health checks

CLI

  • mokosuitebackup:run --profile=1 — run backup
  • mokosuitebackup:restore 1 --files-only --db-only --password=xxx
  • mokosuitebackup:snapshot create|restore|list|delete

REST API

  • Backup: start, list, download, delete, profiles
  • Snapshots: create, list, restore, delete, download
  • Profile credentials masked in API responses

Bundled: MokoSuiteClient

  • Full MokoSuiteClient package installed automatically alongside MokoSuiteBackup
  • Provides admin dashboard, security firewall, tenant management, and developer tools

Installation

  1. Download from Releases
  2. Joomla Administrator > Extensions > Install
  3. Components > MokoSuiteBackup > Dashboard

Documentation

See the Wiki for guides and reference.

License

GPL-3.0-or-later

Author

Moko Consultinghello@mokoconsulting.tech

S
Description
Full-site backup and restore for Joomla - database, files, and configuration
https://mokoconsulting.tech/support/products/mokosuitebackup Readme
5.6 MiB
2026-07-13 09:51:35 +00:00
Languages
PHP 98.8%
JavaScript 0.5%
CSS 0.4%
HTML 0.3%