Skip to content

Azure

XeroML runs on Azure via Azure Kubernetes Service (AKS), Azure Container Apps, or a single VM with Docker Compose.

ComponentAzure Service
Web applicationAKS or Azure Container Apps
WorkerAKS or Azure Container Apps
PostgreSQLAzure Database for PostgreSQL
RedisAzure Cache for Redis
Blob storageAzure Blob Storage
TLS / IngressAzure Application Gateway or nginx ingress

AKS Deployment

1. Create Resource Group and AKS Cluster

Terminal window
az group create --name xeroml-rg --location eastus
az aks create \
--resource-group xeroml-rg \
--name xeroml-cluster \
--node-count 3 \
--node-vm-size Standard_D2s_v3 \
--enable-managed-identity

2. Set Up PostgreSQL

Terminal window
az postgres flexible-server create \
--resource-group xeroml-rg \
--name xeroml-postgres \
--admin-user xeroml \
--admin-password <secure-password> \
--sku-name Standard_D2s_v3 \
--tier GeneralPurpose

3. Set Up Redis

Terminal window
az redis create \
--resource-group xeroml-rg \
--name xeroml-redis \
--sku Basic \
--vm-size c0

4. Deploy with Helm

Terminal window
# Connect to AKS cluster
az aks get-credentials --resource-group xeroml-rg --name xeroml-cluster
# Deploy XeroML
helm install xeroml xeroml/xeroml \
--namespace xeroml \
--create-namespace \
-f values-azure.yaml

values-azure.yaml:

database:
url: "postgresql://xeroml@xeroml-postgres:password@xeroml-postgres.postgres.database.azure.com:5432/xeroml"
redis:
url: "rediss://xeroml-redis.redis.cache.windows.net:6380"
ingress:
enabled: true
className: nginx
host: xeroml.yourdomain.com
annotations:
cert-manager.io/cluster-issuer: letsencrypt

Azure Container Apps

For serverless container deployment:

Terminal window
az containerapp env create \
--name xeroml-env \
--resource-group xeroml-rg \
--location eastus
az containerapp create \
--name xeroml-web \
--resource-group xeroml-rg \
--environment xeroml-env \
--image ghcr.io/xeroml/xeroml:latest \
--target-port 3000 \
--ingress external \
--min-replicas 1 \
--max-replicas 10

VM (Single Server)

For development or small teams, use Docker Compose on an Azure VM:

Terminal window
# Create a VM (Standard_D2s_v3 recommended)
az vm create \
--resource-group xeroml-rg \
--name xeroml-vm \
--image Ubuntu2204 \
--size Standard_D2s_v3 \
--admin-username azureuser \
--generate-ssh-keys
# Install Docker and follow the Docker Compose guide

Docker Compose Guide