Skip to content

Cloud Deployment

Deploy DuraGraph on any cloud provider with full control over your infrastructure. DuraGraph is designed to be cloud-agnostic and runs anywhere you can deploy containers.

DuraGraph runs on any cloud that supports Docker containers:

  • AWS - ECS, EKS, EC2
  • Google Cloud - Cloud Run, GKE, Compute Engine
  • Azure - Container Apps, AKS, VMs
  • DigitalOcean - App Platform, Kubernetes
  • Fly.io - Global edge deployment
  • Railway - Simple container hosting
  • Render - Managed infrastructure

Deploy in your own data center with:

  • Docker Compose for single-node deployments
  • Kubernetes for production clusters
  • Air-gapped environments supported

Mix cloud and on-premises deployments:

  • Manage multiple environments from a single dashboard
  • Federated execution across regions
  • Data residency compliance

Deploy on Fly.io Deploy to Render Deploy on Railway Deploy on DigitalOcean

Terminal window
# Clone and deploy
git clone https://github.com/duragraph/duragraph.git
cd duragraph
docker-compose up -d
Terminal window
# Using Helm
helm repo add duragraph https://charts.duragraph.ai
helm install duragraph duragraph/duragraph

ECS with Fargate

Terminal window
# Create ECS cluster
aws ecs create-cluster --cluster-name duragraph
# Deploy using CDK or CloudFormation
cd deploy/aws
cdk deploy

Managed Database Options:

  • Amazon RDS for PostgreSQL
  • Amazon ElastiCache for Redis (optional caching)
  • Amazon MSK or self-managed NATS

Cloud Run

Terminal window
# Build and push image
gcloud builds submit --tag gcr.io/PROJECT_ID/duragraph
# Deploy to Cloud Run
gcloud run deploy duragraph \
--image gcr.io/PROJECT_ID/duragraph \
--platform managed \
--allow-unauthenticated

Managed Database Options:

  • Cloud SQL for PostgreSQL
  • Memorystore for Redis

Container Apps

Terminal window
# Create container app
az containerapp create \
--name duragraph \
--resource-group myResourceGroup \
--image duragraph/duragraph:latest \
--target-port 8080 \
--ingress external

Managed Database Options:

  • Azure Database for PostgreSQL
  • Azure Cache for Redis
ComponentRequirement
CPU2 vCPUs
Memory4GB RAM
Storage20GB SSD
DatabasePostgreSQL 14+
ComponentRequirement
CPU4+ vCPUs
Memory8GB+ RAM
Storage100GB+ SSD
DatabasePostgreSQL 14+ with replicas
NATSJetStream enabled
Terminal window
# Required
DATABASE_URL=postgresql://user:pass@host:5432/duragraph
NATS_URL=nats://localhost:4222
# Optional
PORT=8080
LOG_LEVEL=info
AUTH_ENABLED=false
  • Use private subnets for database and NATS
  • Enable TLS for all external connections
  • Configure firewall rules appropriately

DuraGraph supports multiple authentication methods:

Terminal window
# JWT Authentication
AUTH_ENABLED=true
JWT_SECRET=your-secret-key
# OAuth/OIDC (coming soon)
OAUTH_PROVIDER=google
OAUTH_CLIENT_ID=...
OAUTH_CLIENT_SECRET=...
  • In Transit: TLS 1.3 for all connections
  • At Rest: Use cloud provider’s encryption (RDS encryption, etc.)

DuraGraph exposes Prometheus metrics at /metrics:

prometheus.yml
scrape_configs:
- job_name: 'duragraph'
static_configs:
- targets: ['duragraph:8080']
Terminal window
# Liveness probe
curl http://localhost:8080/health
# Readiness probe
curl http://localhost:8080/health
kubernetes/multi-region.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: duragraph
spec:
replicas: 3
strategy:
type: RollingUpdate
template:
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule

Configure PostgreSQL with read replicas for high availability:

Terminal window
# Primary
DATABASE_URL=postgresql://primary:5432/duragraph
# Read replicas (for queries)
DATABASE_READ_URL=postgresql://replica:5432/duragraph

Start small and scale based on actual usage:

WorkloadRecommended Instance
Developmentt3.small / e2-small
Production (small)t3.large / e2-standard-2
Production (large)m5.xlarge / n2-standard-4

Use spot instances for non-critical workloads:

# EKS spot instances
nodeSelector:
lifecycle: Ec2Spot