Skip to main content
You don’t run this deployment by hand. An AI coding agent follows the Install guide and stops to ask you whenever a step needs a person. Most of the wall clock time is waiting on AWS: the EKS cluster takes 10 to 15 minutes, RDS 15 to 25 minutes (longer with Multi-AZ), the node group about 5 minutes, and the first load balancer about 3 minutes.
Full self-hosting on AWS is in closed beta. Contact us before your first install. New to full self-hosting? Read the Overview first.

What runs in your account

AWS runs Velt’s portable stack: Kubernetes and PostgreSQL instead of Cloud Run and Firebase. Everything is served from one HTTPS host behind one Application Load Balancer, and nothing calls a Velt-owned host at runtime. You deploy into GovCloud (aws-us-gov) or the commercial partition (aws). The partition is asserted, never assumed: the module refuses a plan whose credentials or region disagree with it.
1

Check the prerequisites

  • An AWS account in the target partition, and an administrator role for the install. The preflight simulates every action the module needs.
  • Permission to create an Amazon Cognito user pool for console sign-in, or another OIDC provider.
  • Someone who can create DNS records in the zone that holds your public host. They create the certificate’s validation record and the record that points at the load balancer. Find them before you start; nobody else can do this step.
  • On-Demand vCPU quota. Persistent mode needs 12 vCPUs at rest and up to 48 at the autoscaler’s ceiling during a node-group update. Sandbox mode needs 4 at rest and up to 16.
  • If the account is in an AWS Organization, know its service control policies: a region allow-list, a deny on IAM OIDC-provider actions, or a spend cap each change the install.
  • Someone available to run an AI coding agent for the duration.
Tools on the machine that runs the agent: AWS CLI 2.15+, Terraform 1.6+, Helm 3.17+, kubectl, cosign, oras, Node 18+, Docker, curl, python3, openssl, and jq. The agent runs the release’s preflight check before it starts. The check creates nothing and stops at the first problem.
2

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, email notifications, permission provider, FIPS mode) are off by default. You can turn each on later with a helm upgrade. The agent instructions list every input in full.
3

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-aws-state.json in your working directory; it lets a new session resume an interrupted install.
4

Stay available for the human steps

The agent pauses and asks at each of these moments.
Start the ACM certificate request early. Until it is ISSUED, the load balancer has no :443 listener and the Ingress has no address.
5

Wire your app

Set both axes in your app’s Velt config: where the SDK bundle downloads from (version and proxyConfig.cdnHost), and where the SDK talks to (selfHosted).
Rules that break production if violated:
  1. Set both axes. strict: true silences runtime calls, but only proxyConfig.cdnHost and version stop the bundle from loading from cdn.velt.dev.
  2. Pin version to the chart’s sdk.version. It defaults to the wrapper’s built-in version, and a mismatch 404s.
  3. Never set staging: true or develop: true on a self-hosted page. Both point at a Velt host.
  4. Serve the page from one of your configured app origins, so identify (and attachment CORS) admits it.
6

Confirm it is done

The deployment is complete only when all four pass:
  1. Console sign-in as the seeded admin lands on the dashboard.
  2. The app loads velt.js and its chunks from your host, and window.Velt.version matches the pin.
  3. A comment created in the app is visible in the console.
  4. A Network audit on both the app and console sessions shows no requests to velt.dev or other Velt-owned hosts.
With comment attachments on, a fifth check confirms uploads and downloads go to your own S3 bucket.

Troubleshooting your app

For infrastructure errors, ask your agent: the agent instructions include the full troubleshooting table.

Upgrading later

The AWS upgrade guide is in progress. Contact Velt before you upgrade a deployment.