In addition to the official JupyterHub, it is possible to create dedicated specialized hubs to be used for specific courses. If you are an instructor for a course (or courses) and think the course might benefit from its own JupyterHub, you can contact us, NTNU IT Forskningsstøtte, through NTNU Hjelp or via email at jupyterhub (at) it.ntnu.no.
Please include at least the following information when contacting us about a new JupyterHub:
- Relevant course code(s).
- Approximate number of students.
- Name and NTNU email address for at least one instructor responsible for the JupyterHub.
- Any customisation required?
- Is there a need for delivering and grading assignments with nbgrader on the hub?
(If the answer to 4. and 5. is a 'no', please consider whether your course can use https://jupyterhub.apps.stack.it.ntnu.no/ instead.)
Customisation
The hubs can be customised in a few different ways.
All of our hubs are based on the Jupyter official jupyter/datascience-notebook image, with a few additional tweaks. Generally speaking, the image covers many use cases within basic programming and data science with the packages and modules the image comes with by default. You can find the full list of the pre-installed packages here. However, many courses require specific packages to be installed. It is possible to install any packages, notebook- and/or jupyterlab extensions beforehand, that should be ready for all users of the hub. Unfortunately this can be only done by us, the maintainers of the hub, the instructors (and any other users) can only install packages to their own environments. We can install new packages at any point throughout the semester as well if needed - just get in touch with us.
The hubs use the Jupyterlab interface by default, but that can be changed to the Notebook interface. That is not a hard limitation however, users can always change between the lab and notebook interfaces just by changing the URL.
It is also possible to increase the available resources each user is allocated. The default configuration, 1 CPU core and 1 GB RAM, is somewhat limited. Depending on the size of the course, the limits may be increased slightly to allow for faster processing and larger datasets.
Accessing the hub
While the official JupyterHub allows anyone at NTNU to log in, access to the dedicated hubs is generally limited to students and instructors enrolled to specific courses. Access to the hubs is often limited to two types of user groups:
- The first group is the Felles Studentsystem (FS) group(s) for the course(s), which means that all students and course staff registered to the course in FS should gain access to the hub automatically. These groups are automatically fully managed by FS, we cannot manually add students (or instructors) to them. Please note that there can be a significant delay (from a few hours to a few days) between a student signing up to a course and the student being registered for the course on FS. The student will only be able to access the hub after they show up in the FS group. You can check whether you are a member of a group for a course at https://innsyn.feide.no/groups - the group names can vary but the structure of 'gruppekode' is always
fc:fs:fs:emne:ntnu.no:{course code}:1
. - The second group is an ad-hoc group that is created when creating the hub. The ad-hoc group can be used to invite additional people to use the hub, who are not affiliated with the course in FS - for example teaching assistants or guest lecturers. The ad-hoc groups are usually called "NTNU Jupyterhub {course name}". The course coordinator (or the person contacting us about creating the hub) will receive an email invitation to manage the ad-hoc group, and after accepting the invitation they will be able to invite additional people to the group as well as grant additional people the ability to invite others. The group can be managed at https://innsyn.feide.no/groups.
NOTE: the 'Make Admin' toggle when inviting people to the group only refers to being able to administrate the ad-hoc group (add and remove other users), it does not have any effect on the user's status on the actual JupyterHub. The invitations are fairly short lived, they will expire in a matter of few days. The invitations also have a tendency to get mislabeled as junk email, so please do check your junk email if you are expecting an invitation and have not received one.
Admin users and instructors
The course coordinator (or the person contacting us about creating the hub) will receive the admin role on the hub. First and foremost, the admin role allows users to access the admin panel. The panel can be accessed through https://{hubname}.apps.stack.it.ntnu.no/hub/admin or by clicking the 'Admin' link in the hub control panel.
From the admin panel, admin users are able to access every other users' environments. It is also possible to start and stop every users' environments all at once - please be careful with these controls.
Through the admin panel, admin users can also give and take away the admin role to and from other users.
Admin users can also add users to a special 'instructors' group. The group gives fewer privileges than admin users; members have write access to the 'Shared' folder as well as certain privileges for the nbgrader assignment system (if enabled for the hub). Instructors cannot add new instructors or hub admins.
Adding users to the group can be done by first clicking the 'Manage Groups' link in the admin panel, and then
- Click to edit the 'instructors' group
- Type an existing username into 'Add by username field'
- Click 'Add user'
- Click 'Apply'
Sharing notebooks and other files with students
'Shared' folder
The shared folder can be used as a simple way for sharing files from the course staff to students on the hub. The folder is a directory of which contents every user on the hub can see and read from, but only admin users and members of the instructor group can write to. The only way students can make changes to the files under the shared folder is to make personal copies of the files into their own home directories. Students are not able to write to files in the shared folder directly.
nbgitpuller
The Jupyter extension nbgitpuller can be used create a link that will automatically clone a git repository onto a user's environment, given that the notebooks and files you want to share are stored in a publicly accessible git repository. It is very simple to use, no git experience required; the user only needs to click the generated link, and nbgitpuller will transfer the files from the git repository to the user's home directory. nbgitpuller is automatically installed on each hub.
Website for generating nbgitpuller links: https://nbgitpuller.readthedocs.io/en/latest/link.html
Assignments on JupyterHub
nbgrader is a Jupyter extension that allows for creating, distributing and grading assignments within a JupyterHub. In a nutshell, nbgrader is a set of tools that facilitates for:
- Instructors can create and publish assignments that contain differents tasks that can be either automatically or manually graded in nbgrader.
- Students can see all assignments released on the hub, and download all notebooks and other required files with a single click.
- Students can work on the notebooks and submit their work on the assignments for grading.
- Instructors can collect submissions from the students, grade them and generate and release feedback back to the students.
- Students can download the generated feedback file, showing their scores on the different tasks, as well as optional manual feedback from instructors.
nbgrader can be enabled on any given hub at any point.
nbgrader works with both Jupyterlab and Jupyter Notebook.