Full self-hosting on Azure is in closed beta. Contact us before your first install. New to full self-hosting? Read the Overview first.
What runs in your subscription
Azure runs Velt’s portable stack: Kubernetes and PostgreSQL instead of Cloud Run and Firebase. Everything is served from one public host, and nothing calls a Velt-owned host at runtime.
Azure commercial (
AzureCloud) and Azure Government (AzureUSGovernment) use the same commands. The install guide calls out the few values that differ.
Check the prerequisites
- An Azure subscription where the deploying identity holds Owner, or Contributor + User Access Administrator. Contributor alone can’t create the Key Vault grant the module needs.
- An Entra tenant where you (or an admin) can create a single-page app registration for console sign-in and a security group for cluster admins.
- vCPU quota in your region. The default footprint (3 ×
Standard_D4ds_v5) needs at least 16 regional and family vCPUs. The small footprint (3 ×Standard_D2ds_v4) fits a 10-vCPU subscription. - A region where PostgreSQL Flexible Server is offered to your subscription. The agent checks this before the apply.
- Someone available to run an AI coding agent for the duration.
kubectl, Azure’s kubelogin, cosign, oras, Node 18+, Docker, curl, python3, openssl, jq, and dig. The agent runs the release’s preflight check before it starts and stops at the first problem: tools, permissions, region, quota, or name availability.Decide your inputs
Decide these once, up front. The agent asks for all of them before it starts.
Optional features (REST API, comment attachments, advanced webhooks, console SAML sign-in and SCIM, FIPS mode, metric alerts) are off by default. You can turn each on later with a
helm upgrade. The agent instructions list every input in full.Start your agent
Copy the agent instructions from the Install guide and paste them into your AI coding agent. Then start it with a prompt like this, filled in with your inputs:The agent ends with a final report: your endpoints, your app’s config, and where every secret is stored. Keep
velt-selfhost-azure-state.json in your working directory; it lets a new session resume an interrupted install.Stay available for the human steps
The agent pauses and asks at each of these moments, handing you the exact command or portal URL.
Wire your app
Set both axes in your app’s Velt config: where the SDK bundle downloads from (Rules that break production if violated:
version and proxyConfig.cdnHost), and where the SDK talks to (selfHosted).- React / Next.js
- Other Frameworks
- Set both axes.
strict: truesilences runtime calls, but onlyproxyConfig.cdnHostandversionstop the bundle from loading fromcdn.velt.dev. - Pin
versionto the chart’ssdk.version. It defaults to the wrapper’s built-in version, and a mismatch 404s. - Never set
staging: trueordevelop: trueon a self-hosted page. Both point at a Velt host. portableBackendUrlends in/api. Root paths such as/identifyare not routed.
Confirm it is done
The deployment is complete only when all four pass:
- Console sign-in as the seeded admin email lands on the dashboard.
- The app loads
velt.jsand its chunks from your host, andwindow.Velt.versionmatches the pin. - A comment created in the app is visible in the console.
- A Network audit on both the app and console sessions shows no requests to
velt.devor other Velt-owned hosts.
Troubleshooting your app
For infrastructure errors, ask your agent: the agent instructions include the full troubleshooting table.

