Skip to content

Documentation

Troubleshoot a self-hosted installation

Fix quota, DNS, certificate, and runner errors on a self-hosted SuperPlane installation.

Use this page when an install stops. For a single VM, read the Compose logs. For a cloud install, read the Fleet Manager log. Match the error text, then apply the fix.

Terminal window
docker compose logs app --tail=50
docker compose logs caddy --tail=50
docker compose --profile runners logs fleet-manager --tail=50
Terminal window
kubectl logs -n superplane deploy/fleet-manager-fleet-manager --tail=20
SymptomProviderFix
Certificate stays pendingSingle VMThe DNS A record must point at the VM. Ports 80 and 443 must reach Caddy. Run docker compose logs caddy --tail=50.
app is not healthySingle VMRun docker compose logs app --tail=80. superplane.env must set BLOB_STORAGE_PROVIDER=filesystem. Run ./install.sh again. It keeps the existing secrets.
No runner container startsSingle VMOn Set up runner fleets, select This VM and run the command from that page. Then run docker compose --profile runners ps.
runner version does not matchSingle VMrunnerVersion in fleet-manager.yaml must equal the tag of ghcr.io/superplanehq/runner. Run ./install.sh, then run the command on Start runners on this VM again.
SkuNotAvailable or NotAvailableForSubscriptionAzureChange the region or runner_zones. See the region table in the install guide.
QuotaExceededAzureRequest quota for DDSv4 or Dpdsv6, or lower maximum capacity. A new subscription often has 4 regional vCPUs, which fits one node and one runner.
On-Demand vCPU limit reachedAWSRequest more Standard vCPU quota (quota code L-1216C47A), or lower maximum capacity.
failed to load assume roleAWSThe profile assumes a role from an aws login source profile. Export the CLI credentials, run unset AWS_PROFILE, then run plan again. See the AWS sign-in step.
arm64 runner fails Trusted LaunchAzureSet vmSize to Standard_D2pds_v6. Do not use a v5 size. Run Helm again.
Values file contains <AZURE_ZONE>AzureSet zones to terraform output -raw runner_zones, then run Helm again.
ParameterOutOfRange: The value of the 'Version' should be in: []AzureSet create_postgresql_flexible_server = false and apply again.
AMI not found, or the wizard disables a fleetAWSStay in us-east-1. Run the image command in the install guide and set both AMI IDs to the newest match. Apply again and reload the wizard.
Runner image not foundAzureUse eastus or westus3 for both architectures.
Pods stay PendingGoogle CloudSet machine_type to e2-standard-2 or larger and apply again. That change replaces the cluster.
The page loads, then scripts failGoogle CloudClear superplane_image_tag so the chart selects its image. A plain commit SHA is blocked on your domain. Apply again and hard-refresh.
ZONE_RESOURCE_POOL_EXHAUSTEDGoogle CloudAdd zones in runner_zones and apply again.
Certificate stays pendingAWS, Azure, Google CloudThe DNS name must be the host in domain_name. On AWS, dig +short your_domain CNAME @8.8.8.8 must print the load balancer hostname. On Azure and Google Cloud, dig +short your_domain @8.8.8.8 must print the address.
No runner machine appearsAWS, AzureRun helm list -n superplane. Raise maxCapacity when every machine is busy.
fleet not found (404) once in the logAWS, Azure, Google CloudIgnore that line when later lines show reconciliation.
terraform destroy stops on the load balancerAWSFollow the AWS installer README. Do not delete the Terraform state.

A first task with warm capacity 0 waits while the machine boots. That wait is the cold start, not a failed install.