VoltexaHubDocumentation1.8.0Install the beta
Browse documentation

Operations

Back up and restore

Protect the database, private uploads and application key as one consistent state.

On this page

What a complete backup contains#

Recoverable state is the MySQL database, private uploads and original APP_KEY together, plus a matching code release. A database-only backup loses attachments/avatars/branding; a missing key makes encrypted configuration unreadable.

Recovery bundles contain private member data and plaintext key material. Store them outside public/ in a restricted private destination, never source control. Check retention and protection with your hosting operator.

Create a consistent bundle#

Use mysqldump matching the supported MySQL server. Freeze all writers: maintenance mode, stopped queue workers, schedulers and external writes. Then run from the configured installation:

php artisan down
php scripts/recovery.php backup /private/backups/forum-YYYYMMDD --acknowledge-quiesced

The destination must be new. The bundle includes database SQL, uploads, key and a SHA-256 manifest. Checksums detect corruption, not trust in SQL. A failed/interrupted bundle is invalid: start again in a new directory. Restart appropriate services and run php artisan up after successful backup/checks.

Restore in isolation#

Create a separate installation with a new empty local supported MySQL database. Point its private environment at that isolated database. Use new private uploads/key paths:

php scripts/recovery.php restore /private/backups/forum-YYYYMMDD --uploads-target=/private/restore/uploads --key-output=/private/restore/recovered-key.env --acknowledge-isolated

The tool refuses nonlocal targets, the recorded source database, nonempty databases and unsafe paths. Restore only an operator-trusted bundle. Set APP_KEY from the private recovered key output without printing it, UPLOADS_ROOT to restored uploads, and serve the matching code version.

Verify the drill#

Check login, member visibility, attachments, avatars and custom branding. Confirm private files stay inaccessible without permission. Keep outbound mail/payment actions isolated during rehearsal. If partial MySQL DDL/import fails, diagnose it and retry into a new empty destination; do not delete the only source bundle.

Remote production recovery needs an operator-controlled equivalent and tested maintenance window; this helper intentionally restores only into local isolation. See full operations reference.