# Deploy a template

> Deploy an app from Falak's template catalog — pick a template, fill in inputs with generated secrets, choose domains and servers, get a Compose service.

Source: https://falak.sh/docs/templates/deploy-a-template/

A **template** is a ready-made Docker Compose app — n8n, Plausible, Ghost, MinIO and more — with pinned images, health checks, inputs and generated secrets. Deploying one creates a [Compose site](/docs/deploy/docker-compose/) in your project and starts its first deployment.

## Prerequisites

- A server of type **app**, **web** or **worker** with **Docker** installed, and enough free memory for the template (each template lists a minimum).
- Permissions: `templates.view`, `projects.manage` and `sites.create`. Without `deployments.create`, the site is created but not deployed.

## Deploy

1. On the canvas: **+ Create → Template**, or open **Templates** from the workspace sidebar, or <kbd>⌘K</kbd> → "Deploy template…".
2. Search or browse by category and open a template.
3. **Configure** it:
   - **Inputs**: fill in what the template asks for. Secrets are generated for you (hidden behind **Show / Regenerate**).
   - **Domains**: one per public service — a generated `sslip.io` name (the default without a test domain), the test domain, or your own domain with the DNS records to add and a live check.
   - **Servers**: pick one or more. Falak warns when a **stateful** template is deployed to more than one server, because each server gets its own volumes.
   - **Name**: optional; defaults to the template name.
4. Click **Deploy**. The site appears on the canvas as a group of its Compose services, and its panel opens on the deploy stream.

When the health checks pass, open the public URL. Most apps then ask you to finish their own setup (create the first admin, and so on).

## What gets created

| Item | Value |
|---|---|
| Site | Runtime `compose`, source `inline` (the template's `compose.yaml`), strategy `compose` |
| Variables | Every input, stored encrypted. Generated secrets are generated **once** and stay stable across redeploys. |
| Public services | From the template, each with its domain and a loopback host port |
| Template link | `template: {slug, version, source}` on the site, so you know where it came from |
| Named volumes | Persist across releases (project name = site slug) |

Falak placeholders in the template are rendered once at creation: `${{ falak.url(<service>) }}` (the service's https URL), `${{ falak.domain(<service>) }}` and `${{ falak.site }}` (the slug).

## After deploying

- Change inputs in the site's **Variables** and redeploy.
- Edit the Compose file under **Settings → Compose** (inline, versioned, with history).
- Back up volumes yourself: Falak's [database backups](/docs/databases/backups/) cover Falak-managed databases, not databases inside templates.

## Through the API

```bash
curl -X POST "https://falak.example.com/api/v1/projects/01j…/production/templates/uptime-kuma/deploy" \
  -H "Authorization: Bearer $FALAK_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{"server_ids": ["01k…"], "inputs": {"TIMEZONE": "Europe/Berlin"}, "domains": {"uptime-kuma": {"type": "generated"}}}'
```

See [Templates API](/docs/api/templates/).

## Next steps
