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
  • Prerequisites
  • Deployment Specifications & Other Details
  • 1. Launch the ARM Template
  • 2. Configure Details
  • 3. Access Squidex
  • 4. Update DNS Record (For Own Domain Deployments Only)
  • 5. Completing Squidex Installation
  • Azure Troubleshooting
  • Squidex Issues
  • Connecting to MongoDB Instance
  • Modifying ARM Variables

Was this helpful?

  1. Getting Started
  2. Installation Instructions
  3. Platforms

Install on Azure using ARM

PreviousInstall on AzureNextInstall on Google Cloud Platform (GCP)

Last updated 2 years ago

Was this helpful?

This version of the installation tutorial deploys Squidex along with MongoDB (for datastore) and Caddy (for reverse proxy along with SSL) as a in Azure using an template. The approach is called Infrastructure as Code.

The tutorial does not cover the basics of Azure. You should be familiar with them before you begin with the installation instructions.

This tutorial runs 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 , which provides capabilities such as High Availability.

Use this tutorial as a getting started guide in Azure to explore Squidex and use it as a Dev/Sandbox environment. This setup may not be recommended for a production environment.

Prerequisites

Before you begin, ensure you meet the following requirements:

  1. An active Azure subscription.

  2. The following providers registered in your Azure subscription:

    • Microsoft.ContainerInstance

    • Microsoft.Storage

Deployment Specifications & Other Details

The ARM template creates the following Azure resources:

  • An Azure Storage Account

    • Azure Container

    • Azure Share

  • Azure Container Instances (Group)

    • Squidex Web App Container (latest image)

    • MongoDB Container (latest image)

    • Caddy container (latest image)

Important Details

  • Default resource allocations

    • Squidex container: 1 vCPU and 1.5 GiB memory

    • MongoDB container: 2 vCPU and 2 GiB memory

    • Caddy container: 1 vCPU and 1.5 GiB memory

  • Squidex and MongoDB containers remain private and are not exposed to public.

  • Caddy reverse proxies to the Squidex Web App container.

  • An FQDN is provided by Azure Container Instance, Caddy provides SSL for this as the FQDN does not come with SSL. This FQDN is set as the URLS__BASEURL and VIRTUAL_HOST for Squidex configuration.

NOTE: If you wish to modify any of the variables such as vCPU, Memory etc., you can do so by editing the ARM template. Click [here](#modifying-arm-variables) for basic instructions.

1. Launch the ARM Template

Simply click Deploy to Azure button to load the template in Azure Portal, fill in a few details (instructions below) and deploy Squidex.

2. Configure Details

On the Custom deployment page complete the following steps to submit the deployment.

  1. Select your Subscription from the list.

  2. Select an existing Resource group or click Create new to create a new Resource group.

    • If creating a new Resource group, enter a name and click Ok.

  3. Select your preferred Region from the list.

  4. Enter a name for the Container Group in Container Name field. (It uses the Resource Group name by default but you are free to change it)

  5. If you wish to provide your own Domain/Sub-domain (e.g. example.com or squidex.example.com) enter it in the Squidex Domain field, otherwise leave it blank.

  6. Click Review + create.

  1. Ensure that the validation is successful.

  2. Click Create to submit the deployment.

The deployment process will take a few minutes. (Preferably do not navigate away from this page)

3. Access Squidex

  1. Once the deployment is complete, Click Outputs in the deployment page to retrieve the URL.

  2. Copy the URL.

Alternatively, you can also retrieve the FQDN anytime from the Azure Container Instances blade.

NOTE: This is only for deployments where custom domain is NOT provided

4. Update DNS Record (For Own Domain Deployments Only)

  1. Navigate to Azure Container Instances page, click on the Container instance (i.e. squidex) to access the details.

  2. Under Overview, to the right you should find the IP Address (Public) value, copy it.

  1. Now access your domain control panel, and create an A Record pointing your domain to this IP address.

  2. Continue with the next steps once the DNS propagation is done, this will depend on your domain provider.

NOTE: The SSL certificates are not generated (by Caddy) until the DNS resolution works

5. Completing Squidex Installation

  1. Open the URL in a browser to load the Squidex Installation Page.

It may take a few minutes before the certificates are generated and the URL starts working. For own domain scenarios this process may be even take longer

  1. Create the Admin User to complete the installation and login to Squidex.

Azure Troubleshooting

Validation Failed

  • Ensure all the fields have been populated.

  • If you are rerunning the ARM template (either another installation or due to a previous failure) and using the same names, change them (or delete previously created resources).

Deployment failed

In the Microsoft template deployment window click Deployment failed. Click here for more details to view the error details and look for clues. This tutorial does not go into the details of Azure troubleshooting.

NOTE: Use _Redeploy_ to resubmit the deployment again (after fixing errors). This continues the operation instead of creating a fresh deployment.

Containers in waiting, failed or terminated status.

  • Restart the Azure Container Instance

Squidex Issues

It is very likely a configuration problem and not related to Azure. Please visit the following page:

Connecting to MongoDB Instance

  1. On the Azure Portal, navigate to Container Instances page

  2. Click on your Container Instance (e.g. squidex-crm)

  3. Select Containers from the left navigation menu

  4. Select the MongoDB container (i.e. etc-squidex-assets-mongodb) by clicking on it

  5. Select the Connect tab

  6. Ensure /bin/bash is selected

  7. Click Connect again

This will drop you into the Container Shell. Type mongosh to connect to MongoDB shell.

Modifying ARM Variables

  1. After clicking Deploy to Azure button, click Edit template.

  1. Click Variables on left and this should show the variables section on the right.

  2. You can now change any of the variables such as mongoDBCPUCores or mongoDBMemory etc.

Squidex talks to MongoDB without authentication (mongodb://localhost:27017). Since MongoDB is private it cannot be accessed from outside, hence secure to an extent. With the current setup you cannot connect using an external client like MongoDB Compass. You can however connect from Azure Container Instance, click for instructions

Container Group
Azure Resource Manager or ARM
Azure marketplace
Configuration
here
Deploy To Azure
Deploy ARM Template
Review ARM Template
Deployment Complete
ACI FQDN
ACI PublicIP
Deployment Complete
Connect to MongoDB ACI
Edit Template
Modifying ARM Variables