Skip to main content
A preset defines the software stack pre-installed in your pod. Each preset uses a pre-built image, so pod creation takes just 1–2 seconds.

Comparison Table

StaticPHPNode.jsPython
Web Servernginxnginx + PHP-FPM
RuntimePHP 8.3 (default)Node.js 20 (default)Python 3.12 (default)
Available Versions8.2, 8.3, 8.418, 20, 223.11, 3.12
Package ManagerComposernpmpip
App Port808030008000
App Root/home/instapod/app/home/instapod/app/home/instapod/app/home/instapod/app
Public Root/home/instapod/app/home/instapod/app/public/home/instapod/app/home/instapod/app
Process Managernginx (system)nginx + php-fpm (system)systemd (app service)systemd (app service)

How Presets Work

Presets are stored in the database and seeded from code on startup. Each preset maps to:
  1. A pre-built Incus image — Contains all packages pre-installed (e.g., instapods/nodejs)
  2. A cloud-init configuration — Sets hostname, starts services, and configures networking
  3. A runtime definition — Defines available capabilities (log paths, reload commands, etc.)

Choosing a Preset

  • Static — Best for HTML/CSS/JS sites, single-page apps, documentation sites. Files are served directly by nginx.
  • PHP — Best for PHP applications, Laravel, WordPress alternatives. nginx handles HTTP, PHP-FPM processes PHP files.
  • Node.js — Best for Express, Fastify, Next.js, or any Node application. Managed by systemd.
  • Python — Best for Django, Flask, FastAPI, or any Python application. Managed by systemd with built-in venv.

Runtime Versions

PHP, Node.js, and Python presets support multiple runtime versions. Choose a version when creating a pod — from the dashboard’s version picker or with the CLI --version flag:
instapods pods create my-app -p php --version 8.4
instapods pods create my-app -p nodejs --version 22
instapods pods create my-app -p python --version 3.11
If you don’t specify a version, the default is used (PHP 8.3, Node.js 20, Python 3.12). The version cannot be changed after creation.

File Structure

All presets create a default user instapod with the app directory at /home/instapod/app. This is where you deploy your code. For PHP, the public root is /home/instapod/app/public — place your index.php there. Other files (like configuration, vendor directory) go in /home/instapod/app.