Open edX: The Unofficial Open edX Operations Manual
25 Sep 2014

I’m customizing and deploying an Open edX instance for an Australian university. Getting a simple Open edX instance running is very simple; actually running it in production requires a lot of work. This series of blog posts summarises what I’ve learned in the process.

Open edX is a moving target. Like all of the documentation on the web, these posts could be out of date by the time you read them. Please leave a comment or send me an email if you find a problem.

General hints and tips

Broken repos

Open edX is a very rapidly moving target. There are no stable releases yet. The repositories (even the slightly-more-stable release branch) are frequently broken.

I have tried to address the major undocumented things here, but stuff breaks all of the time.

I strongly recommend that you have separate staging and production systems. If you run untested commits on your production server, you will have unplanned downtime.

I would like to suggest that you can just pass a commit ID to /edx/bin/update, but that doesn’t work. I’m working around it with a local fork of edx-platform.


All of the fun commands are accessible through the Django management interface ( There’s lot of bad documentation out there on how to reach this. What’s working for me (at 10 Nov 2014) is

# as root
cd /edx/bin
sudo -u www-data ./python.edxapp ./manage.edxapp lms

comments powered by Disqus