GCP
XeroML runs on Google Cloud Platform via Google Kubernetes Engine (GKE), Cloud Run, or a Compute Engine VM with Docker Compose.
Recommended Architecture
| Component | GCP Service |
|---|---|
| Web application | GKE Autopilot or Cloud Run |
| Worker | GKE or Cloud Run |
| PostgreSQL | Cloud SQL (PostgreSQL) |
| Redis | Memorystore (Redis) |
| Blob storage | Cloud Storage (GCS) |
| TLS / Ingress | Google Cloud Load Balancer |
GKE Deployment
1. Create GKE Cluster
gcloud container clusters create-auto xeroml-cluster \ --region us-central1 \ --project your-project-id2. Set Up Cloud SQL
gcloud sql instances create xeroml-postgres \ --database-version=POSTGRES_15 \ --tier=db-n1-standard-1 \ --region=us-central1
gcloud sql databases create xeroml --instance=xeroml-postgresgcloud sql users create xeroml --instance=xeroml-postgres --password=<secure-password>3. Set Up Memorystore
gcloud redis instances create xeroml-redis \ --size=1 \ --region=us-central1 \ --redis-version=redis_7_04. Deploy with Helm
# Get GKE credentialsgcloud container clusters get-credentials xeroml-cluster --region us-central1
# Deploy XeroMLhelm install xeroml xeroml/xeroml \ --namespace xeroml \ --create-namespace \ -f values-gcp.yamlvalues-gcp.yaml:
database: url: "postgresql://xeroml:password@/xeroml?host=/cloudsql/project:region:instance"
redis: url: "redis://10.x.x.x:6379"
ingress: enabled: true className: gce host: xeroml.yourdomain.com annotations: kubernetes.io/ingress.global-static-ip-name: xeroml-ip networking.gke.io/managed-certificates: xeroml-certCloud Run
For lighter deployments, deploy the XeroML web container to Cloud Run:
gcloud run deploy xeroml-web \ --image ghcr.io/xeroml/xeroml:latest \ --platform managed \ --region us-central1 \ --port 3000 \ --min-instances 1 \ --max-instances 10 \ --set-env-vars DATABASE_URL="...",NEXTAUTH_SECRET="..." \ --allow-unauthenticatedCompute Engine (Single Server)
For development or small deployments, use Docker Compose on a Compute Engine VM:
gcloud compute instances create xeroml-vm \ --machine-type=n1-standard-2 \ --image-family=ubuntu-2204-lts \ --image-project=ubuntu-os-cloud \ --zone=us-central1-a
# SSH in, install Docker, follow Docker Compose guide