Skip to main content

What you need

  • PHP 8.3+, with extensions: mbstring, openssl, json, pdo_mysql, fileinfo, dom, libxml, curl, iconv, gd
  • MySQL 8+ (or compatible)
  • A queue worker process and a cron entry — see Background processes below

Steps

1

Upload the release and point your document root at public/

storage/, bootstrap/cache/, and .env all need to be writable by your web server user before you start — the installer writes .env directly.
2

Visit your domain

You’re redirected straight to the install wizard. Four steps:
1

Environment requirements

Confirms PHP version, required extensions, and writable folders.
2

Database & mail configuration

Enter your database credentials and mail settings.
3

License activation

Enter the license key from your purchase confirmation.
4

Admin account

Create your own login — this is the account you’ll manage the whole instance from.
Once installed, storage/installed exists and the wizard can never be re-run through the browser — reinstalling means deleting that file and re-running migrations yourself. Never delete this file on a real, already-installed site — it’s the only thing standing between a real instance and every visitor being redirected back to the install wizard.

Background processes

Two things need to run continuously outside the request/response cycle, or large parts of the app silently do nothing:
1

Queue worker

Audit reports and outbound webhook deliveries are both queued jobs, not run inline on the request.
Run it under a process supervisor (systemd, Supervisor) so it survives restarts — and restart it after every code deploy, since a long-running worker keeps old class definitions loaded in memory until restarted.
2

Scheduler cron

Drives the daily license/update checks. Nothing time-based works without it.

Optional: Stripe billing

If you want tenant self-service billing, add your Stripe keys under Admin → Integrations. Without it, you can still create tenant accounts manually from the Admin panel.