PHPackages                             fomvasss/laravel-backup-ui - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. fomvasss/laravel-backup-ui

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

fomvasss/laravel-backup-ui
==========================

Web interface for spatie/laravel-backup package

1.4.0(2mo ago)1427↓17.2%MITPHPPHP ^8.0CI failing

Since Jan 18Pushed 2w agoCompare

[ Source](https://github.com/fomvasss/laravel-backup-ui)[ Packagist](https://packagist.org/packages/fomvasss/laravel-backup-ui)[ Fund](https://send.monobank.ua/jar/5xsqtHvVrY)[ Fund](https://ko-fi.com/fomvasss)[ RSS](/packages/fomvasss-laravel-backup-ui/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (20)Versions (8)Used By (0)

Laravel Backup UI
=================

[](#laravel-backup-ui)

[![Latest Version on Packagist](https://camo.githubusercontent.com/d58e554d3760caf101912e6e2a176d6b3c0a6f7b9f2e941dc9dcbc00779a40f7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666f6d76617373732f6c61726176656c2d6261636b75702d75692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fomvasss/laravel-backup-ui)[![Total Downloads](https://camo.githubusercontent.com/cdcfa2827d39f1f752199c6d0ebafe83fe23d45278c119fac162c3c428a5e7de/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666f6d76617373732f6c61726176656c2d6261636b75702d75692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fomvasss/laravel-backup-ui)

A beautiful web interface for managing [spatie/laravel-backup](https://github.com/spatie/laravel-backup) package. Built with Bootstrap 5 and designed to be easily integrated into any Laravel admin panel.

Features
--------

[](#features)

- Convenient web UI, built with Bootstrap 5
- Backup status monitoring
- Create backups (full, database-only, files-only)
- Restore a backup's database dump (local environment only)
- Shows the current `database.default` connection (name, driver, database, host) and whether restore supports it
- Asynchronous backup creation and restore via queues, with real-time progress tracking
- Download and delete individual backups
- Clean old backups
- Flexible authentication system
- Responsive design
- Laravel Horizon support

Screenshots
-----------

[](#screenshots)

[![Backup Management Interface](screenshot.jpg)](screenshot.jpg)

Requirements
------------

[](#requirements)

- PHP ^8.2
- Laravel ^10.10|^11.0|^12.0|^13.0
- spatie/laravel-backup ^9.0|^10.0

> **Note:** since v2.0.0 this package no longer supports `spatie/laravel-backup` v8. If you're on v8, stay on `^1.4` of this package or upgrade `spatie/laravel-backup` first — see the [v9 upgrade guide](https://github.com/spatie/laravel-backup/blob/main/UPGRADING.md) and [v10 upgrade guide](https://github.com/spatie/laravel-backup/blob/main/UPGRADING.md).

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require fomvasss/laravel-backup-ui
```

Publish the configuration file:

```
php artisan vendor:publish --tag=backup-ui-config
```

Optionally, you can publish the views:

```
php artisan vendor:publish --tag=backup-ui-views
```

Configuration
-------------

[](#configuration)

The configuration file `config/backup-ui.php` allows you to customize the package:

```
return [
    // Route prefix for the backup UI
    'route_prefix' => 'backup',

    // Middleware to apply to routes
    'middleware' => ['web', 'auth'],

    // Page title
    'page_title' => 'Backup Management',

    // Specific users allowed to access (empty = all authenticated users)
    'allowed_users' => [
        // 'admin@example.com'
    ],

    // Custom authorization callback
    'auth_callback' => null,

    // Queue configuration for async backup creation
    'queue' => [
        // Enable queue processing (set to false for synchronous backups)
        'enabled' => false,

        // Queue name (leave null to use default queue)
        'name' => null,
    ],
];
```

### Queue Support (Async Backups)

[](#queue-support-async-backups)

For large databases or file backups that might timeout in a web request, you can enable asynchronous backup creation using Laravel queues:

```
'queue' => [
    'enabled' => true,
    'name' => 'backups',
],
```

Retries on failure: 3 attempts for creation, 1 for restore (a failed restore may have left the database in a partial state, so it isn't blindly retried).

The same queue setting is used for both backup creation and restore — both dispatch a job, write progress to Cache, and are polled by the same modal via `GET /backup/status?progress_key=...`.

**Example Horizon config** (`config/horizon.php`):

```
'environments' => [
    'production' => [
        'backups' => [
            'connection' => 'redis',
            'queue' => ['backups'],
            'balance' => 'simple',
            'processes' => 1,
            'timeout' => 3600, // large backups/restores can take a while
            'tries' => 2,
        ],
    ],
],
```

**Troubleshooting:**

- *Jobs not processing* — confirm a worker is actually running (`php artisan horizon` or `php artisan queue:work --queue=backups`) and that it's listening to the queue name from `backup-ui.queue.name`.
- *Progress modal doesn't appear or gets stuck* — check `storage/logs/laravel.log` for the job's own exceptions (a job that fails before writing to Cache, e.g. due to a file permission error, leaves the last known progress state visible indefinitely). If you run separate containers for web and queue workers, make sure both can write to the same log/cache.

External Disk Support (S3, FTP, Google Cloud, etc.)
---------------------------------------------------

[](#external-disk-support-s3-ftp-google-cloud-etc)

The package fully supports external backup disks including:

- **Amazon S3** (`s3`)
- **Google Cloud Storage** (`gcs`)
- **Google Drive** (`google`) — via [masbug/flysystem-google-drive-ext](https://github.com/masbug/flysystem-google-drive-ext), not bundled with this package
- **FTP/SFTP** (`ftp`, `sftp`)
- **Dropbox** (`dropbox`)
- **Other Laravel filesystem drivers**

**Key features for external disks:**

- Automatic driver detection and optimization
- Intelligent reachability checking for each disk type
- Graceful handling of network timeouts and connection issues
- Proper streaming for large backup file downloads
- Error logging for troubleshooting remote disk issues

Disks themselves are configured the standard Laravel way in `config/filesystems.php`, then listed under `backup.destination.disks` in `config/backup.php` — see the [Laravel Filesystem docs](https://laravel.com/docs/filesystem) and [spatie/laravel-backup docs](https://spatie.be/docs/laravel-backup) for driver-specific options.

**Note:** For external disks, file operations (download/delete) may take longer due to network latency. The interface will show appropriate loading states.

Usage
-----

[](#usage)

After installation, the backup interface will be available at `/backup` (or your configured route prefix).

### Basic Usage

[](#basic-usage)

1. **View Backups**: Navigate to the backup UI to see all configured backup destinations and existing backups
2. **Create Backup**: Use the "Create Backup" dropdown to create full, database-only, or files-only backups
3. **Download**: Click the download button next to any backup to download it
4. **Delete**: Click the trash icon to delete individual backups
5. **Clean**: Use the "Clean Old" button to remove old backups according to your retention policy
6. **Restore** (local environment only): Click the restore button next to a backup to restore its database dump into your local database — see below

### Restoring a Backup

[](#restoring-a-backup)

Restoring overwrites your database, so it only ever runs when `APP_ENV=local` — the "Restore" button is neither rendered nor functional (403) in any other environment, and there is no restore route/action available at all outside local. Currently only `mysql`/`mariadb`/`pgsql` connections are supported — mysql/mariadb via the `mysql` client, pgsql via `psql` (both must be installed and on `PATH`).

**From the UI:** click the restore icon next to any listed backup (any configured disk — local, S3, Google Drive, etc.). It downloads the archive if needed, extracts the `db-dumps/*.sql` file matching your current `database.default` connection, asks for confirmation, and runs the import. Runs synchronously or via queue depending on `backup-ui.queue.enabled`, same as backup creation.

**From the console**, for a backup file you already have locally (e.g. downloaded from another environment):

```
php artisan backup-ui:restore /path/to/backup.zip
# or restore into a specific connection:
php artisan backup-ui:restore /path/to/backup.zip --connection=mysql
php artisan backup-ui:restore /path/to/backup.zip --connection=pgsql
```

The command guards on `APP_ENV=local` the same way, asks for confirmation before overwriting, and prompts you to pick a dump if the archive contains more than one and none matches the target connection by name.

### Custom Authentication

[](#custom-authentication)

You can implement custom authentication by setting the `auth_callback` in the configuration:

```
// config/backup-ui.php
'auth_callback' => function () {
    return auth()->check() && auth()->user()->hasRole('admin');
},
```

### Restricting Access to Specific Users

[](#restricting-access-to-specific-users)

```
// config/backup-ui.php
'allowed_users' => [
    'admin@yoursite.com',
    'backups@yoursite.com',
],
```

### Integration with Admin Panels

[](#integration-with-admin-panels)

Simply add a link to `/backup` in your admin navigation menu.

Customization
-------------

[](#customization)

### Views

[](#views)

If you need to customize the views, publish them first:

```
php artisan vendor:publish --tag=backup-ui-views
```

The views will be published to `resources/views/vendor/backup-ui/`.

Security
--------

[](#security)

The package includes several security measures:

- Authentication middleware (configurable)
- User restriction capabilities
- CSRF protection on all forms
- File existence validation before downloads
- Path traversal protection

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

If you discover a security vulnerability within this package, please send an e-mail to the author via email. All security vulnerabilities will be promptly addressed.

Support
-------

[](#support)

If you find this package helpful, please consider starring the repository and sharing it with others!

If this package is useful to you, consider supporting its development:

[![Monobank](https://camo.githubusercontent.com/f4ca1cf4fd0a99ddfed314cb8f65140d8e83e324bd7c1f8476c52fe4ee6b25fd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d4d6f6e6f62616e6b2d626c61636b)](https://send.monobank.ua/jar/5xsqtHvVrY)[![Ko-Fi](https://camo.githubusercontent.com/10764ec41c79959f08ccaf3e066c7a76c371961b1b1ff5b5f2a33aceef6e857a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d4b6f2d2d66692d4646354535423f6c6f676f3d6b6f2d6669266c6f676f436f6c6f723d7768697465)](https://ko-fi.com/fomvasss)[![USDT TRC20](https://camo.githubusercontent.com/214b4dc05bedda1c5129726b4450ef7f672ce6637865f8a8be83c03582bfdce8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d5553445425323054524332302d3236413137423f6c6f676f3d746574686572266c6f676f436f6c6f723d7768697465)](https://link.trustwallet.com/send?coin=195&address=THLgp6DxiAtbNHvgnKV56vk1L38UuUagKf&token_id=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t)

> USDT TRC20 address: `THLgp6DxiAtbNHvgnKV56vk1L38UuUagKf`

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Credits
-------

[](#credits)

- [fomvasss](https://github.com/fomvasss)
- Built on top of [spatie/laravel-backup](https://github.com/spatie/laravel-backup)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance91

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~23 days

Total

7

Last Release

18d ago

Major Versions

1.x-dev → 2.x-dev2026-07-31

PHP version history (2 changes)1.0.0PHP ^8.0

2.x-devPHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/4f99b460639e7d6871597882226b1e0d9e3055992eac8b22bfcd4f90fbdac95c?d=identicon)[fomvasss](/maintainers/fomvasss)

---

Top Contributors

[![fomvasss](https://avatars.githubusercontent.com/u/19834478?v=4)](https://github.com/fomvasss "fomvasss (15 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/fomvasss-laravel-backup-ui/health.svg)

```
[![Health](https://phpackages.com/badges/fomvasss-laravel-backup-ui/health.svg)](https://phpackages.com/packages/fomvasss-laravel-backup-ui)
```

###  Alternatives

[nasirkhan/module-manager

Module Manager &amp; Generator for Laravel Starter Kit (https://github.com/nasirkhan/laravel-starter)

1046.5k6](/packages/nasirkhan-module-manager)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

604.0k2](/packages/crumbls-layup)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.8k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
