Deploy BlindPass to GCP Cloud Run using the free tier. No VM required.
- GCP project with billing enabled
- gcloud CLI installed and authenticated:
gcloud auth application-default login
- Supabase project — supabase.com → New project → copy the Transaction pooler connection string from Settings → Database
- Upstash Redis — upstash.com → New database → copy the
REDIS_URL - Terraform ≥ 1.5 — developer.hashicorp.com/terraform/install
cd terraform
# 1. Copy and fill in variables
cp terraform.tfvars.example terraform.tfvars
$EDITOR terraform.tfvars
# 2. Initialise providers
terraform init
# 3. Preview changes
terraform plan
# 4. Apply (creates all resources + runs migrations)
terraform applyAfter apply, Terraform prints dns_setup_instructions. Add those DNS records at your registrar.
Cloud Run provisions a managed TLS certificate automatically once DNS propagates (up to 24 hours).
curl https://blindpass.example.com/health
# {"status":"ok","db":"ok"}terraform apply -var="image_tag=1.2.3"This updates both services and re-runs the migration job automatically.
terraform destroyWarning: This deletes all Cloud Run services, secrets, and service accounts. Your Supabase database and Upstash Redis are not affected (they are not managed by this module).
See modules/blindpass/README.md for the full variable reference.
Add to versions.tf before running terraform init:
terraform {
backend "gcs" {
bucket = "my-tf-state-bucket"
prefix = "blindpass"
}
}Create the bucket first:
gcloud storage buckets create gs://my-tf-state-bucket \
--location=us-east1 \
--uniform-bucket-level-access