Introduction#
Ed-tech industry in India was valued at US$750 million in 2020, and is projected to be $1.04 billion by 2021. (source)
I am documenting the process of edx installation on local system for evaluating. I’m not doing a comparision with any similar product here. Also, I’m writing this post from a develper’s perspective of course, because I’m a software developer. Don’t expect any business related expertise from here.
With this post, I’ll document my own learning. Mostly what technologies this project uses, and how the project is laid out and which tech is used by which component.
What is Open edX?#
Open edX is a open source project which powers edx.org and thousands of other online education sites.
Talking about edx.org, edX is the online learning destination co-founded by Harvard and MIT. The Open edX platform provides the learner-centric, massively scalable learning technology behind it. Originally envisioned for MOOCs, Open edX platform has evolved into one of the leading learning solutions catering to Higher Ed, enterprise, and government organizations alike.
You can learn more about Open edX at their official website: https://openedx.org.

Enough of marketing now, now let’s get straight back to installation part.
Installation#
There are two recommended ways to install openedx. Both of them are Docker oriented.
- Tutor: A community-supported Docker-based environment suited for both production and development.
- Devstack: A development environment based on Docker; useful if you want to modify Open edX code locally.
As I’m just trying out this project. I’ll use the Tutor version.
Apart from installation method, you can either choose to install a specific version, or the latest one from GitHub. I’ve decided to use Lilac Release, which is one of the recent release. You can find all the releases on Open edX Platform Releases page
Requirements#
As per the official documentation, the system requirements are as follows:
- Supported OS: 64-bit Unix based system. Avoid WSL.
- Architecture: AMD64, but ARM64 may be supported in future.
- Required runtime: Docker v18.06+ with Docker Compose v1.22.0
- Recommended hardware: 8GB RAM, 4CPU, 25GB disk space
Note: I don’t know how does above hardware requirement goes with Kubernetes deployment. That will be a good candidate for my new post in this series.
pip installation#
There are multiple ways to install Tutor. The first one listed on the documentation page shows the pip installation methed, that is the one we are going to use. Also, just for sake of awareness, I’m trying all of these on a Ubuntu 20.04 machine locally.
pip install tutor[full]
Note: I am doing it in a virtual environment so my system namespace is not polluted.
At this moment you may want to play around with the tutor command.
| |
Configuration#
In this section, we’ll do basic configuration to run our local instance of Open edX.
The next step I’m going to follow is:
| |
This will ask some question.
| |
The default location for the configuration is at $HOME/.local/share/tutor. You can also jump there by doing cd "$(tutor config printroot)".
config.yml is the main file here.
You can see there are multiple sub-directories inside env/ directory. These files here are generated from the main config.yml, and as a consequence, every time the values from config.yml are modified, the environment must be regenerated with tutor config save.
As we are going to test the local installation, I’d highly recommend going through the env/local directory. This directory has the docker-compose.yml files which are used to run the project locally.
Running#
We are doing doing local install, so I’d recommend running tutor local once.
| |
Likewise, if you want to explore the k8s, or want to do development on edX, use the relevant tutor commands.
But for this post, I won’t go deep. Let’s start a local instance here:
| |
The initial start may take some time as there are multiple images to be build. But at the end, you’d see something like this in your terminal:
| |
The first link is what a new student will see. The second link is something the course creator or site administrator will see.

What’s next?#
You can do multiple things with this installation now. Some of them include:
- Log in as administrator
- Import demo course
- Change the look and feel
- Tweak if you have programming experience
- Deploy to Kubernetes
You can head over to https://docs.tutor.overhang.io/whatnext.html if you are interested in any of those.
Tech stack#
Let’s talk about the main part here as a developer. The technologies used in this project are as follows:
- Python: There is heavy use of Python. Even tutor is written in Python.
- Docker: Docker of course is used, and there is also support for Kubernetes.
- Caddy & Nginx: Both are web servers and reverse proxies. Caddy is mostly used for load balancing and SSL termination.
- MongoDB & MySQL & Redis & Elasticsearch: Yes, all of them are used.
- devture/exim-relay: This is for handling mailing services.
Open edX is also composed of different frontend which in openedx’s language is called a mfe or micro frontends.
Key Takeaways#
This project is good for someone like me who already has some experience in Python, MongoDB, Docker, Kubernetes, and Nginx. This can also be a good opportunity for me to learn more about Redis, Caddy and Elasticsearch.
This project is good for frontend developers too, as it uses React in it’s micro frontends.
I intend to experiment with this project to hone my skills. And I might make a follow up post on openedx getting deep into the development and deployment side.
PS: If you want to clean up the local setup environment, you can run docker rmi $(docker images -q). This will cleanup all the images which were build during the long wait.