Squidex
  • Welcome to Squidex
  • Getting Started
    • Squidex Cloud
    • Installation Instructions
      • Platforms
        • Install on Kubernetes
        • Install on AWS (Deprecated)
        • Install on AWS EC2 using Docker
        • Install on Azure
        • Install on Azure using ARM
        • Install on Google Cloud Platform (GCP)
        • Install on Docker
        • Install on Heroku
        • Install on IIS
        • Install on Render
        • Install on Vultr
      • Configuration
        • Deploying the Image Resizer Service
      • Troubleshooting and Support
        • Diagnose Runtime Issues
        • Restoring Deleted Apps
      • Install Identity (Deprecated)
      • External Identity Providers
        • Azure AD (OAuth) with Squidex
    • Contributing and Developing
      • Building
      • Developing
      • Extensions
        • Custom Rule Action
      • Contributing
      • Architecture
      • Translating
      • Squidex Docs Program
    • Roadmap
    • Quick Start Guides
      • Vue.js Blog with Squidex
      • React.js Blog with Squidex
      • Angular Blog with Squidex
  • Documentation
    • Introduction and Use Case
    • Concepts
      • Apps
      • Teams
      • Schemas
        • Field Rules
      • Content
        • Scheduled Publishing
      • Assets
        • Querying Assets
      • Localization
      • Migrations
      • Roles & Permissions
      • Rules
        • Publish an Event to Azure Queues using Rules
        • Populate Elasticsearch Index
      • Backups
      • Subscriptions
        • App Subscriptions v/s Team Subscriptions
      • Notifications
      • Dashboard
      • Workflows
    • Software Development Kits
      • TypeScript
      • .NET
        • Version v14 (and Earlier)
        • Version v15 (and Later)
      • PHP
      • Java
    • Developer Guides
      • API
        • Authentication
        • Postman
        • Queries
        • Assets
      • Automation Tools (CLI)
      • Scripting
        • Scripting Helper Methods
      • Embed Content
      • Custom Workflows
      • Custom Editors
      • Custom Sidebars
      • Preview Content
      • Rule Formatting
        • Simple
        • Script
        • Liquid
      • Tutorials
        • Building a Blog with Squidex and Next.js
  • Next
    • Squidex 3.0: API Compatibility
Powered by GitBook
On this page
  • Requirements
  • 1. Setup your Storage Account
  • 2. Create the MongoDB Instance
  • 2.1 Create an Admin User
  • 3. Create & Configure the Web App
  • 3.1 Create Web App
  • 3.2 Configure Web App
  • 3.3 Turn on Logging
  • More issues?

Was this helpful?

  1. Getting Started
  2. Installation Instructions
  3. Platforms

Install on Azure

Learn how to setup Squidex on Azure WebApp with MongoDB on Azure Container Instance.

PreviousInstall on AWS EC2 using DockerNextInstall on Azure using ARM

Last updated 1 year ago

Was this helpful?

The instructions provided help you to get your Squidex installation running on an Azure WebApp with the assets & MongoDB data hosted on Azure Storage and MongoDB running on an Azure Container Instance.

Please note, that Azure also supports Docker Compose files so you can follow the Docker tutorial, especially if it is important for you to be independent from your Cloud provider (avoid vendor lock-in).

This tutorial does not cover the basics of Azure. You should be familiar with them before you begin with the installation instructions. We have attempted to keep the instructions simple enough so they can be followed by anyone.

This tutorial demonstrates running MongoDB as a single container and is recommended for non-production or trial environments. For production environments, it is best to use one of the MongoDB Atlas (or Enterprise) offerings from with at least 3 members for High Availability etc.

Requirements

Before you start you have to setup a few things first:

  1. An active Azure subscription

  2. A Resource Group for all your Squidex resources.

  3. An App Service plan (Linux) to host Squidex.

  4. A Standard (General Purpose v2) Storage Account for assets and MongoDB.

  5. An installation of the on your developer machine (optional).

  6. An installation of a MongoDB tool like on your developer machine (optional).

  7. The provider registered in your Azure subscription.

