ramon / backup
Full backups and one click migration for Flarum 2
Requires
- flarum/core: ^2.0.0
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2026-06-18 23:20:31 UTC
README
Backup & Migration
Full backups and one click migration for Flarum 2.
Backup & Migration packs your whole forum into a single portable .flarum file: database, uploads, storage and extensions. Restore it on the same install or on a brand new server and keep going.
I wrote it after one too many rounds of the mysqldump and zip dance while moving forums between hosts. It ended up becoming something close to what All-in-One WP Migration is for WordPress, just built natively for Flarum.
What it does
- Exports everything into one streaming
.flarumfile, so multi GB forums never need to fit in memory - Lets you pick what goes in: database, assets, storage and individual extensions
- Restores with per section and per extension checkboxes, resumable in chunks
- Migrates between database engines: export from MySQL, restore on PostgreSQL, MariaDB or SQLite
- Rewrites the forum URL automatically when restoring on a different host
- Encrypts archives with libsodium when you ask it to, including transfers to another server's public key
- Ships
composer.jsonandcomposer.lockinside the archive, so vendor extensions stay reproducible
Installation
composer require ramon/backup php flarum migrate php flarum cache:clear
Then enable Backup & Migration on the Extensions page of the admin panel.
Command line
The same engine runs as console commands, with no HTTP timeout and no browser tab to babysit. Best route for large forums and cron jobs.
php flarum backup:export --all # everything php flarum backup:export --db --target=postgres # database only, retargeted to another engine php flarum backup:import /backups/forum.flarum --yes
A restore replaces the destination data, so backup:import refuses to run without --yes. Use --help on either command for the full list of flags.
About encryption
Encrypted archives use a libsodium sealed box wrapping a per archive stream key. The public key lives in the database, the private key only in config.php. Keep that private key safe: without it an encrypted archive cannot be opened.
License
MIT. Found a bug or have an idea? Open an issue.