Roles, Groups & Collaboration
UZH JupyterHub deployments use OLAT for authentication. Your OLAT course role determines what you can do in JupyterHub. Collaboration group membership is managed separately by teachers using the JupyterHub Groups UI.
How OLAT roles map to JupyterHub roles
When you log in via OLAT (LTI), your role in the OLAT course is passed to JupyterHub and translated as follows:
| OLAT role | JupyterHub role | What you can do |
|---|---|---|
| Participant | User | Start your own server, open notebooks |
| Coach | Instructor | View user list, manage servers, access Groups UI and Quota Admin |
| Owner | Admin | Full admin access: manage all users, servers, and groups |
👩‍🏫 Coaches / Course owners: Admin and instructor rights are granted automatically based on your OLAT course role. You can access the JupyterHub admin panel at
<your-hub-url>/hub/adminto see all running servers, stop idle servers, and add users manually if needed.
👩‍🎓 Students: You log in with your UZH credentials via OLAT. If you cannot log in, confirm with your teacher that your OLAT course membership is active.
Collaboration groups and group servers
UZH JupyterHub has 50 pre-created collaboration groups, each named after a Star Trek alien race (Andorian, Bajoran, Benzite, …). Each group has a dedicated shared server that all group members can access.
Collaboration group membership is managed by teachers in JupyterHub — it is independent of OLAT groups.
How to access a collaboration server
👩‍🎓 Participants:
When you log in and are shown the “Start My Server” page, a blue info box lists any Collaboration Servers you can access. Click on the server name (e.g. “Andorian Collaboration Server”) to launch it.
If no collaboration servers appear, either your course doesn’t use group servers or your teacher has not yet assigned you to a group.
Real-time collaboration (RTC)
Collaboration servers have JupyterLab real-time collaboration enabled: multiple users can open the same notebook simultaneously and see each other’s edits live, similar to Google Docs. A cursor with each user’s name appears in the file.
This feature is only available on collaboration servers. It is intentionally disabled on personal servers to prevent accidental file corruption.
Best practices for collaboration
- Agree on which sections of a notebook each person edits at a given time to avoid conflicts.
- Use Git for version control — commit your changes before handing off to a teammate.
- Do not store large binary files in Git — use the persistent volume to keep datasets persistent.
Groups UI — assigning students to groups
👩‍🏫 Course owners
The Groups UI at <your-hub-url>/hub/groups-ui lets you assign students to collaboration groups using a drag-and-drop interface. It is accessible from the “Groups” link in the JupyterHub navigation bar (visible to admins and instructors).
How it works:
- All students, that logged in at least once, initially appear in the Unassigned column on the left.
- Each collaboration group has its own card (e.g. “andorian”, “bajoran”, …).
- Drag a student’s name from Unassigned onto a group card to add them to that group. The change takes effect immediately — no save button needed.
- To remove a student from a group, drag them back to Unassigned.
Rules:
- A student belongs to at most one collaboration group at a time.
- Assigning a student to a group gives them access to that group’s shared server.
- The collab dummy users (e.g.
andorian-collab) are hidden from the UI — they are internal technical accounts.
The JupyterHub admin panel
👩‍🏫 Owners / Coaches: The admin panel is at
<your-hub-url>/hub/admin.
| Action | How |
|---|---|
| View all users and server status | Listed in the main table |
| Start or stop a user’s server | Click Start / Stop next to the user |
| Access a user’s server | Click Access Server (opens their environment as them) |
Note: Use “Access Server” sparingly and only with the user’s knowledge.