type: update jpsVersion: 1.1 name: MightyBox WordPress Backup/Restore Addon id: mb-backup-manager description: Custom Backup and Restore Addon for WordPress using Restic. Supports backing up databases, core files, media files, and full backups with scheduling and retention policies. baseUrl: https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main targetNodes: nodeType: - nginxphp - litespeedphp - lemp - llsmp globals: envName: "${env.name}" onInstall: - checkAddons - installRestic - importScripts settings: backupSettings: submitUnchanged: true fields: - name: blabel caption: Backup Label type: string restoreSettings: submitUnchanged: true fields: - name: snapshotId caption: Snapshot ID type: string buttons: - caption: Backup Now action: backupnow loadingText: Backing up... confirmText: Do you want to initiate the backup process? successText: The backup process has been finished successfully. menu: - caption: Check Backup Repository confirmText: Do you want to check and repair the backup repository? loadingText: Checking and repairing backup repository... action: checkBackupRepo successText: Backup repository check completed successfully. title: Check Backup Repository submitButtonText: Run Check - caption: Core File Backup confirmText: Backup Core Files? loadingText: Backing up Core Files... action: backupcore successText: Core Files Backup Completed Successfully settings: backupSettings title: Backup Core Files submitButtonText: Backup Now - caption: Media Backup confirmText: Backup Media Files? loadingText: Backing up Media Files... action: backupmedia successText: Media Files Backup Completed Successfully settings: backupSettings title: Backup Media Files submitButtonText: Backup Now - caption: Database Backup confirmText: Backup Database? loadingText: Backing up Database... action: backupdb successText: Database Backup Completed Successfully settings: backupSettings title: Backup Database submitButtonText: Backup Now - caption: Restore confirmText: Restore from Snapshot? loadingText: Restoring... action: restore successText: Restore Completed Successfully settings: restoreSettings title: Restore from Snapshot submitButtonText: Restore Now - caption: View Full Backups action: viewFullBackups confirmText: Are you sure you want to view full backups? successText: Full backups listed successfully. - caption: View Core Backups action: viewCoreBackups confirmText: Are you sure you want to view core backups? successText: Core backups listed successfully. - caption: View Media Backups action: viewMediaBackups confirmText: Are you sure you want to view media backups? successText: Media backups listed successfully. - caption: View Database Backups action: viewDatabaseBackups confirmText: Are you sure you want to view database backups? successText: Database backups listed successfully. - caption: Auto Backup Sched action: checkBackupSched confirmText: Check the schedules for automated backups? successText: Backup Scheds. onUninstall: - removeScript onBeforeDelete: - removeScript onAfterRedeployContainer[cp]: - installRestic onAfterClone: - script: return {result:0, jps:MANIFEST}; - install: ${response.jps} nodeGroup: ${targetNodes.nodeGroup:cp} settings: cronTime: "0 * * * *" backupCount: "5" actions: checkBackupRepo: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/backup-logic.sh check_backup_repo "${globals.envName}" - return: type: info message: "${response.out}" backupnow: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/backup_all.sh "${globals.envName}" - return: type: info message: "${response.out}" backupcore: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/backup_core_files.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" backupmedia: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/backup_media.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" backupdb: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/backup_database.sh "${globals.envName}" "${settings.blabel}" - return: type: info message: "${response.out}" restore: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/restore_backup_direct.sh "${settings.snapshotId}" "${globals.envName}" - return: type: info message: "${response.out}" viewFullBackups: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/view_snapshots.sh main_backup - return: type: info message: "${response.out}" viewCoreBackups: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/view_snapshots.sh core_files - return: type: info message: "${response.out}" viewMediaBackups: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/view_snapshots.sh media_themes - return: type: info message: "${response.out}" viewDatabaseBackups: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/view_snapshots.sh wordpress_db - return: type: info message: "${response.out}" checkBackupSched: - cmd[cp]: user: root commands: bash /home/jelastic/mb-backups/check_sched.sh - return: type: info message: "${response.out}" checkAddons: - script: |- var onAfterReturn = { setGlobals: {} }, glbs = onAfterReturn.setGlobals, resp = api.marketplace.app.GetAddonList({ search: {}, envName: "${env.name}", session: session }); if (resp.result != 0) return resp; glbs["alreadyInstalled"] = false; for (let i = 0, n = resp.apps.length; i < n; i++) { if (resp.apps[i].isInstalled) { if (resp.apps[i].app_id == 'db-backup') { glbs["alreadyInstalled"] = true; break; } } } return { result: 0, onAfterReturn: onAfterReturn }; - if ('${globals.alreadyInstalled}' == 'true' ): - stopEvent: type: warning message: Database backup add-on is already installed on ${env.name}. Backup addon installation is not possible. installRestic: cmd [cp]: |- if which dnf >/dev/null 2>&1; then dnf install -y epel-release dnf install -y restic else yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo yum-config-manager --enable copr:copr.fedorainfracloud.org:copart:restic yum -y install restic yum-config-manager --disable copr:copr.fedorainfracloud.org:copart:restic echo "/var/log/backup_addon.log { weekly rotate 52 missingok notifempty compress copytruncate }" > /etc/logrotate.d/backup-addon fi user: root importScripts: - cmd[cp]: user: root commands: - mkdir -p /home/jelastic/mb-backups - mkdir -p /home/litespeed/mb-backups/logs - mkdir -p /home/litespeed/mb-backups/logs/auto - mkdir -p /home/litespeed/mb-backups/logs/manual - mkdir -p /home/litespeed/mb-backups/logs/restore - cd /home/jelastic/mb-backups - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/backup_all.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/backup_core_files.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/backup_database.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/backup_media.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/check_sched.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/manage_backup_schedule.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/restore_backup_direct.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/imports/view_snapshots.sh - curl -O https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main/scripts/backup-logic.sh - chmod +x /home/litespeed/mb-backups/*.sh