1. Setup your Storage Account

Execute the following steps in the storage account.

You must have a storage account before continuing. The steps do not cover the process of storage account creation.

  1. Click Containers (1) under Data Storage and then click + Container (2) to load the New container blade.

  2. Create a container named etc-squidex-assets(3). Do not make any other modifications, click Create (4).

  3. Similarly, select File shares (5), click + File share (6) and create a file share named etc-squidex-mongodb (7). Click Create (8).

  4. Next, note down the storage account Connection String and one of the Access Keys for use in the subsequent steps. To do so, go to Access Keys (9) and click Show (10) next to Key in key1. Copy this Access Key safely somewhere. Similarly click Show (11) next to Connection string and copy it.

2. Create the MongoDB Instance

To create the MongoDB Azure Container Instance we will use the Azure CLI. Using the browser based Azure Shell is the easiest and quickest way to run the command.

You can also execute them through an installation of Azure CLI on your developer machine. If you are using your own installation of Azure CLI, on the command prompt run az login first to login to Azure (this step is not required if you are using Azure Shell).

The following creation of the container instance can only be done using the Azure CLI at the moment.

Run the following command to create the MongoDB container instance. You will need the following values noted down from earlier:

  • [YOUR_RESOURCE_GROUP]

  • [YOUR_STORAGE_ACCOUNT]

  • [YOUR_STORAGE_KEY]

az container create --resource-group [YOUR_RESOURCE_GROUP] --name mongodb --image mongo --azure-file-volume-account-name [YOUR_STORAGE_ACCOUNT] --azure-file-volume-account-key "[YOUR_STORAGE_KEY]" --azure-file-volume-share-name etc-squidex-mongodb --azure-file-volume-mount-path "/data/mongoaz" --ports 27017 --cpu 2 --ip-address public --memory 2 --os-type Linux --protocol TCP --command-line "mongod --dbpath=/data/mongoaz --bind_ip_all --auth"

This creates a single container instance running MongoDB.

2.1 Create an Admin User

At this point the MongoDB instance is running but requires authentication. But we do not have any users, so we will go ahead and create a user for use with the database.

Connect to your MongoDB container console from Azure:

  1. Go to Container instances (1) and select your container, usually mongodb (2).

  2. Click Containers (3) and then select the Connect tab (4).

  3. Select /bin/bash and click Connect (5) button.

Execute the following steps inside the container to create a MongoDB user.

For security reasons provide your own choice of username and password

// Switch to Mongo shell
mongosh

// Switch to admin db
use admin

// Create user
db.createUser({ "user": "root", "pwd": "1q2w3e$R", "roles": ["root"] })

To connect to it from MongoDB Compass, create a connection string that contains the username and password similar to the example below.

mongodb://root:1q2w3e$R@[IP_ADDRESS]

3. Create & Configure the Web App

3.1 Create Web App

  1. Start by creating a new Web App with the following settings. The wizard also lets you create a new App Service Plan (think Hosting Plan) if there isn't any.​

    1. Select the existing Resource Group (1) from previous steps

    2. Enter a Web App Name for the FQDN provided by Azure Web App.

      This Name should be globally unique.

    3. Select Docker Container (3)

    4. Choose Linux (4) for the Operating System

    5. Set your preferred Region (5), preferably the same region as other resources

    6. The default Sku and size selected is ideal for production environments and costs more. If this is a sandbox, trial or a non-production environment it is best to change this to a lower Sku. Click Change size (6) to do so and change it to F1 or B1.

    7. Click Next: Docker to continue with the next steps.

  2. In the Docker settings tab, configure as following:

    1. Set Options as Single Container (8)

    2. Set Image Source as Docker Hub (9)

    3. Set Access Type to Public (10)

    4. Enter Image and tag value as squidex/squidex:latest

    5. Click Review + create (12).

  3. In the Review page, click Create.

  4. Once deployment is complete, click Go to resource (14) and continue with the next section on configuring the environment variables.

