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

Choosing a hosting model

A comparison of shared hosting, VPS, dedicated servers, containers and Kubernetes for Exponential, built from what the project's sources say, with the questions that decide which model a hosting offer should use.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/models/choosing-a-hosting-model.md

On this page

Choosing a hosting model

This page is for product managers and system administrators at hosting companies who must decide which hosting models to offer for Exponential. It answers: how shared hosting, VPS, dedicated servers, containers and Kubernetes compare for an Exponential site, which facts in the project's sources drive the comparison, and which questions decide the model for one offer or one customer. It gives no prices and no sites-per-server figures: the sources state none, and the right numbers come from measuring your own machines.

Warning

.htaccess slows down every request. When .htaccess files are enabled (AllowOverride anything but None), let alone used, Apache looks for them and reads and evaluates them on every request, in every directory of the path, and page loading times go up drastically (measured). The only real fix is to switch the feature off for the virtual host: AllowOverride None in the HTTPS virtual host, and the rules in the virtual host's own configuration as mod_rewrite rules. That is far faster in production speed tests and well worth the time it takes to optimize a production configuration. Switch over right away: copy the rules of the example HTTPS virtual host into your virtual host (with the static cache, also staticcache_offload.conf), set AllowOverride None, run apachectl configtest, reload Apache and test the site. The same rules for other servers: nginx, LiteSpeed, Caddy, IIS, Velocity (built in); where virtual host rules go in a control panel: Plesk, cPanel, DirectAdmin, ISPConfig. On LiteSpeed or OpenLiteSpeed, the server's own page cache can also answer anonymous visitors and crawlers without PHP: Page caching with LiteSpeed and OpenLiteSpeed.

Contents

  1. The comparison table
  2. The five questions that decide
  3. Web server and engine per model
  4. Database per model
  5. Isolation between customers
  6. Mixing models
  7. A decision record

The comparison table

Shared hostingVPSDedicated serverContainers (Docker, Podman)Kubernetes
Typical customer accesspanel, FTP, often no shellroot or a sudo userrootthe image and its volumesmanifests, images, volumes
Long-running process (Velocity, FrankenPHP)usually not allowedyesyesyes, the container's main processyes
Usual way to serveApache or LiteSpeed with .htaccessVelocity, or Apache/nginx with PHP-FPMVelocity, or Apache/nginx with PHP-FPMVelocity in the containerVelocity in the pods, or PHP-FPM behind a web server
Install methodthe setup wizard in the browserexp:install, the kickstarter or the wizardas VPSexp:install in the entry pointexp:install in a job or entry point
SQLite 3 (the default database)yes, one site per fileyesyesone writing container onlyone writing replica only
Several web nodes for one sitenono (one machine)no (one machine)needs a database server and shared var/storageneeds a database server and shared var/storage
Isolation between customersper account and PHP-FPM pool, as the host configures itone machine per customerone machine per customerper containerper namespace and pod, as configured
Tier in the sourcesthrough the panel: Plesk tier 1, cPanel and DirectAdmin tier 3by distribution: tier 2 or 3by distribution: tier 1 to 3tier 2 (Docker and Podman)tier 3

Sources: Operating system support (tiers, "Containers, cloud and hosting panels"), Chapter 8 ("Suits shared hosting"), Chapter 4 (install methods) and the root README.md ("When a traditional server is still the right answer").

Note

"Tier" here is the project's own scale: 1 tested here, 2 known to work, 3 expected to work, 4 not possible today. A tier 3 entry is "a reasoned expectation, not a test result" (The four tiers). Plan a test installation before you sell a tier 3 model.

The five questions that decide

QuestionIf the answer is ...Then
May customers run a long-running process?noApache or LiteSpeed with .htaccess, or nginx with PHP-FPM; Velocity is usually not possible (Shared hosting)
Does the site need more than one machine to write the database?yesa database server, PostgreSQL first; not SQLite (Database support)
Is the machine's PHP 8.0?yes, for example the stock PHP 8.0 of Red Hat Enterprise Linux 9any web server; Velocity runs on 8.0 from its release 0.0.4.54 (Chapter 2)
Must customers be isolated at the operating-system level?yesone PHP-FPM pool or one Velocity instance per site, each as its own user (Isolation)
Will the customer have shell access?nothe setup wizard in the browser installs the site (Chapter 4)

