> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instapods.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Presets Overview

> Compare the four InstaPods presets — Static, PHP, Node.js, and Python.

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

|                        | Static               | PHP                         | Node.js                 | Python                  |
| ---------------------- | -------------------- | --------------------------- | ----------------------- | ----------------------- |
| **Web Server**         | nginx                | nginx + PHP-FPM             | —                       | —                       |
| **Runtime**            | —                    | PHP 8.3 (default)           | Node.js 22 (default)    | Python 3.12 (default)   |
| **Available Versions** | —                    | 8.2, 8.3, 8.4               | 18, 20, 22, 24          | 3.11, 3.12              |
| **Package Manager**    | —                    | Composer                    | npm                     | pip                     |
| **App Port**           | 80                   | 80                          | 3000                    | 8000                    |
| **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 Manager**    | nginx (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:

```bash theme={null}
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 22, 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`.
