# Quick start (/docs/getting-started/quick-start)



```bash
pnpm install
cp .env.example .env
pnpm dev                   # http://127.0.0.1:3000
```

State lands in `./data/controller.db`. `CONTROLLER_HOST` and `CONTROLLER_PORT` move the listener.

## Nothing touches Proxmox until you ask it to [#nothing-touches-proxmox-until-you-ask-it-to]

`PROVISIONING_ENABLED` is off by default, and with it off a request queues a durable operation and
builds nothing. That is the intended way to try the UI, the API and the whole state machine without
a hypervisor anywhere near it.

<Callout type="warn">
  `CONTROLLER_AUTH_SECRET` turns authentication on. &#x2A;*Unset means the controller answers anyone who
  can reach it.** Set it before the controller is reachable by anything but you.
</Callout>

## Going further [#going-further]

To build real containers you need the hypervisor side in place — see
[Requirements](/docs/getting-started/requirements) — and then the
[production runbook](/docs/operations/production-runbook), which is the procedure that actually
gets followed rather than reconstructed.

## Development [#development]

```bash
pnpm check && pnpm typecheck && pnpm test && pnpm build
```

None of those load a page. After anything touching routing or SSR, open the site and look at it.
