Please note that azure also supports Docker compose files so you can also follow the Docker tutorial, especially if it is important for you to be independent from your cloud provider.
In this tutorial I will also not teach you the basics of Azure. it is a very complicated product with thousands of features and you should be familiar with the basics before you follow this tutorial or just learn it on the fly.
Before you start you have to setup a few things first:
A resource group for all your squidex resources.
A service plan to host squidex (Linux).
A storage account for your assets and mongo db (general purpose v1 or v2).
​Azure-CLI installed.
The Microsoft.ContainerInstance provider registered in your Azure subscription.
Create a new web app with the following Basics
:
Configure the Docker
tab like this:
In the next step we enable logging. This makes diagnostics easier.
Go to your app service and scroll down to menu item App Service logs
and turn on file logging. You can then use the Log stream
to view all log entries.
Go to your storage account instance, choose Files
and create a file share named 'etc-squidex-mongodb'.
Choose Blobs
and create a container named 'etc-squidex-assets'.
Choose Access Keys
and copy one of the keys for the setup of the MongoDB and one Connection String for the setup of the squidex asset store.
The following setup of the container instance can only be done using the azure-cli at the moment. Open a terminal, login to azure using az login and run the following command.
az container create --resource-group [YOUR VALUE HERE] --name mongodb --image mongo --azure-file-volume-account-name [YOUR VALUE HERE] --azure-file-volume-account-key "[YOUR VALUE HERE]" --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"
This will create a container Instance with a single container running mongo db.
If you receivce the error message The subscription is not registered to use namespace Microsoft.ContainerInstance
when creating the container, then the Container Instances provider is not registered in your Azure subscription. See this article for details.
To register the provider, run the following command:
az provider register --namespace Microsoft.ContainerInstance
IMPORTANT: At this point your MongoDB will run without authentication. Connect to it with a Tool of your choice like Robo 3T and create an admin user. After that run the above command again, but change the --command-line argument to
"mongod --dbpath=/data/mongoaz --bind_ip_all --auth"
Go to the Configuration section
and choose Application settings
to configure squidex.
IMPORANT: After you change your configuration values you have to restart your container. In our case the only option was to stop the app service and then start it again. The restart button did not work. Please write a comment if you know a better solution.
Configuration values for external authentication providers are empty to turn them off.
All basic settings:
[{"name": "ASSETSTORE__AZUREBLOB__CONNECTIONSTRING","value": "[YOUR VALUE HERE]","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://[YOUR ADMIN]:[YOUR PASSWORD]@[YOUR IP]:27017","slotSetting": false},{"name": "IDENTITY__ADMINEMAIL","value": "hello@squidex.io","slotSetting": false},{"name": "IDENTITY__ADMINPASSWORD","value": "[YOUR VALUE HERE]","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://[YOUR ADMIN]:[YOUR PASSWORD]@[YOUR IP]:27017","slotSetting": false},{"name": "URLS__BASEURL","value": "https://squidex-test.azurewebsites.net/","slotSetting": false},{"name": "VIRTUAL_HOST","value": "squidex-test.azurewebsites.net","slotSetting": false},{"name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS","value": "10","slotSetting": false}]
It is very likely a configuration problem and not related to hosting under azure. Go to the Configuration page.