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

# Deployment FAQ

> Common questions about deploying Streamly on Node, Docker, and Cloudflare Workers.

## What is the primary production path?

`pnpm run deploy:cloudflare` (OpenNext + Wrangler), as used for `https://streamly.watch`.

## Can I run on a normal VPS or Docker?

Yes — Node: `pnpm run build` + `pnpm run start`. Docker: see inlined steps in [Deploy (Node)](/getting-started/deploy-node) (build-args for `NEXT_PUBLIC_*` only; secrets via runtime env-file).

## I deployed Cloudflare and KV/bindings failed — why?

Create **your** `NEXT_INC_CACHE_KV` namespace and replace the ids in `wrangler.jsonc`. The repo ships Streamly account ids/routes for `streamly.watch` — personalize routes, public URL vars, and set `ENABLE_DEMO` false for production. See [Deploy Cloudflare](/getting-started/deploy-cloudflare).

## Is Streamly a static site?

No. Auth, APIs, playback admission, dashboards, and webhooks need a server runtime.

## Why do legal pages matter on Workers?

Workers cannot read `content/` from disk at runtime. Legal markdown is bundled via imports — see [Legal & Marketing](/viewer/legal-and-marketing).

## How do cron jobs run off Cloudflare?

`POST /api/internal/jobs/run` with `X-Streamly-Cron-Secret`.

## Related

* [Deploy Cloudflare](/getting-started/deploy-cloudflare)
* [Cloudflare Workers](/technical/cloudflare-workers)
* [Requirements](/getting-started/requirements)