3.2 Configure Web App

During this step, we will add the configuration values to the Web App and restart the Web App. Before proceeding ensure you have the following info handy, you will need it:

Key
Description
Sample

[AZURE_CONNECTIONSTRING]

The connection string to your storage account. See step 1.

[MONGO_USERNAME]

The username of the MongoDB user.

For example in this instruction: "root"

[MONGO_PASSWORD]

The password of the MongoDB user.

For example in this instruction: "1q2w3e$R"

[MONGO_IP]

The IP address to your MongoDB container.

See Step 2.1

[WEBAPP_NAME]

The name of your webapp.

For example in this instruction "squidexio"

  1. From the previous step you should already be in the Web App page. Click Configuration (1) and then Advanced edit (2).

  2. Copy and paste the following JSON into the code window (DO NOT click OK.)

    [
      {
        "name": "ASSETSTORE__AZUREBLOB__CONNECTIONSTRING",
        "value": "[AZURE_CONNECTIONSTRING]",
        "slotSetting": false
      },
      {
        "name": "ASSETSTORE__AZUREBLOB__CONTAINERNAME",
        "value": "etc-squidex-assets",
        "slotSetting": false
      },
      {
        "name": "ASSETSTORE__TYPE",
        "value": "AzureBlob",
        "slotSetting": false
      },
      {
        "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "DOCKER_REGISTRY_SERVER_URL",
        "value": "https://index.docker.io",
        "slotSetting": false
      },
      {
        "name": "DOCKER_REGISTRY_SERVER_USERNAME",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "EVENTSTORE__MONGODB__CONFIGURATION",
        "value": "mongodb://[MONGO_USER]:[MONGO_PASSWORD]@[MONGO_IP]:27017",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__GITHUBCLIENT",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__GITHUBSECRET",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__GOOGLECLIENT",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__GOOGLESECRET",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__MICROSOFTCLIENT",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "IDENTITY__MICROSOFTSECRET",
        "value": "",
        "slotSetting": false
      },
      {
        "name": "STORE__MONGODB__CONFIGURATION",
        "value": "mongodb://[MONGO_USER]:[MONGO_PASSWORD]@[MONGO_IP]:27017",
        "slotSetting": false
      },
      {
        "name": "URLS__BASEURL",
        "value": "https://[WEBAPP NAME].azurewebsites.net/",
        "slotSetting": false
      },
      {
        "name": "VIRTUAL_HOST",
        "value": "[WEBAPP NAME].azurewebsites.net",
        "slotSetting": false
      },
      {
        "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS",
        "value": "10",
        "slotSetting": false
      }
    ]
  3. Replace all placeholders with your values (without additional quotes). It should look similar to the screenshot below. Click OK (3) when done. Configuration values for external authentication providers are empty to turn them off.

  4. Click Save (4).

  5. Click Overview (5) and then click Restart (6). Click Yes (7) when prompted.

  6. You can now access Squidex at the App Service URL and continue with setting up Squidex.

IMPORTANT: It may take a few minutes before Squidex welcome page loads due to background configurations and setup processes by Azure.

If the restart in Step 5 above does not work, stop and start the Web App.

3.3 Turn on Logging

While this is an optional step, logging can make diagnostics easier.

You can then use the Log stream to view all log entries

  1. Next from the left menu scroll down (or search) and click on App Service logs (1). Enable Application logging by clicking on File System (2) and click Save (3).

More issues?

For other issues, it is likely that you have a configuration problem not related to hosting under Azure. Checkout the following documentation:

Now that the user is created, you can optionally connect to it from a tool like and verify connectivity. To connect, you will need the Public IP address of the MongoDB instance. To do so, go to Container instances (1), select your container (2) and from Overview (3) copy the Public IP address (4). Make a note of it as it will be needed again in future steps.

Azure Marketplace
Azure-CLI
MongoDB Compass
Microsoft.ContainerInstance
MongoDB Compass
Configuration