Kolibri on Azure cloud

Sanmoy Ray
4 min readOct 21, 2020

Kolibri is a learning management system (LMS), designed to run-on low-cost devices. It is so lightweight that it can even run on a Raspberry Pi Zero.

Kolibri is an enriched application which supports plugin architecture and many plugins like epub reader etc., are available out of the box. So, it can be used as a cloud LMS application which shall cater to a small institution or facility.

Aim of this document is to bring the goodness of Kolibri into a public cloud (Azure) as effortlessly as possible.

Prerequisites

  • An Azure subscription
  • Familiarity with Azure Resource Manager template

Steps to follow

  1. Start the process either by clicking on this link, or copy the template from here and paste it in Azure Resource Manager custom deployment window.

2. Clicking the direct deployment link or copy paste will eventually lead to a custom deployment page.

3. Choose your subscription and Resource group. Preferably choose an empty resource group or create a new resource group through this template.

4. Enter a website name. For example, “welovekolibri”. This name has to be unique in azurewebsites.net subdomains. Currently, there is no way to validate this subdomain availability from ARM template.

5. Click on “Review + create”. It will go to the validation page.

6. Click on “Create”, it will begin the resource deployment.

7. Once the deployment is complete, go to the resource group where all the resources are deployed.

8. You can see all the resources.

9. By this time you should be able to browse Kolibri website through “https://welovekolibri.azurewebsites.net”. BUT THE PROCESS IS NOT COMPLETE.

10. This step is important. Even though it consists multiple sub steps. End goal of this step is to attach a volume mount.

This deployment takes care of creating a PostgreSQL which will store all learner, lesson and analytics data. But the course contents, videos, pdfs, will be stored inside the container where Kolibri is running.

In order to persist this data, we need to attach a volume mount with this container. Currently, attaching the volume mount through ARM template is not supported. So, this has to be manual. In future, we can include this in the ARM template and this 10th step will not be required.

10.a. Obtain the storage account key from the storage account which got created through this deployment process. Also note, an Azure storage file share “kolibri” is created inside this storage account by the deployment process. This will be required in next steps.

Click on Storage Account and then click on Access keys. Keep a copy.

10.b. Click on App Service “Configuration” and then click on “Path mapping”. Then click on “New Azure Storage Mount”.

10.c. Fill up the details as shown in the picture below. Save the configuration. It will restart the App Service.

Name can be anything. Share name should be “kolibri” and mount path should be “/data/content”

This completes the setup and now this Kolibri cloud instance can be used for any practical purpose.

Next Steps

Once Kolibri is onboarded to cloud, all cloud goodness can be added to Kolibri.

  1. Azure keyvault can be used for secret management. PostgreSQL username and password are saved in Appservice setting which is not a standard practice.
  2. Azure frontdoor can be integrated for better performance. Kolibri is internally using Django, so ideally gunicorn and ngnix should be used in a production environment. Azure frontdoor can fill the gap.
  3. All resources, storage, appservice plan are deployed with some pre-configured values. Please fine tune them as per your requirement.

--

--