# Deploy Nuxt

Nuxt is detected from its dependency and `nuxt.config.ts`, and runs as a Node.js container on port `3000`. No Dockerfile needed - one is [generated](/platform/deployments/builds#dockerfiles-generated-or-your-own) on Node 22 unless the repo has its own.

## How it runs

Nuxt is a server-rendered frontend, so it runs under [the SSR policy](/create/scaling#the-ssr-policy): pinned to the **Micro** size, scaling 0-3, in a tier-1 region, always behind the edge CDN. The edge serves your audience; the origin renders cache misses.

- **Build.** `npm run build` produces the `.output` server bundle; the container starts it with Node.
- **Port.** The server respects `PORT`, which is set for you - no config needed.
- **Cold starts.** At zero instances the first request boots the server; keep heavy work lazy. See [Cold starts](/create/scaling#cold-starts).

## Configuration

Server-side code reads [environment variables](/platform/environment-variables) at runtime - `runtimeConfig` values fed by `NUXT_*` variables work as usual, per environment.

Public values that must be inlined into the client bundle follow the container rule: images are [built without your runtime variables](/platform/deployments/builds#environment-variables-at-build-time). Prefer `runtimeConfig.public` (delivered at runtime) over build-time inlining.

## Database

Provision [managed PostgreSQL or MySQL](/platform/databases) and read `DATABASE_URL` from runtime config or `process.env`. See [Connect an app](/platform/databases/connect).

## Related

- [Frameworks](/platform/frameworks): Everything supported and how detection works.
- [Scaling](/create/scaling): The SSR policy and scale to zero.
- [Builds](/platform/deployments/builds): What the generated image does with your code.
