Applications

Last updated

15 apps, one wizard, one install pipeline. ADR-0033.

Registry

AppWhatDBNotes
WordPressCMSMariaDBPrimary citizen (M10). Single-use SSO drop-in. Clone supported.
MoodleLMSMariaDB / PostgreSQLHeavy. Recommend ≥2 GB RAM on the install’s docroot user.
DrupalCMSMariaDB / PostgreSQLComposer-based install.
JoomlaCMSMariaDB
NextCloudFile sync + collabMariaDBRequires Redis + cron, both auto-wired.
MediaWikiWikiMariaDB
PrestaShopE-commerceMariaDB
OpenCartE-commerceMariaDBcli_install.php failure-mode caveat handled (26-char ULID truncated to ≤20).
phpBBForumMariaDB
MatomoAnalyticsMariaDB
MyBBForumMariaDB
PixelfedPhoto sharing (Fediverse)MariaDB
MauticMarketing automationMariaDB
MaharaE-portfolioMariaDB
SuiteCRMCRMMariaDB

Install pipeline

Every app uses the same 6-step pipeline:

  1. Pre-flight: verify the destination directory is empty, the chosen DB engine is available, the user has quota headroom, the chosen path is not already an install.
  2. DB provisioning: create DB + DB user via the agent.
  3. Download: fetch the app from upstream (cached on the panel host for repeat installs).
  4. Configure: write the app’s config file with DB creds + admin user + site URL.
  5. Install: call the app’s cli_install / wp core install / equivalent. Scan stdout for ERROR: markers and a “success” sentinel (silent-exit-0 scar, OpenCart in particular exits 0 on failure).
  6. SSO drop-in: write the single-use, self-deleting jabali-sso-<token>.php shim into the install dir (60 s TTL).

Admin controls

/jabali-admin/applications, per-app:

  • Global enable/disable (users can’t install disabled apps).
  • Pinned version (vs. “latest”).
  • Per-app PHP extension prerequisites (validated against the user’s PHP version pool).

User flow

/jabali-panel/applications:

  • Lists installed apps (with version, install path, last update).
  • “Install new” → app picker → install wizard.
  • “Open Admin” → single-use SSO drop-in (60 s TTL).
  • “Update” → manual update (separate from auto-update timer).
  • “Clone” → currently WP-only, others on the roadmap.
  • “Delete” → destructive teardown.

CLI

jabali app list [--user <id>]
jabali app install --user <id> --domain <name> --app wordpress
jabali app delete <install-id>

See platform/cli.md#applications.