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

Server and virtual machine images

How to bundle Exponential in a cloud server or virtual machine image - the operating systems the project lists, what to install at build time, what to leave for first boot, the services an image must start (web server…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/bundlers/server-and-virtual-machine-images.md

On this page

Server and virtual machine images

This page is for bundlers who publish a ready server: a cloud marketplace image, a virtual machine template, a preinstalled dedicated server. The guidance is generic; Exponential does not ship image build files.

Contents

  1. Choose the operating system
  2. At build time
  3. At first boot
  4. Services the image runs
  5. Image checklist

Choose the operating system

Operating system support sorts systems into four tiers, from "tested here" to "not possible today". Build images on a tier 1 or tier 2 system (The four tiers). Notes for Red Hat Enterprise Linux and its rebuilds, for Debian and Ubuntu, and for Plesk are in 2.9 Operating system notes.

PHP: Exponential 6.0.15 supports PHP 8.0 to 8.5, Velocity included, and is usable without support on PHP 7.4; "Velocity, the recommended web server, needs PHP 8.1" (Database support). The required PHP extensions are in 2.3.

At build time

  1. Install PHP, its extensions, Composer, and the database server if the image carries one.
  2. Create the site's system user.
  3. Put the code in place from your lock file, as that user (Getting the code).
  4. Import your site packages (Offline bundles).
  5. Regenerate autoloads (Caches and autoloads after building).
  6. Install the web server configuration or the Velocity unit (Web server and engine choices).
  7. Install the crontab for runcronjobs.php, disabled until the site is installed (Cron jobs).
  8. Add the first-boot script; leave every secret out.
  9. Clean: package caches, shell history, logs, SSH host keys if your platform regenerates them.

At first boot

The first-boot script does what First boot and install once describes: wait for the database, check ownership, skip if installed, read secrets from the platform (instance metadata, a cloud-init user-data field), run exp:install with the recipient's URL and e-mail, hand over the password and delete var/log/initial-admin-password, start serving, enable cron.

Where the recipient's URL is not known at first boot, either ask for it in your platform's launch form or install on the server's address and document how to change SiteURL afterwards (10.2 Siteaccesses and site addresses).

Services the image runs

ServiceNotes
Velocity, or Apache/nginx with PHP-FPMone user for all of them, or a common group (File permissions)
The database server, if insideits own backups (Database backups per engine)
Cron for runcronjobs.phpthe site's user's crontab
Backupsthe database and var/storage, settings/override, settings/siteaccess
Log rotationvar/log and per-site logs (Log viewer and rotation)
Health checkan HTTP check that treats 503 during install as "installing" (Health checks and uptime)

Image checklist

  • To do: Operating system on tier 1 or 2; PHP and extensions checked with exp:velocity ext check.
  • To do: Code from the lock file; ownership set; autoloads fresh.
  • To do: No secrets, no installed site, no kickstart.ini, no logs in the image.
  • To do: First boot installs once, as the site's user, and hands over the password.
  • To do: Cron, backups, log rotation and the health check are set up and documented.
  • To do: Security defaults applied (Security defaults of a bundle).
  • To do: License notices and the source offer are in the image and its listing (GPL obligations).
  • To do: The update path is documented (Updates and upgrade paths).

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