This is an XBlock to integrate JupyterHub from a Magic Castle cluster to your Open edX learning management system (LMS).
Features:
- Integrate JupyterLab notebooks to the Open edX courseware.
- Fully editable notebooks and student workspaces.
- Simple integration of notebooks from public git repositories.
Here is a screenshot of the Jupyter XBlock in action:
In your course "Advanced Settings", add "jupyter" to the "Advanced Module List":
The JupyterHub cluster can be configured separately for every XBlock, but this can be quite tedious for course instructors. Instead, a default JupyterHub cluster URL can be defined globally by adding the LTI_DEFAULT_JUPYTER_HUB_URL
setting to both the LMS and CMS settings.
For instance:
LTI_DEFAULT_JUPYTER_HUB_URL = "https://hub.myopenedx.com"
If this setting is undefined, the base URL will default to https://hub.LMS_HOST
.
Similarly, the LTI passport ID can be defined globally for all Jupyter XBlock instances. When a passport ID is not explicitely defined in an XBlock, it will default to the LTI_DEFAULT_JUPYTER_PASSPORT_ID
setting. If this setting is also undefined, then it will default to LTI_DEFAULT_PASSPORT_ID
. The fallback value is "jupyterhub".
To define a global LTI passport ID to be used by all Jupyter XBlock instances, add to your LMS/CMS settings:
LTI_DEFAULT_JUPYTER_PASSPORT_ID = "myjupyterhub"
Then, the corresponding passport must be created in the course advanced settings, as described in the Open edX documentation:
You will have to launch your own JupyterHub cluster separately from Open edX. Your cluster should support:
- LTI authentication via ltiauthenticator.
- LTI authentication must accept the key and secret defined in the course LTI passport (see above).
- Pulling git repositories via nbgitpuller.
- Iframe embedding in your LMS/CMS, via the "Content-Security-Policy" header.
- Grading is not supported at the moment.
- It is not possible to pull notebooks from a raw URL -- only from a public git repository.
This XBlock was created by Maxime Boissonneault (@mboisson) based on the jupyter-xblock
xblock written by by Matthew Brett (@matthew-brett).
This work is licensed under the terms of the GNU Affero General Public License (AGPL).