Installation / Deployment

This guide summarizes the supported ways to run Influxion and the required configuration.

Prerequisites

  • Register the Influxion API in Entra ID before running any deploy scripts. You must know the API App Registration “Application (client) ID” and provide it as INFLUXION_AZURE_API_CLIENT_ID.

  • See docs/azure-setup.rst for details on App Registration, scopes, and Key Vault.

  • Common environment variables (set as script arguments or via environment): - INFLUXION_AZURE_TENANT_ID (required) - INFLUXION_AZURE_API_CLIENT_ID (required) - INFLUXION_VAULT_URL (optional) - INFLUXION_AZURE_CLIENT_ID (optional) - INFLUXION_AZURE_CLIENT_SECRET (optional)

Direct on Ubuntu (Supervisor + NGINX)

Standalone (API only): deploy_ubuntu_standalone.sh

  • Minimal footprint, can run on Azure B1s (1 vCPU/1 GiB). Similar sizes work on AWS (e.g., t3.micro) and GCP (e.g., e2-micro).

  • Example:

    ./deploy_ubuntu_standalone.sh \
      --postgres-password "<pg-pass>" \
      --azure-tenant-id "<tenant-guid>" \
      --azure-api-client-id "<api-client-guid>" \
      --ingress-host "influxion.example.com" \
      --acme-email "you@example.com"
    

Distributed (API + Celery workers): deploy_ubuntu.sh

  • Suitable for a small VM with more headroom than standalone. Provides possibility of asynchnonous PDF generation with Celery workers.

  • Example:

    ./deploy_ubuntu.sh \
      --postgres-password "<pg-pass>" \
      --rabbitmq-password "<rmq-pass>" \
      --azure-tenant-id "<tenant-guid>" \
      --azure-api-client-id "<api-client-guid>" \
      --ingress-host "influxion.example.com" \
      --acme-email "you@example.com"
    

Local with Docker Compose

A .env file at the repo root can provide:

  • INFLUXION_AZURE_TENANT_ID

  • INFLUXION_VAULT_URL

  • INFLUXION_AZURE_CLIENT_ID

  • INFLUXION_AZURE_CLIENT_SECRET

  • INFLUXION_AZURE_API_CLIENT_ID

Standalone: docker-compose.standalone.yml

  • Starts Postgres and the API only.

  • Command:

    docker-compose -f docker-compose.standalone.yml up --build
    

Distributed: docker-compose.yml

  • Starts Postgres, RabbitMQ, API, and multiple workers.

  • Command:

    docker-compose up --build
    

Both Compose setups include a Postgres service and set INFLUXION_DATABASE_URL for the app/workers.

Local Kubernetes (minikube)

Use deploy_to_docker.ps1 to provision to local Kubernetes (minikube) with Helm.

  • Example (PowerShell):

    .\deploy_to_docker.ps1 `
      -VaultUrl "https://<your-vault>.vault.azure.net" `
      -AzureClientId "<client-id>" `
      -AzureApiClientId "<api-client-id>" `
      -AzureClientSecret "<client-secret>" `
      -AzureTenantId "<tenant-id>" `
      -IngressHost "influxion.local" `
      -AcmeEmail "you@example.com"
    

Azure Kubernetes Service (AKS)

Use deploy_to_aks.ps1 to deploy the Helm chart.

  • Example (PowerShell):

    .\deploy_to_aks.ps1 `
      -ResourceGroupName "my-rg" `
      -AKSName "my-aks" `
      -ACRName "myacrname" `
      -Location "westus2" `
      -VaultUrl "https://<your-vault>.vault.azure.net" `
      -VaultClientId "<client-id>" `
      -AzureApiClientId "<api-client-id>" `
      -VaultClientSecret "<client-secret>" `
      -VaultTenantId "<tenant-id>" `
      -IngressHost "influxion.example.com" `
      -AcmeEmail "you@example.com"