Install

From an empty folder to a running Phlo app in two minutes, and from there to a production setup with worker mode, realtime and central management.

Local development

With Docker (fastest)

$ docker run -it -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /phlo/install.php /app
$ docker run -p 80:80 -v $(pwd)/app:/app ghcr.io/q-ainl/phlo

Or from the source code

$ git clone https://github.com/q-ainl/phlo.git /srv/phlo
$ php /srv/phlo/install.php /srv/example.com/

What the installer does

  • Asks for a name, host and the resources your app needs
  • Resolves requirements between resources automatically
  • Generates the project structure: source, data, php and webroot
  • Only finishes after a clean build, so you always start green

Then: build and verify

$ php www/app.php build::run

Production architecture

A Phlo app is not a loose script but part of a server platform. This is the recommended setup, the same one this site runs on.

FrankenPHP

The recommended production runtime. In worker mode your app stays in memory and the per-request startup cost disappears. Build mode and worker mode are deliberately separated: you build in dev, you run in production.

Vhost per app

Every app has its own host and webroot (release/www). One shared Phlo runtime serves multiple apps side by side on the same server.

phloWS & phloWA

Realtime and WhatsApp messaging run as separate Node services next to PHP. They deliver events to your app through the WebSocket contract and webhooks.

Dashboard

Connect the server to the Phlo dashboard for fleet overview, uptime, databases and notifications across all your apps and servers.

Read more about the server platform β†’

Next steps

We use essential cookies to make this site work. With your permission we also use analytics to improve the site.