Jupyterhub, Jupyter Notebook plugin

Hi everyone,
Today I am releasing Jupyterhub plugin for Tutor community. It works and ready for production.

Some features:

  • Jupyterhub runs as a subdomain of Tutor
  • Comes with Pandas, Bokeh, Numpy and other popular libraries.
  • Allows to create multiple users, which has own kernel (spawners)
    But it’s need to improve to more features. So any contributions will be appreciated :slight_smile:



This is great @qali, thanks a lot for sharing! Are you considering integrating Jupyter with Open edX? I know for a fact that a lot of people will be interested.

@moderators I created the #tutor:plugins category for such announcements.

Thanks for that @regis.
Yes I have some plan for to integrate JN/JHub to the edX. May be with LTI Authenticator, and some other features such as OAuth( Google, GitHub etc.) But it’s need some time and focus :slight_smile:

1 Like

Now, JupyterHub integrated to Open edX Studio, with a basic XBlock.
Contrubutions and PR welcome :slight_smile:

1 Like

Thanks for the announcement @qali! I think that there is great potential in the integration of Jupyter with Open edX. If I understand correctly, your xblock simply redirects users to Jupyter Hub, right? I think that it would be a killer feature if we could do the following:

  1. Course staff creates a notebook in Jupyter Hub
  2. Course staff creates an advanced unit with the Jupyter xblock and points to the notebook
  3. When they open the unit, students can both read, edit and run the notebook right from Open edX, without having to login to Jupyter Hub.

Do you think this is feasible? Can I ask you what is your roadmap?

Yes exactly, that’s my roadmap, and I will try to do it. Student side all greit, they can write, save and share with teacher, but teacher side needs more adjustment on XBlock. So I will try to make more reliable for teacher(Course staff) side. So, that needs to more focus to the XBlock :slight_smile:



A little update from me:
Jupyterhub fully embedded to edX Studio, after the login.

  • Course staff creates a notebook in Jupyter Hub (YES, opens in new tab)
  • Course staff creates an advanced unit with the Jupyter xblock and points to the notebook (YES opens in new tab)
  • When they open the unit, students can both read, edit and run the notebook right from Open edX, without having to login to Jupyter Hub.( after login YES, but not yet)
    I will continue to try to embedd interactive *.Ipynb to student view. I hope, I
    can manage it :slight_smile:
  • Documentation (Not ready yet)

I will continue after next weekend (after 05.07). Thanks…


JupyterHub/Jupyter Notebook XBlock is ready now. Some new features:

Now you can write almost all your courses with Jupyter tools :slight_smile:

1 Like

I’m not able to test the plugin right now, but if the plugin does what I think this is a fantastic achievement! You should definitely make a live demo video.

Hi @regis ,
Got this error due to file size (Gif)… but added a little demo to the repo… GitHub - murat-polat/jupyterhub-xblock: Jupyterhub, JupyterLab XBlock for Open edX and Tutor… So all works :slight_smile: you can test it, when you have time…


This is my test server : https://studio.baretest.xyz/
staff user : mpo@test.com
pass : 1111111

JupyterHub user : student
pass : solo

JupyterHub admin user : teacher
pass :Solo123

So everyone can test it now :slight_smile:

1 Like

Hi @regis,

Now first version of JupyterHub, JupyterLab is finished. I made a little very amatour demo video for that :slight_smile:

New features:
Full JupyterLab with Jitsi realtime chat and webrtc,


Hi @qali

Thank you for a great plugin. The installation went smooth (Hub and Xblock)
I am having two issues though:

  • First, when the “teacher” shares a notebook as a link, the “student”, when he logs in, does not see it (he sees his own workplace instead). If you attemp accessing the notebook through the browser, a permission problem arises

Authorize access
A service is attempting to authorize with your JupyterHub account
Server at /user/teacher/ (oauth URL: /user/teacher/oauth_callback) would like permission to identify you. It will not be able to take actions on your behalf.

The application will be able to:
See your JupyterHub username and group membership (read-only).

  • Second, suppose you have 60 students, I find it cumbersome to create users manually 60 times in the Docker AND and in the Hub (Creating the user in the docker is not sufficient) that makes 120 commands to apply!

Are there avenues to make it better?


1 Like

Hi @nachham,
Thanks for good feedback and testing. That’s correct, and I agree with you. That’s needs some user frendly addjusments. For now, we shoud use Student user for courses, in my opinion.

  • Teacher just admin not super user. And It can add several users in the admin panel, but assign password for these users, must be inside container.

I will continue make this better, and share it here.
Acctually Xblock just a viewer, which renders Jupyter tools via an iframe. All magic heppens in Jupyter plugin (Dockerfile, jupyterhub_config.py and requirements.txt files)
I hope will be more chef hand in this kitchen :slight_smile:


JupyterHub admin can now add / remove more users from the control panel. Has access to others files and notebooks. Documentation (Readme) updated. I encourage you to test it in your courses, because at the moment I have no opportunity to test it in real world courses( my jobb not edX related).
JupyterLab is not just plugin or xblock, It’s IDE, Notebook, Map, Video-Meeting, Text editor, Interactive graph, video player and much more…

1 Like

Thank you @qali

We’ll give it a try.


1 Like

Thanks for your work @qali! I love how you managed to make the installation of Jupyter Hub very smooth by packaging it in a Tutor plugin.

You should be able to install the xblock directly from the plugin by defining the openedx-dockerfile-post-python-requirements patch as follows: RUN pip install git+https://github.com/murat-polat/jupyterhub-xblock.git@master. Then, after enabling the plugin, the openedx Docker image must simply be rebuilt with tutor images build openedx. Thus, end-users do not have to manually install the XBlock.

On a side note, I recommend that you tag releases of your XBlock to make it possible for end users to install pinned versions, as opposed to cloning the master branch, which might break in some releases.


Hi @regis,
And thanks for all good feedbacks and advices. I modified plugin as you suggested. Now all Jupyter platform and XBlock, will be installed with just one plugin.

Thanks for that :slight_smile:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.