Deploy to Azure VM
Copy page
Deploy to Azure VM with Docker Compose
Create a VM Instance
- Go to Compute infrastructure | Virtual machines in your Azure Portal.
- Create a virtual machine
- Select a subscription and resource group
- Assign a name for the virtual machine
- Assign a region (e.g.
(US) East US 2) - For Availability options, select
No infrastructure redundancy required - Use image:
Ubuntu Server 24.04 LTS - x64 Gen2 - Recommended size is at least
Standard_D2s_v3(2 vcpus, 8 GiB memory). - Configure SSH (you will need to SSH into the VM)
- In the "Disks" tab, confirm the OS disk size is at least 128 GiB (P10).
- In the "Networking" tab, assign public IP address
- Click on "Review + create"
- After the VM is running, go to the "Network Settings" page under "Networking"
- Add inbound security rule for TCP ports: 3000,3002,3050,3051,3080
Install Docker Compose
- Install the Docker packages
- Grant permissions
Deploy SigNoz and Nango
Clone this repo, which includes Docker files with SigNoz and Nango:
Run this command to autogenerate a .env file:
Nango requires a NANGO_ENCRYPTION_KEY. Once you create this, it cannot be edited.
Here's an overview of the important environment variables when deploying to production. Make sure to review all of these in your .env file.
Build and deploy SigNoz, Nango, OTEL Collector, and Jaeger:
This may take up to 5 minutes to start.
Retrieve your SigNoz and Nango API Keys
To get your SigNoz API key SIGNOZ_API_KEY:
- Open SigNoz in a browser at
http://<vm_external_ip>:3080 - On first login, you will be prompted to create an admin account.
- Navigate to Settings → Account Settings → API Keys → New Key
- Choose a role, Viewer is sufficient for observability
- Set the expiration field to "No Expiry" to prevent the key from expiring
To get your Nango secret key NANGO_SECRET_KEY:
- Open Nango in a browser at
http://<vm_external_ip>:3050 - Nango auto-creates two environments, Prod and Dev. Select the one you will use.
- Navigate to Environment Settings to find the secret key
Deploy the Inkeep Agent Framework
From the root directory, create a new project directory for the Docker Compose setup for the Inkeep Agent Framework
Generate a .env file from the example:
Here's an overview of the important environment variables when deploying to production. Make sure to review all of these in your .env file.
For long-running agents or custom deployment requirements, you can override runtime limits like execution timeouts, maximum transfers, and generation steps. See Configure Runtime Limits for examples and the complete list of overridable settings.
Run with Docker:
Then open http://<vm_external_ip>:3000 in a browser!
Production
For a production deployment, you will want to restrict access to the VM and only expose 3002. To do this, we'll setup an Application Gateway and a Front Door (with https).
Application Gateway
- On the VM page, under "Networking" > "Load balancing", click on "Add load balancing" and create a new "Application Gateway"
- Provide a name for the gateway and a name for the routing rule. The routing rule should be configured to Port 80 HTTP.
- Wait for the gateway to deploy (can take >5 mins)
- On the gateway page, under "Settings" > "Backend pools", click on the pool. Under "Backend targets", add a target of type "Virtual machine" and select your VM.
- On the gateway page, under "Settings" > "Backend Settings", change the "Backend port" to 3002.
- On the gateway page, under "Settings" > "Health probes", add a new health probe. Provide a name, select HTTP for protocol. For the host use
127.0.0.1,3002for the port, and/healthfor the path. "Pick host name from backend settings" and "Pick port from backend settings" should be "No". Then select your "Backend settings".
Front Door
- Create an Azure Front Door. Continue with "Quick create".
- For the origin, select the "Application Gateway" you created.
- Disable caching.
- You will be assigned an autogenerated url with https from Azure. To add a custom domain, go to "Settings" > "Domains".
Restrict VM Access
- Modify the inbound security rules, for example, to only specific IPs. You will need this for building agents.
- All external access should only use the gateway and front door.