Jonathan Miller 9656a2a92b
Generic: Project CI / Tests (push) Blocked by required conditions
Generic: Project CI / Tests (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (push) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Generic: Project CI / Lint & Validate (push) Successful in 11s
Universal: Auto Version Bump / Version Bump (push) Successful in 4s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 10s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 8s
Universal: PR Check / Validate PR (pull_request) Failing after 8s
Generic: Project CI / Lint & Validate (pull_request) Successful in 35s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 38s
fix: PR #46 review — error handling, failure notifications, cleanup
Critical:
- Wrap cleanupOldBackups() in try-catch to prevent admin panel crash
- Add missing fields (total_size, files_count, etc.) to failure record
  so failure notifications actually send

High:
- Log unlink failures in deleteBackupRecord() instead of silent return
- Wrap DB delete in try-catch so one failed record doesn't abort loop
- Check for ext-curl before calling curl_init() in sendNtfy()

Medium:
- Change runPreActionBackup catch from \Exception to \Throwable
- Log warning for skipped files during archive encryption
- Truncate ntfy response body in error logs (200 chars max)
2026-06-18 10:26:48 -05:00

MokoSuiteBackup

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

Overview

MokoSuiteBackup is a comprehensive backup solution for Joomla 4/5/6 sites. It creates complete site backups including the database, files, and configuration, packaged into downloadable ZIP archives. Supports multiple backup profiles, scheduled backups via CLI/cron, and a REST API for remote management.

Features

  • Full site backup (database + files + configuration)
  • Database-only backup mode
  • Files-only backup mode
  • Multiple backup profiles with independent configurations
  • File and directory exclusion filters
  • Table exclusion filters for database backups
  • Step-based backup engine (avoids PHP timeout on large sites)
  • CLI script for cron/scheduled backups
  • REST API (Joomla Web Services) for remote management
  • Backup record management (list, download, delete)
  • Automatic old backup cleanup (configurable retention)
  • Admin dashboard with backup history and storage usage

Installation

  1. Download pkg_mokobackup-*.zip from Releases
  2. Joomla Administrator > Extensions > Install
  3. System plugin enabled automatically on install

Configuration

  • Component: Administrator > Components > MokoSuiteBackup
  • Profiles: Create backup profiles with different file/database filters
  • System Plugin: Configure scheduled backup triggers and notifications
  • CLI: php cli/mokobackup.php --profile=1 for cron-based backups

REST API

The webservices plugin exposes endpoints compatible with the MokoBackup MCP server:

  • POST /api/index.php/v1/mokobackup/backup — Start a backup
  • GET /api/index.php/v1/mokobackup/backups — List backup records
  • GET /api/index.php/v1/mokobackup/backup/:id/download — Download archive
  • DELETE /api/index.php/v1/mokobackup/backup/:id — Delete backup record
  • GET /api/index.php/v1/mokobackup/profiles — List backup profiles

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
1.2 MiB
2026-06-19 09:10:06 +00:00
Languages
PHP 95.8%
Shell 2%
Makefile 1.7%
HTML 0.5%