relayercore/laravel-installer
Laravel Installer
A beautiful, reusable web-based installer for Laravel applications. Perfect for CodeCanyon products and commercial Laravel apps.
Features
- 🎨 Beautiful, modern UI
- 📋 Configurable installation steps
- ✅ Server requirements checking
- 🗄️ Database configuration & Instant Connection Testing
- 👤 Admin account creation
- 🔄 Modular SOLID Architecture (Easy to extend)
- 🎯 Works with Laravel 10, 11 & 12
Installation
composer require relayercore/laravel-installer
Usage
1. Publish Configuration
php artisan vendor:publish --tag=installer-config
2. Publish Views (Optional - for customization)
php artisan vendor:publish --tag=installer-views
3. Configure
Edit config/installer.php:
return [
'name' => 'My App',
'logo' => '/images/logo.png',
'requirements' => [
'php' => '8.2',
'extensions' => ['pdo', 'mbstring', 'openssl', 'json'],
],
'writable_directories' => [
'storage/app',
'storage/framework',
'storage/logs',
'bootstrap/cache',
],
'admin_model' => \App\Models\User::class,
'after_install' => function() {
// Custom post-install logic
},
];
4. Access Installer
Navigate to /install in your browser.
Customization
Styling
Publish views and modify the Blade templates:
php artisan vendor:publish --tag=installer-views
Views are published to resources/views/vendor/installer/.
How It Works
- Middleware checks for
storage/installedfile - If missing, redirects all routes to
/install - Wizard guides through: Requirements → Permissions → Database → Admin → Done
- Creates
storage/installedmarker file - App runs normally
Security & Best Practices for CodeCanyon
If you are distributing your application (e.g., via CodeCanyon or zip file), follow these steps to ensure a secure installation experience:
- Include a
.envfile: Your zip file MUST include a.envfile in the root. - Set a "Boot Key": Inside that
.env, set a genericAPP_KEYwhich acts as the "boot key" to allow the installer wizard to load.APP_KEY=base64:YOUR_GENERIC_KEY_HERE - Automatic Rotation: This installer automatically runs
php artisan key:generateas the final step, replacing your generic key with a unique, secure key for the customer.
This ensures your customers don't face "No application key" errors, while maintaining top-tier security.
MIT