Blog Post

Apps on Azure Blog
6 MIN READ

Strapi on App Service: Quick start

Nitesh_Jain's avatar
Nitesh_Jain
Icon for Microsoft rankMicrosoft
Apr 09, 2025

Steps to deploy Strapi application on Azure Linux App Service

Introduction

Strapi is an open-source, headless CMS that is highly customizable and developer-friendly, making it a popular choice for content management. When it comes to Strapi hosting, deploying Strapi, or self hosting Strapi, Azure App Service stands out as a premier solution. Azure App Service is a fully managed platform for building, deploying, and scaling web apps, offering unparalleled scalability and reliability. 

In this quick start guide, you will learn how to create and deploy your first Strapi site on Azure App Service Linux, using Azure Database for MySQL or PostgreSQL, along with other necessary Azure resources.

Steps to deploy Strapi on App Service

What is Strapi on App Service?

App Service is a fully managed platform for building, deploying, and scaling web apps. Deploying Strapi on App Service brings together the power of Strapi's flexible content management capabilities with the scalability and reliability of Microsoft's cloud infrastructure. 

This offering integrates key Azure services such as:

  • Azure App Service
  • Azure Database for MySQL flexible server or PostgreSQL flexible server
  • Azure Email communication service
  • Azure Virtual Network (VNET)
  • Azure Blob Storage
  • Azure Managed Identity

For more information read our Strapi on App Service overview blog.

Prerequisites

Before you deploy, customize, and consume this solution,

Deploy Strapi app 

You can deploy Strapi via the following ways,

  1. Azure portal (recommended)
  2. Azure CLI
  3. Azure PowerShell

Steps to deploy via Azure portal

  1. Go to portal.azure.com and sign in.
  2. Navigate to the Azure Marketplace page for Strapi on App Service, and click on create.
  3. Provide Project details and Instance details
    1. Select your subscription.
    2. Create a new resource group (e.g., MyStrapiApp-RG).
    3. Choose an appropriate region for your Azure resources (e.g., East US).
    4. Provide an app name for Strapi application (e.g., MyStrapiApp).
    5. Select a database client (PostgreSQL or MySQL). Refer to the Strapi blog for guidance.
    6. Set an admin username and password for the database and confirm the password.
    7. Configure storage account public access. By default, it is set to true, meaning media asset URLs are publicly accessible. Set it to false to enhance security and restrict access to authorized users only.
    8. Choose the geographic location for your email data used by Azure Communication Service to send emails. Select a location that meets your compliance and data residency requirements.

     4. Strapi settings: Select Application environment mode,

    1. Development (recommended for Beginners): Use this mode when you are starting, developing, or testing your Strapi application. In this mode, you can directly update the content schema and data from Strapi admin portal. The Strapi App Service demo template package will be deployed by default to App Service.
    2. Production: For production mode, no default code or package will be deployed. You need to install Strapi locally and set up CI/CD. Here are the steps for that:
      1. Get Strapi running locally
      2. Push your Strapi code to GitHub
      3. Configure CI/CD on Azure App Service

Read more in FAQ documentation for details on application modes and transitioning from development to production mode.

Note: The default pricing plans for Azure services used in this solution vary between development and production modes. You can adjust the pricing plan of respective resources post creation or by modifying the ARM template.

  1. Strapi Settings: Provide Keys, Secrets, and Salt Values

For development mode, you can use any random string values for these keys and salts to get started. However, for production mode, it is recommended to use long and random strings to ensure security. You need to provide the following:

    1. App Keys: A comma-separated list of secret keys (strings) to sign the session cookies. These are used by Strapi's session middleware.
    2. JWT Secret: The secret used to sign the JWT for Strapi's Users-Permissions plugin.
    3. Admin JWT Secret: The secret used to sign the JWT for the Strapi Admin panel.
    4. API Token Salt: Salt used to generate tokens for Strapi APIs. If not defined, authenticated API features may not work correctly.
    5. Transfer Token Salt: Salt used to generate transfer tokens for Strapi data transfer between instances. If not defined, transfer features will be disabled.

You need to also confirm the values, just like passwords. For more information on JWT configuration, API tokens and Environment variables, please refer to the Strapi documentation.

 

  1. Initiate deployment
    1. Click on Review + Create.
    2. Click on Create and wait for the confirmation of Azure resource provision and deployment.

       

    3. Click on Go to resource group to navigate to the App Service resource overview page.

       

    4. Click on your App Service resource to go to the overview page.

 

7. Set up admin account: On the App Service overview page click and navigate to the default domain URL. It usually takes few minutes for this page to load for first time. Set up your admin account from this page. Please note that the first user visiting this page will be able to set up the admin account, so ensure you set it up before sharing this page.

Navigate to default domain URL

 

 

Welcome to Strapi - Set up admin account

Deploy via CLI

You can download the ARM template and follow the instructions provided to deploy it using the CLI.

Deploy via PowerShell

You can download the ARM template and follow the instructions provided to deploy it using PowerShell.

Technical details & architecture

To simplify the deployment and provisioning of a Strapi on App Service, we have developed a pre-configured ARM template and made small modifications to standard Strapi 5 website template available in Strapi App Service demo template package. Note: This template uses Strapi version 5.10.3

The solution (ARM template) deploys Strapi into Azure App Service, provisions Azure MySQL or PostgreSQL for database and uses Azure Blob Storage for assets. Other required Azure Resources are also created as required. This solution template is ideal for getting started and can also be used in production with some changes.

To install the required resources for hosting your Strapi application will incur costs for your Azure Subscription. For pricing details, please refer to our section on estimating pricing.

Strapi on App Service solution provisions following architecture,

 

Strapi on App Service architecture

Configuration options & considerations

  • The above deployment template creates new Azure resources (e.g. App Service plan, Flexible MySQL server plan etc.) for easier configuration and deployment. However, if you have existing resources, please download and modify the ARM template and configure it to use existing resources. You can deploy modified ARM template using CLI, PowerShell or Azure portal.
  • All the Azure resources are created in the same selected region. However, at times some Azure resources are not available in the selected region. And for such cases you can change default region for all resources or change the region of the specific resource.
  • Template uses some default names for the required resources, and feel free to change the same in the ARM template.
  • Template uses default pricing plans that is suitable to get started with Strapi installation on App Service. Once you are ready to deploy for production workload, please change to appropriate pricing plans of the respective resources.
  • Please note that while you can use an Azure free accountto get started, the template configuration you choose you may well require an upgrade to a paid account.
  • By default, free version of Strapi app has been installed. For information on self-hosting license plan refer to Strapi official page here.
  • Strapi supports MySQL, PostgreSQL among other databases. This template uses MySQL & PostgreSQL.

Recommended next steps to go to Production

This document mostly discusses steps to get started and set up a test or development environment. Below are recommended next steps to set up production environment.

Clean up resources

When no longer needed, you can delete the resource group, that would delete all related resources. Follow the steps here  to delete the resource group.

Support and Feedback 

The Strapi deployment templates shared in this blog post are not a managed solution. Strapi is a third-party software platform, and Microsoft Customer Support and Services (CSS) will not support the Strapi related issues. Microsoft only provides support for the underlying Azure infrastructure and the services used in the solution. If you need any assistance, feel free to open a support request through the Microsoft Azure portal. New support request - Microsoft Azure

We value your feedback and suggestions to help us enhance our solution. Please feel free to share your thoughts or start a conversation by emailing us at strapionappservice@microsoft.com 

Related content

Updated Apr 25, 2025
Version 11.0