froiden/laravel-installer
A web-based installation wizard for Laravel applications that walks users through environment setup, database configuration, and initial app setup without the command line—simplifying first-run onboarding for distributed PHP apps.
What the package actually is. froiden/laravel-installer is a fork-lineage of the classic Rashid Laasri Laravel web installer: it injects a multi-step HTTP wizard (welcome → requirements → permissions → environment/.env → database → admin user → finish) into the host application via published routes, controllers, Blade views, assets, and config. It is a distribution-time tool, not a runtime capability. That framing drives most of the assessment below.
Architecture fit. Good fit only for one specific architecture: a single-tenant, self-hosted Laravel artifact shipped as a zip to a customer who has FTP/cPanel access and no shell. It assumes the app owns and can write its own .env, that the database is not yet reachable at first boot, and that an unauthenticated route can safely exist at /install until a lock condition is met. It fits poorly with 12-factor config, immutable container images, read-only filesystems, Kubernetes/autoscaling fleets, Laravel Octane, or any multi-tenant SaaS where .env is platform-managed. If our delivery model is "we run it," this package is largely dead weight.
Integration feasibility. Moderate and well-understood. Registration is a service provider plus a middleware/route group; customization is view and config publishing (requirement checks, permission checks, extra steps). A mid-level Laravel developer should reach a working wizard in one to two days and a branded, gated version in three to five. The real cost is not wiring — it is the security gate, the customization of steps, and the test harness.
Technical risk.
.env mutation. Writing environment files from HTTP is inherently fragile — quoting/escaping of special characters in passwords, partial writes, permission errors, and stale config cache after the write. Test with adversarial values (#, =, spaces, quotes, unicode)./install routes or mutating the web middleware group will conflict.Key questions for the team.
Stack fit. Compatible with conventional Laravel on Apache/Nginx + PHP-FPM with a writable application root and writable .env. Incompatible-by-design with read-only root filesystems, serverless, and horizontally scaled fleets where each replica has its own ephemeral disk. Treat it as a build/deploy artifact for a single instance only.
Migration path. Because it descends from the widely used rashidlaasri/laravel-installer lineage, moving from that package (or from a bespoke in-house wizard) is mostly mechanical: swap the Composer requirement, republish config/views/assets, reconcile namespaces and route names, and re-map middleware aliases. Verify the fork's divergences rather than assuming drop-in compatibility. Migrating from "manual .env editing + artisan migrate" is purely additive — the wizard becomes an alternative front door, with the manual path retained as fallback.
Compatibility checks to run in the spike, not in the plan.
config:cache enabled (does it clear or bypass cached config after writing .env?).Sequencing.
php artisan app:install and skip the package.APP_INSTALLED env + lock file + route removal), IP allowlist, and a build step that strips installer routes from cloud artifacts.Maintenance. Low-traffic but non-zero. Budget two to five engineer-days per Laravel major version to validate or patch, plus a fork-maintenance allowance. Pin the version exactly; do not float. Watch the release feed — a >12-month gap should trigger an internal decision to adopt the fork formally rather than wait.
Support. The installer is the customer's first impression and a predictable source of tickets: permission denials, DB connection failures, extension warnings that don't match reality, and .env writes silently not taking effect. Invest in human-readable error messages and a documented manual installation path that bypasses the wizard entirely; that document is the real safety net.
Scaling. Per-request cost is negligible; the scaling concern is deployment topology, not traffic. In any environment with more than one replica, the installer must be pinned to a single ephemeral instance with a persistent volume, or replaced. Do not let it run behind a load balancer.
Failure modes to instrument.
.env corruption from special characters in DB passwords.Ramp-up. Technical ramp is low — a developer unfamiliar with the package can be productive in half a day given the config file and views. Operational ramp is the actual work: on-call must know how to verify the installer is disabled, how to complete a half-finished install manually, and how to rotate credentials that were entered by a customer. Add a one-page runbook to the release checklist. Net recommendation: adopt conditionally, forked and gated, scoped strictly to self-hosted distribution — not as a general-purpose dependency.
How can I help you explore Laravel packages today?