---
title: Deploy on Azure using ARM template
slug: edgemanager/lem-get-started/install-lem/deploy-on-azure-arm-template
docTags: 
createdAt: 2026-09-22T07:21:38.961Z
---

If you have already purchased a private offer through the Marketplace, finish setup in [Deployment of Litmus Edge Manager from Azure SaaS](docId\:JHX-H4KsN4MwVn-7_DnJS), which covers its activation steps. To deploy from the public Marketplace listing instead, see [Deployment of Litmus Edge Manager on Azure](docId\:uPxN32d_3QuQ0Ll3URjmT).

## Before you begin

Make sure you have:

- Access to the Azure Portal, with permission to create resource groups, virtual machines, and networking resources.
- An SSH key pair. The template only accepts a public key for the administrator account; there's no password-based login.
- Reviewed the [System Requirements](docId\:aWL1WPK_ALzMwANWXyWIU) for sizing guidance.
- Reviewed the [Firewall Port Configuration](docId\:aWL1WPK_ALzMwANWXyWIU) Requirements.
- Installed the Azure CLI or Azure PowerShell, if you plan to deploy from the command line instead of the portal.

## Deploying Litmus Edge Manager

The deployment methods below create the same resources: the LEM virtual machine from the Azure Marketplace image, a network security group, a virtual network and subnet, and, optionally, a public IP.

The network security group opens the following ports.

| **Port** | **Protocol** | **Description**                       |
| -------- | ------------ | ------------------------------------- |
| 80       | TCP          | HTTP web interface                    |
| 443      | TCP          | HTTPS secure web interface            |
| 8446     | TCP          | LEM administration console            |
| 8883     | TCP          | MQTT SSL for IoT device communication |
| 123      | UDP          | NTP time synchronization              |
| 51820    | UDP          | Remote edge connections               |

### Step 1: Deploy the template

**To deploy using Deploy on Azure:**

1. Open the [lem-azure repository](https://github.com/litmusautomation/lem-azure) on GitHub and select the **Deploy on Azure** button at the top of the README, then sign in to the Azure Portal if prompted.
2. Select a subscription, then create a resource group or choose an existing one.
3. Enter the template parameters, starting with your SSH public key. See Template parameters below.
4. Select **Review + create**, review the configuration, then select **Create**.

**To deploy using the Azure CLI:**

Download `azuredeploy.json` from the [lem-azure repository](https://github.com/litmusautomation/lem-azure), then sign in with your Azure login, select the subscription, and run following command.

:::BlockQuote
az deployment group create \\
&#x20; \--resource-group \<resource-group-name> \\
&#x20; \--template-file azuredeploy.json \\
&#x20; \--parameters sshPublicKey="\<your-ssh-public-key>"
:::

**To deploy using Azure Powershell:**

Download `azuredeploy.json` from the [lem-azure repository](https://github.com/litmusautomation/lem-azure), then sign in with `Connect-AzAccount`, and run following command.

:::BlockQuote
New-AzResourceGroupDeployment \`
&#x20; -ResourceGroupName \<resource-group-name> \`
&#x20; -TemplateFile azuredeploy.json \`
&#x20; -sshPublicKey "\<your-ssh-public-key>"
:::

### Step 2: Access Litmus Edge Manager

The deployment returns the following outputs.

| **Output**       | **Description**                                           |
| ---------------- | --------------------------------------------------------- |
| vmName           | Name of the deployed VM                                   |
| privateIpAddress | Private IP address                                        |
| publicIpAddress  | Public IP address, if configured                          |
| adminConsoleUrl  | URL to the LEM admin console (https\://\<public-ip>:8446) |
| webInterfaceUrl  | URL to the web interface (https\://\<public-ip>)          |
| adminUsername    | Admin username for SSH                                    |
| sshCommand       | SSH command to connect to the VM                          |

After deployment completes, you can:

- Access the LEM administration console at https\://\<public-ip>:8446`https://<public-ip>:8446`.
- Access the web interface at `https://<public-ip>`.&#x20;
- Connect over SSH using `ssh <adminUsername>@<public-ip>`. The network security group doesn't open port 22 by default; add an inbound rule for TCP port 22 before you connect.

## Template parameters

**Required parameter**

| **Parameter**  | **Description**                                 |
| -------------- | ----------------------------------------------- |
| `sshPublicKey` | SSH public key for the VM administrator account |

**VM configuration**

| **Parameter**   | **Description**                                             | **Default value**       |
| --------------- | ----------------------------------------------------------- | ----------------------- |
| `projectName`   | Name prefix for generating resource names (3-10 characters) | lem                     |
| `location`      | Azure region for deployment                                 | Resource group location |
| `vmSize`        | VM size (minimum recommended: Standard\_B4ms)               | Standard\_B4ms          |
| `adminUsername` | VM administrator username                                   | lemadmin                |
| `osDiskSizeGB`  | OS disk size in GB (128-1024)                               | 160                     |

**Network configuration**

| **Parameter**                 | **Description**                 | **Default value** |
| ----------------------------- | ------------------------------- | ----------------- |
| `virtualNetworkNewOrExisting` | Create new or use existing VNet | new               |
| `virtualNetworkName`          | Name of virtual network         | lem-vnet          |
| `virtualNetworkResourceGroup` | Resource group of existing VNet | Current RG        |
| `virtualNetworkAddressPrefix` | Address prefix for new VNet     | 10.0.0.0/16       |
| `subnetName`                  | Name of subnet                  | lem-subnet        |
| `subnetAddressPrefix`         | Address prefix for new subnet   | 10.0.0.0/24       |

**Public IP configuration**

LEM doesn't require a public IP. It only needs to be reachable from the Litmus Edge (LE) instances that connect to it and from LEM users. Where reachability is private (VNet peering, VPN, or ExpressRoute), set *publicIpNewOrExistingOrNone* *`publicIpNewOrExistingOrNone`* to none.

| **Parameters**                | **Description**                                  | **Default value** |
| ----------------------------- | ------------------------------------------------ | ----------------- |
| `publicIpNewOrExistingOrNone` | Create new, use existing, or none (private only) | new               |
| `publicIpName`                | Name of public IP address                        | lem-pip           |
| `publicIpResourceGroup`       | Resource group of existing public IP             | Current RG        |

**Tags**

Enter tags in the parameter field as JSON, for example \{"environment": "production", "costCenter": "IT-12345", "owner": "admin\@company.com"}.

| **Parameter**              | **Description**              |
| -------------------------- | ---------------------------- |
| `vmTags`                   | Tags for the virtual machine |
| `networkSecurityGroupTags` | Tags for the NSG             |
| `virtualNetworkTags`       | Tags for the VNet            |
| `publicIpTags`             | Tags for the public IP       |
| `networkInterfaceTags`     | Tags for the NIC             |

## License

Litmus Edge Manager is a commercial product. Contact [Litmus Automation](https://litmus.io/) for licensing information.
