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.rstfor 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_IDINFLUXION_VAULT_URLINFLUXION_AZURE_CLIENT_IDINFLUXION_AZURE_CLIENT_SECRETINFLUXION_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"