docs/main/deployment-guide/server/linux/deploy-azure-native-vm.mdx
Mattermost is published as an Azure Marketplace solution that provisions a production-ready Mattermost stack in your own subscription using Azure-managed services for compute, database, shared file storage, and load balancing. This option is intended for organizations that want a resilient Mattermost deployment they can scale and operate within their existing Azure tenant.
The template provisions a self-contained, production-ready stack in the resource group you select, including:
Open the Mattermost - Azure-Native (VM-based) offer in the Azure Marketplace, click Get it now, select the plan, and then click Create to open the deployment wizard.
On the Basics tab, configure the following:
mm-prod).On the Application tab, configure how the Mattermost application is sized and how administrators access the VMs.
11.6.2). See the Mattermost release policy for supported versions.On the Database tab, configure the managed PostgreSQL service and the shared NFS file share.
PostgreSQL compute SKU: Memory-optimized Flexible Server SKU. Defaults to the SKU recommended for your scaling tier; pick a SKU that is supported in your region. Available choices are Standard_E2ds_v5, Standard_E4ds_v5, and Standard_E8ds_v5.
PostgreSQL high availability: Choose how PostgreSQL is made resilient:
For regional support of Flexible Server SKUs and HA modes, see Azure regions for PostgreSQL Flexible Server.
Primary availability zone and standby availability zone: Shown when HA is enabled. For zone-redundant HA, the primary and standby zones must be different. Pick zones supported in your region for the PostgreSQL SKU you chose.
PostgreSQL admin username and password: Administrator credentials for the Flexible Server. Avoid reserved names such as azure_superuser. The password must meet Azure Flexible Server password complexity requirements.
Mattermost database user password: In the Mattermost database connection section, set the password for the dedicated Mattermost database user that the application nodes use to connect to PostgreSQL. This is separate from the PostgreSQL administrator credentials. The password must meet the same complexity rules as the admin password.
Geo-redundant backup: Replicates PostgreSQL backups to Azure's paired region for cross-region disaster recovery. This setting cannot be changed after deployment.
NFS share size (GiB): Size of the Azure Files (NFS) share used by Mattermost for shared application data. Minimum 100 GiB.
:::note Backup retention for PostgreSQL is set to 35 days at deployment time. You can change retention from the Azure portal after the deployment completes. :::
On the Networking tab, configure the virtual network and how Mattermost is exposed to users.
10.0.0.0/22. Pick a range that does not overlap with other VNets you plan to peer with.mattermost.example.com). After deployment, point this hostname to the Azure-assigned DNS name of the Application Gateway public IP (typically using a CNAME record for subdomains).Review your settings, accept any Marketplace terms if prompted, then select Create. Provisioning typically takes 20–50 minutes, depending on your PostgreSQL configuration. Allow a few additional minutes after Azure reports the deployment as Succeeded before the application is reachable.
After deployment completes:
In the Azure portal, open the resource group you used.
Open the public IP resource attached to your Application Gateway (often named <prefix>-ag-pip). Under Essentials, note the DNS name (Azure-assigned FQDN).
If you deployed without HTTPS, your site URL is:
http://<dns-label>.<region>.cloudapp.azure.com
If you deployed with HTTPS, create a DNS record that points your custom domain to the Azure-assigned DNS name of the Application Gateway public IP (typically CNAME for subdomains; use your provider's apex-compatible record type if using a root domain). Once DNS propagates, your site URL is:
https://<your-custom-domain>
Congratulations! You've successfully deployed a production-ready Mattermost stack on Azure.
The VM scale set runs a Mattermost Marketplace VM image matching the version you selected in Step 3. Mattermost publishes new image versions for each supported release. To upgrade, point the VMSS at a newer image version in your deployment region. Application data stays in PostgreSQL and on the Azure Files share; the upgrade rolls application instances to VMs built from the updated image.
Update the VMSS to the new image version:
az vmss update \
--resource-group <resource-group> \
--name <resource-name-prefix>-vmss \
--set virtualMachineProfile.storageProfile.imageReference.version=<new-version>
The VMSS uses a rolling upgrade policy and an application health probe on /api/v4/system/ping, so instances are replaced in batches while the Application Gateway keeps serving traffic to healthy nodes.
Monitor the rollout in the Azure portal: open your VMSS → Instances (or Rolling upgrades) and wait until all instances are healthy and running the new model.
Verify Mattermost: Verify Mattermost uses the new version via System Console → About.