calmbackup / backup
Zero-knowledge encrypted backups for PHP applications
v1.0.1
2026-03-20 21:24 UTC
Requires
- php: ^8.2
- ext-curl: *
- ext-json: *
- ext-openssl: *
- ext-phar: *
- symfony/console: ^6.0|^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-03-22 19:00:15 UTC
README
Zero-knowledge encrypted backups for PHP applications. Your data is encrypted on your server before it leaves — we store only an opaque blob we can't read.
Works with any PHP application. Laravel gets artisan commands as a bonus.
Install
composer require calmbackup/backup
Setup
Any PHP app
vendor/bin/calmbackup init
Laravel
php artisan backup:install
Both wizards will:
- Validate your API key
- Generate your encryption key locally (never sent to us)
- Configure your database connection
- Save a recovery key file
Usage
Run a backup
# Laravel php artisan backup:run # Any PHP app vendor/bin/calmbackup run
Schedule daily backups
Laravel: Automatic — the service provider registers a daily backup at 02:00.
Any PHP app: Add to crontab:
0 2 * * * cd /path/to/project && vendor/bin/calmbackup run >> /dev/null 2>&1
List backups
php artisan backup:list # Laravel vendor/bin/calmbackup list-backups # Any PHP
Restore
php artisan backup:restore # Laravel vendor/bin/calmbackup restore # Any PHP
Status check
php artisan backup:status # Laravel vendor/bin/calmbackup status # Any PHP
Supported databases
- MySQL
- PostgreSQL
- SQLite
How it works
- Dumps your database using native tools (
mysqldump,pg_dump,sqlite3) - Archives the dump + optional directories into
.tar.gz - Encrypts with AES-256-GCM using your key
- Uploads the encrypted blob via presigned URL (direct to storage, never through our servers)
- Confirms the upload with the CalmBackup API
We never see your encryption key. We can't decrypt your backups. That's the point.
Requirements
- PHP 8.2+
- ext-openssl, ext-curl, ext-phar
- Database CLI tools in PATH (
mysqldump/mysql,pg_dump/pg_restore, orsqlite3)
License
MIT