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: .. code-block:: bash ./deploy_ubuntu_standalone.sh \ --postgres-password "" \ --azure-tenant-id "" \ --azure-api-client-id "" \ --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: .. code-block:: bash ./deploy_ubuntu.sh \ --postgres-password "" \ --rabbitmq-password "" \ --azure-tenant-id "" \ --azure-api-client-id "" \ --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: .. code-block:: bash docker-compose -f docker-compose.standalone.yml up --build Distributed: ``docker-compose.yml`` - Starts Postgres, RabbitMQ, API, and multiple workers. - Command: .. code-block:: bash 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): .. code-block:: powershell .\deploy_to_docker.ps1 ` -VaultUrl "https://.vault.azure.net" ` -AzureClientId "" ` -AzureApiClientId "" ` -AzureClientSecret "" ` -AzureTenantId "" ` -IngressHost "influxion.local" ` -AcmeEmail "you@example.com" Azure Kubernetes Service (AKS) ------------------------------ Use ``deploy_to_aks.ps1`` to deploy the Helm chart. - Example (PowerShell): .. code-block:: powershell .\deploy_to_aks.ps1 ` -ResourceGroupName "my-rg" ` -AKSName "my-aks" ` -ACRName "myacrname" ` -Location "westus2" ` -VaultUrl "https://.vault.azure.net" ` -VaultClientId "" ` -AzureApiClientId "" ` -VaultClientSecret "" ` -VaultTenantId "" ` -IngressHost "influxion.example.com" ` -AcmeEmail "you@example.com"