Skip to main content

Install

SSH into the server as a user that can use sudo, then run:
The installer asks for: When it finishes it prints the panel URL. Open https://panel.example.com/setup to create the admin account and turn on two-factor authentication.

Unattended install

Every prompt can be given as an environment variable, which is handy for provisioning scripts:

What gets installed

  • nginx, the web server for every site, the panel, and phpMyAdmin.
  • PHP-FPM 8.0, 8.1, 8.2, 8.3, 8.4, 8.5 (whichever the PHP repository still publishes for your Ubuntu), with the common extensions Laravel needs.
  • Composer.
  • MySQL 8.4 LTS (Ubuntu’s MySQL as a fallback), with the root password you chose.
  • Redis, used by the panel for sessions and queues and available to your sites.
  • phpMyAdmin on its own domain, with one-click sign-in from the panel.
  • Node.js 20, 22, and 24 (through n) and PM2 for Next.js sites.
  • Supervisor, which runs the panel’s laravelify-queue (deploys) and laravelify-scheduler (monitoring, alerts), plus each Laravel site’s workers.
  • cloudflared, connected with your tunnel token.
  • ufw firewall: deny incoming by default, allow SSH (22), 80, and 443.
  • A sudoers rule that lets the panel (www-data) run only scripts/host-apply.sh as root. That script validates every argument before it touches the system.
The panel lives in /opt/laravelify. Sites live in /var/www/{slug}.

After installing

1

Add the public hostnames in Cloudflare

Tunnel → Public hostnames: panel.example.com → http://localhost:80 and db.example.com → http://localhost:80.
2

Create the admin and enable 2FA

Open https://panel.example.com/setup.
3

Set a Redis password

Redis starts without a password. Set one under Server → Redis.