souravmsh / laravel-installer
A sleek and easy-to-use web-based installer for Laravel applications.
Requires
- php: ^8.2
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^9.5|^10.1
README
A sleek, modern, and easy-to-use web-based installer for Laravel applications. This package provides a step-by-step wizard to help users set up your Laravel application, including environment configuration, database connection, and license validation.
Features
- Standard Requirements Check: Verifies PHP version and required extensions.
- Permissions Check: Ensures necessary directories are writable.
- Environment Configuration: Easy setup for
.envvariables. - Database Setup: Wizard for database connection and migration.
- License Validation: Flexible support for license key validation (Required, Optional, or Disabled).
- Modern Mobile-App UI: Sleek, glassmorphism-based design optimized for clarity and ease of use.
Installation
You can install the package via composer:
composer require souravmsh/laravel-installer
Setup
1. Register the Service Provider (Optional for Laravel 5.5+)
The package will automatically register itself using Laravel's package discovery.
2. Publish Configuration and Assets
You can publish the configuration file and views using the following commands:
Publish All:
php artisan vendor:publish --tag="laravel-installer-publish"
Publish Configuration Only:
php artisan vendor:publish --tag="laravel-installer-config"
Publish Views Only:
php artisan vendor:publish --tag="laravel-installer-views"
3. Middleware
The package provides two middlewares:
installer.check: Ensures the application is installed before allowing access.installer.redirect: Redirects to the homepage if the application is already installed.
You should apply these to your routes as needed.
The configuration file is located at config/laravel_installer.php. You can customize the application name, license server, and other settings here.
return [ 'app_name' => env('APP_NAME', 'Laravel Application'), // Enable or disable the installer entirely 'installer_enabled' => env('INSTALLER_ENABLED', true), // Force redirection to the installer when the app is uninstalled 'force_install_redirect' => env('INSTALLER_FORCE_REDIRECT', true), // Path to the installation lock file 'installed_key_path' => env('INSTALLER_KEY_PATH', 'app/private/key.install'), // Supported: "required", "optional", "disabled" 'license_check' => env('INSTALLER_LICENSE', 'optional'), 'license_server_url' => env('INSTALLER_LICENSE_URL', 'null'), 'license_storage_path' => env('INSTALLER_LICENSE_KEY_PATH', 'app/private/key.private'), ];
Usage
Once installed, navigate to /install to begin the installation process. The installer will guide you through:
- Welcome Screen
- Server Requirements Check
- Directory Permissions Check
- Environment Configuration
- Database Setup
- License Validation
- Installation Completion
Commands
Install Package
Use this command to install the package and publish its configuration file to your host application. Note: The configuration is also automatically copied when the package is required via Composer (Zero-Touch publish).
php artisan laravel-installer:install
Reset / Fresh Install
Use this command to tear down the current installation and return the application to setup mode. It is safe to run at any time — it includes a confirmation prompt to prevent accidental resets.
php artisan laravel-installer:reset
The command runs three sequential steps:
| Step | Action |
|---|---|
| 1. Fix permissions | Sets write permissions on .env (664), storage/ (775 recursive), bootstrap/cache/ (775), and storage/app/private/ (775). Creates missing directories automatically. |
| 2. Remove lock files | Deletes the install lock file (key.install) and the license key file (key.private) if they exist. Prints the resolved path of each so you can verify. |
| 3. Clear all caches | Runs optimize:clear which flushes config, route, view, event, and compiled bootstrap caches — including bootstrap/cache/config.php that individual cache:clear calls miss. |
After the command completes, the installer.check middleware will detect the missing lock file and redirect all protected routes to the setup wizard.
Note: If
INSTALLER_ENABLED=falseis set in your.env, the middleware bypasses the lock-file check entirely. The command will warn you if this is the case — setINSTALLER_ENABLED=trueto re-enable setup mode.
Security
If you discover any security-related issues, please email sourav.diubd@gmail.com instead of using the issue tracker.
Credits
License
Proprietary License. Please see License File for more information.