Hosting panel installers
This page is for bundlers who write the "Install Exponential" button of a hosting control panel or an application installer. The hosting section has the operator's view in One-click installers for Exponential; this page is the checklist for the person who builds and ships the installer.
Contents
- Which installer to call
- What the installer package contains
- The install sequence
- Safety rules
- What the customer receives
- Panel notes
Which installer to call
| Panel situation | Call |
|---|---|
| The panel can run a command as the account's user | exp:install: "Prefer exp:install in automation" (4.6) |
| The account has no shell, only file upload and a browser | place the code and let the customer finish in the setup wizard, optionally pre-filled by a kickstart.ini (The setup wizard on shared hosting) |
| You maintain fixed templates per plan | the kickstarter with a template per plan (kickstart.ini templates) |
What the installer package contains
- The code: a prepared archive of a pinned release built from your lock file, or the commands to fetch it (Getting the code).
- The mapping from the panel's form fields to
exp:installoptions: site URL to--url, e-mail to--email, the database the panel created to--db,--db-host,--db-name,--db-user, the password throughEXP_INSTALL_DB_PASSWORD, the site package to--package. - The web server rules for the panel's server (Web server and engine choices).
- An uninstall description: which files, which database, which cron entries.
- Your notices and the source offer (License texts and notices).
The install sequence
From What the one click must do:
Prepare the account: system user, home directory, PHP-FPM pool or Velocity instance.
Prepare the database: nothing for SQLite 3; for a server engine, an empty database and a user that may create tables.
Put the code in place.
Run the installer as the site's user, never as root, with a dry run first:
sudo -u <site user> env EXP_INSTALL_DB_PASSWORD='<from your secret store>' \ php bin/php/console exp:install --dry-run --db=pgsql --db-user=<db user> --url=https://www.example.com sudo -u <site user> env EXP_INSTALL_DB_PASSWORD='<from your secret store>' \ php bin/php/console exp:install --apply --db=pgsql --db-user=<db user> --url=https://www.example.com \ --email=<customer contact>Serve the site.
Install the crontab for
runcronjobs.php.Hand over the password and delete
var/log/initial-admin-password.Register the site in backups and monitoring.
Safety rules
- "Never point
--db-action=removeat a database that holds data." A one-click installer creates a new, empty database each time. - Keep secrets off the command line: an option "is visible to every user of the machine in the process list (
ps) while the installation runs". - "Check the exit status.
0installed,1anything failed; on failure maintenance mode stays on, andvar/log/setup.logsays why." - "Do not leave install files behind": a
kickstart.iniholds passwords in clear text.
Source: Safety rules.
What the customer receives
- The site address and the administration address.
- The login
adminand its password, once, through a secure channel, with advice to change it and create personal accounts (Default credentials and first sign-in). - The site package you chose, with or without demo content.
- A link to the help in their administration, and to your own support page (Support boundaries).
Panel notes
The hosting section has a page per panel: Plesk, cPanel, DirectAdmin, ISPConfig, Webmin, and on PHP selection and FPM pools and Cron and shell access. Whether a particular app-installer catalog lists Exponential is not documented here; ask its vendor.
Related pages
- One-click installers for Exponential
- Automating provisioning
- Unattended install with exp:install
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.