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

# Preview domains

> Get instant *.akua.run URLs for installations with no DNS setup

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/akua-1dce587a/rnK6zd7YiEuMcwXP/images/heros/preview-domains-light.svg?fit=max&auto=format&n=rnK6zd7YiEuMcwXP&q=85&s=5dcdf4770fbaf199c19a1bd2a055df24" alt="A browser open to a managed *.akua.run preview URL; Akua's edge terminates TLS and routes the request to your app on your cluster, with no DNS setup." width="1536" height="864" data-path="images/heros/preview-domains-light.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/akua-1dce587a/rnK6zd7YiEuMcwXP/images/heros/preview-domains-dark.svg?fit=max&auto=format&n=rnK6zd7YiEuMcwXP&q=85&s=000b548a184cb7749216f8b44af25fc9" alt="A browser open to a managed *.akua.run preview URL; Akua's edge terminates TLS and routes the request to your app on your cluster, with no DNS setup." width="1536" height="864" data-path="images/heros/preview-domains-dark.svg" />
</Frame>

Every exposed installation port gets a public HTTPS URL on `*.akua.run`, with no DNS records, no certificates, and no configuration. Toggle **Expose externally** on a port and Akua assigns a managed hostname that works with Cloudflare's standard wildcard certificate. For custom domains or more control over routing, Akua also supports [bringing your own Cloudflare Tunnel](/networking/cloudflare-tunnel) or [routing directly to your nodes](/networking/direct-ip).

Other platforms offer preview URLs too (Vercel, Cloudflare Workers, Fly.io), but they run your app on shared infrastructure. Akua preview domains are different: **your app stays on your clusters, on your servers**. Cloudflare only handles the edge routing; traffic flows through a tunnel directly to the workload running on your infrastructure.

## How it works

1. You expose a port on your installation.
2. Akua assigns a managed hostname, for example `frontend-acme.akua.run` or `pr-42-frontend-acme.akua.run`.
3. Your cluster publishes the tunnel endpoint for that app.
4. Cloudflare handles TLS, then Akua routes the request through the selected tunnel to your app.

```
Browser → Cloudflare Edge (TLS) → Tunnel → Your Cluster → App
```

## Why use preview domains

* **Zero setup**: no DNS provider, no certificate authority, no gateway configuration.
* **Instant sharing**: send a link to a teammate or client the moment you deploy.
* **Your infrastructure**: traffic routes to your own cluster, not a shared platform. You keep full control over where your workload runs.
* **Automatic HTTPS**: TLS is terminated at Cloudflare's edge; every URL is secure by default.

## Limitations

Preview domains are fully managed by Akua (the tunnel, the subdomain, and the DNS), which means you don't control the Cloudflare configuration. There are no options for access policies, custom headers, or tunnel-level settings.

For production workloads that need custom domains or fine-grained tunnel configuration, Akua supports [bringing your own Cloudflare Tunnel](/networking/cloudflare-tunnel): you connect your own Cloudflare account and manage the tunnel settings yourself. You can also [point your DNS directly at your worker nodes](/networking/direct-ip) for full control over the routing stack.

## Under the hood

Preview domains use the same Cloudflare Tunnel infrastructure as [custom domain tunnels](/networking/cloudflare-tunnel), but Akua manages the Cloudflare account and credentials on your behalf.

**One tunnel per cluster.** The first time you expose a port with a preview domain, Akua provisions a Cloudflare Tunnel for your cluster and deploys a `cloudflared` agent. Subsequent preview domains on the same cluster reuse the same tunnel; no additional infrastructure is created.

**Akua assigns a managed hostname.** When you expose a port, Akua creates a flat hostname under `akua.run`, such as `frontend-acme.akua.run`. Preview builds use the same shape with a short prefix, such as `pr-42-frontend-acme.akua.run`. Flat hostnames keep managed URLs covered by the standard wildcard certificate; deeper nested names such as `frontend.acme.akua.run` are not used for managed preview domains.

**Routing is Kubernetes-native.** Exposing a port creates a standard Gateway API route on your cluster. A controller watches for these routes and publishes tunnel endpoint metadata back to Akua. Because routing is defined through standard Kubernetes Gateway API resources, it works with GitOps workflows, authored Packages, chart sources, and `kubectl apply`. Akua's UI is one way to create routes, not the only way.

**DNS is managed centrally.** Preview domains share Akua-managed wildcard DNS and edge routing. Akua does not create a DNS record for every installation hostname, so creating and deleting preview URLs stays fast even when a workspace has many installations or short-lived previews.

**Routing records are updated by Akua.** Unlike [custom domain tunnels](/networking/cloudflare-tunnel) where you manage a domain in your own Cloudflare account, managed preview domains route through Akua's edge. When an app is created, updated, or removed, Akua updates the routing record for the hostname and Cloudflare sends future requests to the current tunnel endpoint.

**Credentials never touch your cluster.** Akua's Cloudflare credentials are managed centrally. The controller on your cluster authenticates with Akua's API using a scoped service account token and never holds Cloudflare API keys directly.

## API

Manage preview hostnames programmatically to create preview URLs in CI/CD pipelines or automate cleanup.

<CardGroup cols={2}>
  <Card title="Preview hostnames API" icon="code" href="/api-reference/preview-hostnames/list-preview-hostnames">
    Bind, list, and delete preview hostnames for an installation.
  </Card>

  <Card title="Domain routing API" icon="globe" href="/apis/domain-routing">
    Overview of all domain routing resources and authentication.
  </Card>
</CardGroup>

## Related topics

<CardGroup cols={2}>
  <Card title="Networking overview" icon="globe" href="/networking">
    Compare all options for exposing applications.
  </Card>

  <Card title="Cloudflare Tunnel" icon="cloud" href="/networking/cloudflare-tunnel">
    Use your own custom domain with Cloudflare.
  </Card>

  <Card title="Direct IP" icon="server" href="/networking/direct-ip">
    Route directly to worker IPs instead.
  </Card>

  <Card title="Domain routing API" icon="code" href="/apis/domain-routing">
    Automate hostname management through the API.
  </Card>
</CardGroup>
