> ## 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 five InstaPods presets — Static, PHP, Node.js, Python, and Go.

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 | Go |
| - | - | - | - | - | - |
| **Web Server** | nginx | nginx + PHP-FPM | — | — | — |
| **Runtime** | — | PHP 8.3 (default) | Node.js 22 (default) | Python 3.12 (default) | Go 1.26 (default) |
| **Available Versions** | — | 8.2, 8.3, 8.4 | 18, 20, 22, 24 | 3.11, 3.12 | 1.25, 1.26 |
| **Package Manager** | — | Composer | npm | pip | Go modules |
| **Compiled** | No | No | No | No | **Yes** |
| **App Port** | 80 | 80 | 3000 | 8000 | 8080 |
| **App Root** | `/home/instapod/app` | `/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` | `/home/instapod/app` |
| **Process Manager** | nginx (system) | nginx + php-fpm (system) | systemd (`app` service) | 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.
* **Go** — Best for Go HTTP services and APIs (net/http, Gin, Echo, Fiber, chi) and background workers. Your code is **compiled on the pod** and systemd runs the resulting binary.

## Runtime Versions

PHP, Node.js, Python, and Go 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
instapods pods create my-app -p go --version 1.25
```

If you don't specify a version, the default is used (PHP 8.3, Node.js 22, Python 3.12, Go 1.26). The version cannot be changed after creation.

## Compiled vs Interpreted

Go is the only preset that compiles. Static, PHP, Node.js, and Python all run your files as they are, so uploading a file changes what the pod serves immediately. On the Go preset, uploading source changes nothing until it is rebuilt — every deploy and `pods reload` runs `go build` and restarts the resulting binary.

If a Go build fails, the deploy fails and returns the compiler error, and your **previous binary keeps running** — a broken commit does not take your app down. See [Go](/presets/go) for details.

## 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`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.