Applications
Last updated
15 apps, one wizard, one install pipeline. ADR-0033.
Registry
| App | What | DB | Notes |
|---|---|---|---|
| WordPress | CMS | MariaDB | Primary citizen (M10). Single-use SSO drop-in. Clone supported. |
| Moodle | LMS | MariaDB / PostgreSQL | Heavy. Recommend ≥2 GB RAM on the install’s docroot user. |
| Drupal | CMS | MariaDB / PostgreSQL | Composer-based install. |
| Joomla | CMS | MariaDB | |
| NextCloud | File sync + collab | MariaDB | Requires Redis + cron, both auto-wired. |
| MediaWiki | Wiki | MariaDB | |
| PrestaShop | E-commerce | MariaDB | |
| OpenCart | E-commerce | MariaDB | cli_install.php failure-mode caveat handled (26-char ULID truncated to ≤20). |
| phpBB | Forum | MariaDB | |
| Matomo | Analytics | MariaDB | |
| MyBB | Forum | MariaDB | |
| Pixelfed | Photo sharing (Fediverse) | MariaDB | |
| Mautic | Marketing automation | MariaDB | |
| Mahara | E-portfolio | MariaDB | |
| SuiteCRM | CRM | MariaDB |
Install pipeline
Every app uses the same 6-step pipeline:
- 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.
- DB provisioning: create DB + DB user via the agent.
- Download: fetch the app from upstream (cached on the panel host for repeat installs).
- Configure: write the app’s config file with DB creds + admin user + site URL.
- Install: call the app’s
cli_install/wp core install/ equivalent. Scan stdout forERROR:markers and a “success” sentinel (silent-exit-0 scar, OpenCart in particular exits 0 on failure). - SSO drop-in: write the single-use, self-deleting
jabali-sso-<token>.phpshim 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>