Prerequisites
- AWS account with permissions to deploy CloudFormation stacks and create IAM resources. See detailed access requirements.
- Capacity planning for instance types and concurrency. See capacity planning. Ensure sufficient EC2 service quotas.
- AMI allowlisting if your organization restricts AMI usage. Allowlist owner account
995913728426(AMI:gitpod/images/gitpod-next/ec2-runner-ami-*). - VPC and subnets in 2-3 availability zones. EC2 subnets for environment instances, load balancer subnets routable from your users’ network. Review networking to choose a connectivity option.
- Domain name that you control with DNS modification capabilities.
- SSL/TLS certificate in ACM with SANs for
yourdomain.comand*.yourdomain.com.
Create runner in Ona
- In the Ona dashboard, go to Settings > Runners and click Set up a new runner
- Select AWS as the provider
- Enter a name, select the AWS region, and click Create
Runners are regional and can only launch environments in the AWS region they are deployed in. For multi-region support, set up multiple runners in different regions. The region cannot be changed after deployment.
CloudFormation template deployment
Ensure you are signed into the correct AWS account, then click Open AWS CloudFormation in the runner details page. This opens the AWS console with the template pre-loaded. Most parameters are auto-filled. The template is organized into the parameter groups described below.Ona configuration
The Runner ID, Exchange Token, and API Endpoint are auto-generated. Do not modify these values.Network configuration
VPC and subnet settings for the runner and environments.
Recommendations:
- Select 2-3 Availability Zones for high availability
- EC2 subnets: use private subnets sized for your expected workload
- Load balancer subnets: must have CIDR ranges routable from your users’ network
- Ensure connectivity from user locations via VPN, Direct Connect, or Transit Gateway
DNS configuration
Domain name, SSL certificate, and load balancer visibility.
Load balancer visibility options:
- internal: load balancer is only accessible from within your VPC (recommended for private deployments)
- internet-facing: load balancer is accessible from the public internet (requires public subnets)
Advanced configuration
The settings below are for organizations with additional network or security requirements. Most deployments do not need these.Load balancer ingress control
By default, the CloudFormation template creates a security group that allows all traffic (
0.0.0.0/0) to ports 80 and 443 on the load balancer. To restrict ingress to specific source IP ranges or security groups, provide your own security group.
HTTP proxy configuration
For environments behind corporate firewalls or proxies:
When configuring a proxy,
No Proxy must include at minimum: .internal, 169.254.0.0/16, app.gitpod.io, and .amazonaws.com.
When proxy changes take effect:
- Runner infrastructure: immediately after CloudFormation update
- Content initialization: after environment restart
- Devcontainer: after rebuild
- Docker in Docker: after container recreation
Custom CA certificate
If your network uses a corporate proxy or internal services with certificates signed by a private Certificate Authority, configure the runner to trust your CA.This is commonly needed alongside HTTP proxy configuration when the proxy performs TLS inspection with a corporate CA.
- Create an S3 bucket with a name starting with
gitpod-(e.g.gitpod-myorg) - Upload your
.pemfile to the bucket (e.g.s3://gitpod-myorg/shared/ca-bundle.pem) - Ensure the bucket is accessible by the runner’s IAM role (buckets prefixed with
gitpod-are allowed by default) - Set the
CustomCATrustBundleparameter to the S3 URL
Deploy
- Review all parameters
- Check the box acknowledging CloudFormation will create IAM resources
- Click Create stack
Deployment typically takes 20-25 minutes. Monitor progress in the CloudFormation Events tab.
Configure DNS
After deployment, get the load balancer DNS name from the CloudFormation Outputs tab (look for LoadBalancerDNS). Create DNS records pointing to this value for both the root domain and wildcard.Route 53
Create alias records pointing to your Network Load Balancer:Other DNS providers
Create CNAME records pointing to your load balancer DNS:
DNS changes typically propagate within 5-60 minutes.
Verify deployment
Once DNS propagates, verify the runner is healthy:Next steps
- Configure repository access - Set up access to your Git repositories
- Environment classes - Configure compute resources for environments
- Dev container image cache - Speed up environment starts
- Model access - Configure custom LLM providers such as AWS Bedrock or AWS Bedrock Mantle
- Troubleshooting - Common problems and diagnostic steps