Web server and engine per model

The project recommends Exponential Velocity "for every stage"; FrankenPHP is a production-ready alternative; Apache and nginx with PHP-FPM are the traditional setups. Chapter 8 names the cases where a traditional server is the better answer: "when your hosting does not allow long-running processes, when you already run a tuned Apache or nginx you want to keep, or when several customers on one machine need operating-system isolation from each other" (8.1 The choice in one table).

For a hosting company this translates into:

  • Shared hosting: Apache (or LiteSpeed) with .htaccess and a PHP-FPM pool per account.
  • VPS and dedicated: Velocity as the default; Apache or nginx when a panel manages the machine or the customer wants it. Both can run side by side on the same files during a migration.
  • Containers and Kubernetes: Velocity as the container's process, since it needs no separate web server and serves HTTPS itself; or a web server container in front of PHP-FPM.

Details: Choosing a web server and Velocity for hosts.

Database per model

The six supported databases, in the official order: 1. SQLite 3 (the default) · 2. PostgreSQL · 3. MongoDB · 4. MariaDB · 5. Oracle · 6. MySQL. Microsoft SQL Server is known to be possible with additional work at this time.

ModelWhat fitsWhy
Shared hosting1. SQLite 3 for small sites; otherwise the database server the panel offers (often 4. MariaDB or 6. MySQL)SQLite needs no server and no account; it is "a full production database for a site served from one machine"
VPS, dedicatedany of the six; 1. SQLite 3 or 2. PostgreSQL firstone machine; the customer's or your standard decides
Containers1. SQLite 3 with one writing container, or a database server"SQLite's WAL needs shared memory on one host"
Kubernetes with several replicasa database server, 2. PostgreSQL firstseveral replicas cannot share one SQLite file over a network volume

Sources: Database support and Containers, cloud and hosting panels. Read MongoDB limits before you offer 3. MongoDB.

Isolation between customers

The root README.md is explicit: "A single server process serving several sites is a routing convenience, not a security boundary — the process that serves one site can read every file the others hold." For several customers on one machine it recommends "one Velocity instance per site behind a proxy, each as its own operating-system user", or a traditional server with one PHP-FPM pool per site (Chapter 8).

Warning

Several customer sites inside one Exponential installation (a multisite) share one code base, one set of processes and usually one database. That is a fine setup for one organization's sites, not a boundary between customers who must not see each other's data. See Multi-tenant isolation.

Mixing models

Most hosting companies end up offering more than one model. Common combinations, all covered by the sources:

  • Shared hosting for small sites, VPS for growth. Moving a site is moving its files and its database (Moving a site between hosts).
  • Velocity beside a panel's Apache. The project's own development server runs Plesk's Apache with PHP-FPM and Exponential Velocity on the same installation (Tier 1).
  • Containers for staging, a VM for production, built from the same exp:install options or kickstart.ini.

A decision record

Hosting model decision for <offer or customer>       date: <date>     decided by: <names>

Model:              <shared | VPS | dedicated | containers | Kubernetes | PaaS | managed>
Operating system:   <name and version>, tier <1-4>
Panel:              <none | Plesk | other>, tier <1-4 or not placed>
PHP:                <version> web, <version> command line
Serving:            <Velocity | FrankenPHP | Apache + PHP-FPM | nginx + PHP-FPM | other>
Database:           <1. SQLite 3 | 2. PostgreSQL | 3. MongoDB | 4. MariaDB | 5. Oracle | 6. MySQL>
Customer access:    <panel | FTP | shell | none>
Isolation:          <one pool per site | one Velocity per site | one machine per customer>
Backups:            database + var/storage + settings/override + settings/siteaccess, restore tested on <date>
Risks accepted:     <for example a tier 3 system>

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