Connecting the Kolibri Android app to a central server


I work for a Community-Driven Development (CDD) organisation that offers grants and ‘project management’ training to rural communities in Africa to undertake projects of their choosing. Currently, all our training is undertaken face-to-face, but we are looking to transition to a hybrid model whereby roughly half our training material will be turned into mobile-based self-study modules.

The plan is that during the initial face-to-face training, learners will be given smartphones that are pre-loaded with the Kolibri app. Once the face-to-face training is over, they will then go off to their villages. At times they will have internet coverage and at times they won’t. We would like them to be able to study in both cases. These learners would all be part of a class and will be allocated course material to study and assessments to complete. Over time, we would push out updates.

Given our operating environment, Kolibri is of interest because of its robust offline working/sync model and, now, its Android App.

I understand from @laura that for our use case, we are best to pair a server-based instance of Kolibri with the app. To test this, I have installed Kolibri (Ver. 0.15.12) on a VPS (DimeVPS) and am running the beta of the Kolibri Android app (Ver. 0.15.6-92dd435-official). I have created a facility on the server with a group of users.

My understanding is that I now need to set the Android instance of Kolibri as a learn-only device (Advanced Setup > Select a facility setup for this device > Learn-only device). However, when I try to do this, there is no option to add a network address to connect to my server. Under full-device (Advanced Setup > Select a facility setup for this device > Full device > Import all data from an existing facility) I can enter the address of my server and the app does connect.

I have seen in the Kolibri documentation ‘The central server and learner device automatically sync every 2 minutes when connected to the same network’. I also noticed this question, Accessing Kolibri tool from server as a learner.

So … to my questions:

  • Am I pursuing the right configuration, i.e. central server and connected learner-only apps?
  • If so, is the reason I can’t connect to the central server because it is on the internet and not a LAN? If so, how can I get this to work?


Hi @rtandoh,

The configuration you’ve laid out makes sense, but there is one gotcha in regards to your second question:

If so, is the reason I can’t connect to the central server because it is on the internet and not a LAN? If so, how can I get this to work?

In Kolibri v0.15, the learner-only syncing mechanism depends on being able to discover instances over a local network (LAN), so this is indeed the reason why it doesn’t connect to the central server.

We’re preparing to release Kolibri v0.16 in the coming few weeks, which will remove this limitation. Until then, you may use third-party tools such as ZeroTier, or a VPN (specific capabilities are required), to mimic connectivity over a local network, which will allow the learner-only device to connect to the central server. Learning Equality is a fully-remote organization and our team is spread out all over the world, and because of that, we actually use ZeroTier for testing Kolibri’s local discovery and syncing mechanism during development.

Stay tuned for the Kolibri v0.16 release!