Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

One-click installers for Exponential

How a host offers Exponential as a one-click install: the one installer with three front ends (setup wizard, kickstarter, exp:install), which one fits a panel, a script or a customer, what the one click must do before…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/provisioning/one-click-installers.md

On this page

One-click installers for Exponential

This page is for hosting companies that want customers to get an Exponential site with one click in their panel or order form. It answers: what Exponential already provides for unattended installs, which front end to build on, and what your one click must do around it.

Contents

  1. One installer, three front ends
  2. Which front end for which offer
  3. What the one click must do
  4. Safety rules
  5. What the customer receives

One installer, three front ends

Every install method runs the same sequence of step classes in kernel/setup/steps/, from Welcome to Final; CreateSites is the step that writes the database, the packages and the settings. The front ends differ only in where the answers come from (4.1):

Setup wizardKickstarterexp:install
Answers frombrowser formskickstart.inicommand-line options, each with a default
Needs a web server during the installyesnono
Dry runnorun --dry-run--dry-run, --print
Guard against overwritingstarts only while CheckValidity=true--force requiredrefuses an existing installation without --force
Logvar/log/setup.logsetup.log, kickstart.logsetup.log, var/log/exp-install-<date>.ini
Administrator passwordtyped in the formfrom the file; generated when empty or well knowngenerated unless an acceptable --password is given

Source: 4.2.

Which front end for which offer

OfferFront endWhy
A panel button that creates the siteexp:install"Prefer exp:install in automation. It needs no file, validates its options before anything is written, and returns a non-zero exit status on every failure" (4.6)
Templates you maintain ("agency starter site")the kickstarterthe reviewed kickstart.ini is the specification of the install
Customers on shared hosting without a shellthe setup wizardneeds only a browser; can be pre-filled by a kickstart.ini
Container imagesexp:install in the entry point, run oncesee Containers: Docker and Podman

What the one click must do

Exponential installs the site. Your installer does everything around it:

  1. Prepare the account: a system user, a home directory, a PHP-FPM pool or a Velocity instance for the site (Per-customer users and pools).

  2. Prepare the database: nothing for SQLite 3 (the default; a writable var/storage/sqlite3/ is enough); for a server engine, an empty database and a user that may create tables (Databases and users in panels).

  3. Put the code in place: a Git checkout of a release tag, or composer create-project/composer install from a lock file you tested (Composer and Git on servers).

  4. Run the installer as the site's user, never as root:

    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>
  5. Serve the site: point the web server at it, or start Velocity (Choosing a web server).

  6. Install the crontab for runcronjobs.php (Cron jobs).

  7. Hand over the password: read var/log/initial-admin-password once, give it to the customer through a secure channel, and delete the file; or set the password from your secret store with --password=.

  8. Register the site in backups and monitoring.

Each step is described in Automating provisioning.

Safety rules

  • Never point --db-action=remove at a database that holds data. It is the default of exp:install and "empties the database first" (7.3). A one-click installer should create a new, empty database each time.
  • Keep secrets off the command line. Use EXP_INSTALL_DB_PASSWORD rather than --db-password; an option "is visible to every user of the machine in the process list (ps) while the installation runs".
  • Run as the site's user. "Files created by root cannot be changed by the web server later".
  • Check the exit status. 0 installed, 1 anything failed; on failure maintenance mode stays on, and var/log/setup.log says why (7.7).
  • Do not leave install files behind. A kickstart.ini holds passwords in clear text; remove it after the install, as the wizard would read it on a later run.

What the customer receives

  • The site address and the administration address (by URL /admin, by host, or by port, depending on --access).
  • The administrator login admin and its password, once; advice to change it and create personal accounts (First sign-in and default passwords).
  • The site package you chose, with or without demo content (Site packages).
  • A link to the help: the help dashboard in their administration.

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x