Georgiana Dolocan - The Littlest JupyterHub distribution | JupyterCon 2020
Key Takeaways
The Littlest JupyterHub (TLJH) is a single-server JupyterHub distribution designed for simplicity and ease of use, perfect for teaching small classes of students, and can be configured using various tools such as Traefik, Python, Conda, and Let's Encrypt. TLJH allows for extra configuration through escape hatches and can be hosted on cloud providers like DigitalOcean.
Full Transcript
hey today i'm going to be talking about the smallest jupiter hub distribution the littlest jupiter hub and i'm going to show you how you can provide jupiter notebooks for your students in just a few minutes my name is georgina dolokan and i'm working as a jupiter hub and binder contributor in residence and this means i get to help the community with the little things that happen around the project my love for open source started when i was a jupiter hubble ritchie intern about two years ago and did only grew since so let's get started the literal jupiter hub is the smallest jupiter hub distribution it's the smallest because it was designed to fit inside only one server alongside its users this server can be anything from a bare metal one to just one in the cloud the term distribution is pretty common when talking about jupiter hub because distributions help to make the jupiter hub deployment easier personally i like to think about distributions as being the superheroes saving the day so a jupiter hub distribution is a hub that has been tailored to fit a particular use case or a group of use cases that have some common requirements for tljh's case the goal in mind when building this project was to provide an easy to deploy hub that doesn't require that much maintenance and where all the users share an environment but still have their own home directories where they can work um independently but because pljh is a single server it can only support up to around 100 users however this makes it perfect for the for teaching small classes of students and eliminates thus the complexity and costs of managing a large scale hub when this is a when this is this isn't actually needed so the teacher is usually the admin user that can configure the environment for the students in an easy way without too much trouble and without needing to needing any special jupiter hub deployment skills at its core trdh is made up of two components jupiter hub and traffic traffic is the proxy um that's used for jupiter hub to route each user to its notebook server you can think about it as being the map of the hub usually jupiter hub uses configurable http proxy but for trgh we went with traffic because traffic also helps making https certificate acquisition easier because it offers some let's encrypt support so once tlgh gets installed jupyter hub and traffic will continuously run in the background and talk to each other um in order to make things happen when installed tlgh will create two environments on the system one for the hub and one for the users the hub one is a python virtual environment and it's where jupiter hub and traffic binary gets installed the user one is a mini conda environment it's owned by root and shared between the tl tljh users this is where the users packages are and should be installed by the admins every time a user opens up a terminal from jupiter hub this is the default environment but if you were to ssh you know in your trgh server in order to install some user packages you have to manually activate it and don't forget to do this because this can easily turn into a source of confusion and the pain point um if you forget to do you if you forget to do it and don't find the packages you think you installed so if your deployment needs something different than the defaults that the lgh ships with there are four available ways to modify your tlg age the recommended way is to use tlgh config command line tool this can be used to modify the most frequent and common customizable parts of both the hub and traffic things like ports authenticator memory limits and so on the other three are called escape hatches because they are meant to be used for when a deployment requires configuring things that are not supported by tljh config they allow you to provide extra configuration that will be merged with the base one in order to overwrite the defaults these are a bit more complex because they require some prior knowledge about the format and what can actually go into these files so let's start a demo and see all of this in action um for the demo i'm planning uh i'm planning to use digitalocean uh to host the to host the tlgh deployment for that i need to create the droplet i already have one created and ready uh waiting um because um we don't want to wait uh the entire six minutes for the lgh to install okay so all of this um is in the documentation i'm choosing a plan here um memory and cpus um this can later be resized so there's no worries if you over or underestimated this you um you can find in the docs some um some information on how to how to make um this decision okay so here we uh copy the comment uh to install tljh from the documentation it's not a very complicated comment but it's quite long and i don't want to to break it okay so here we're just taking the first admin user and um which we choose to show the a progress page while while tljhd is building we give it a name here um okay and hit create um the droplet creation shouldn't take longer than a few seconds uh maybe up to a minute um i'm not going into the already the one that we already created because i want to show you the progress page that um it's a new feature that we added in order to um allow people and that means to access the logs in case they suspect something went wrong during the installation without needing to ssh into the server which can um be a bit complicated um if you don't follow a tutorial or something okay so um we copy the ip address of the recently created um droplet paste it in the browser and we should be seeing the loading page when it's ready right now i think it also takes a few seconds for it to to get up okay so this is the landing page you have the view logs button uh refresh them to update them and um stay on this page um and when pljh is uh is ready you will be redirected to the login page okay so now let's go to the hub that we already that's already um installed i didn't do anything to it and i followed the same steps i did for this last one so we are using the first admin user here and we're setting it um its password um i um suggest you change the first use authenticator is not super secure um and it's best and um very convenient to login with um um providers like google github whatever works best for you also um you can change the password so i i've just set up a password for it but i can easily go to hub authenticator change password in the browser and change and change this one if i'm not happy with it or um something like that okay so we have a hub uh we only need uh some users right now um for this sorry i have to go back to the um panel okay so go to the admin menu and um we're going to add a few users just to show how easy it is to do this okay so first user here and we'll i can also add other admins uh that will have the right to install user packages and configure um the system okay so um let's see now uh how we use nb git puller with this recently created um leedless jupiter hub so um we have to use the link generated generator page here where we paste the the ip address of our hub that we just created sorry this is the window okay um the ip repository i want to share with the other users through this link that gets created by npkitpooler okay so this is the link if i access this from the admin account this will pull that repo and make a copy in my home directory you can see um things happening already okay so i'm already here i have my own copy of the notebook i have some requirements here uh that i can install and i should be installing as an admin user so that of the other users that don't have sudo rights um so that they are able to run the notebook okay so let's say now that i don't like this classical notebook interface and i rather be using the jupyter lab one this is simple you can edit the url and um use the jupyter lab interface but this is only temporary and if you want this to be persistent and um if you want this interface for all the users uh you you can um do this from the terminal by using the tla the literature hub config command line tool so i'm going to be doing this right now i have to access this with sudo this is why other users users cannot do this can't configure the system and change things um okay so uh this is the comment to install the tlgh for uh um all of the users of the systems of the system and now all we have to do is to tell the hub to reload its um configuration using the same tlgh config tool and um this is it um i hope you enjoyed my um my demo let me just quickly share my slides with you okay so uh use cljh whenever you want to provide jupiter notebooks for your students fast and pain-free um and if your class or classes don't don't go up too much over 100 users you can reach out to the members of the jupiter community on the discourse forum for questions asking for help saying hi or just to share your experience about using tljh contributions are super welcomed and all contributions from code to docs or just helping other other people are important and valuable search for the i want to contribute badge on the github page of the little jupiter hub and that will get you straight to the contributing docs thank you so much for watching this talk and for using the little jupiter hub bye
Original Description
Brief Summary
Do you want to provide hosted Jupyter Notebooks for your students and users without having to worry about them spending time debugging installation issues? TLJH is a single-server JupyterHub distribution designed to be the simplest way to do that. You will learn about the ideas that power TLJH, how to install, use and configure your deployment beyond defaults. Demo, included.
Outline
The Littlest JupyterHub is a single-server JupyterHub distribution designed to be the simplest way to provide hosted Jupyter Notebooks for your students and users without having to worry about them spending time debugging installation issues.
With TLJH, you don't need a system-administrator level of "know how" to provide and maintain Jupyter environments for small groups. Because its configuration defaults provide a solid base for different use-cases, it's never been easier for researchers to share data and work within their group or for students to dive straight into content, trouble-free.
Learning TLJH's internals and where the entry points are will help you understand whether this is the right distribution for you and how to use its superpowers to best fit your needs.
This talk explains the philosophy behind TLJH and walks you through the project internals explaining the various ways of configuring the components that power it. From changing authenticators, installing packages, to distributing content using nbgitpuller, Georgiana will demo installing and extending TLJH. No prior knowledge about TLJH needed or the systems behind, just a lot of Jupyter love.
----
JupyterCon brings together data scientists, business analysts, researchers, educators, developers, core Project contributors, and tool creators for in-depth training, insightful keynotes, networking, and practical talks exploring the Project Jupyter ecosystem.
https://jupytercon.com/
JupyterCon is possible thanks to the generous support of our sponsors, and the labor of many volunteer organizers.
https:
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from JupyterCon · JupyterCon · 46 of 60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
▶
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Interview Joshua Patterson NVIDIA
JupyterCon
Dave Stuart - Jupyter as an Enterprise “Do It Yourself” (DIY) Analytic Platform | JupyterCon 2020
JupyterCon
Jeffrey Mew - Supercharge your Data Science workflow | JupyterCon 2020
JupyterCon
Michelle Ufford- Supercharging SQL Users with Jupyter Notebooks | JupyterCon 2020
JupyterCon
Alan Yu - What we learned from introducing Jupyter Notebooks to the SQL community | JupyterCon 2020
JupyterCon
Chris Holdgraf- 2i2c: sustaining open source through hosted Jupyter infrastructure | JupyterCon 2020
JupyterCon
Yiwen Li - Intro to Elyra - an AI centric extension for JupyterLab | JupyterCon 2020
JupyterCon
Luciano Resende - What's new on Elyra - A set of AI centric JupyterLab extensions | JupyterCon 2020
JupyterCon
Alan Chin - Explore and Extend AI Pipeline Runtimes with Elyra and JupyterLab | JupyterCon 2020
JupyterCon
Eduardo Blancas- Streamline your Data Science projects with Ploomber | JupyterCon 2020
JupyterCon
Thorin Tabor - Democratizing the accessibility of computational workflows | JupyterCon 2020
JupyterCon
Simon Willison- Using Datasette with Jupyter to publish your data | JupyterCon 2020
JupyterCon
Brendan O'Brien - Using Qri (“query”) to fetch, query, combine and publish datasets.|JupyterCon 2020
JupyterCon
Georgiana Dolocan - Putting the JupyterHub puzzle pieces together | JupyterCon 2020
JupyterCon
Yuvi Panda- Running nonjupyter applications on JupyterHub with jupyter-server-proxy| JupyterCon 2020
JupyterCon
Richard Wagner- The Streetwise Guide to JupyterHub Security | JupyterCon 2020
JupyterCon
TamNguyen- Handling Custom Jupyter Data Sources | JupyterCon 2020
JupyterCon
Immanuel Bayer- ipyannotator - the infinitely hackable annotation framework | JupyterCon 2020
JupyterCon
Rebecca Kelly- A shared Python, R and Q Jupyter Notebook - A Quant Sandbox Dream |JupyterCon 2020
JupyterCon
Itay Dafna - Leap of faith: Transitioning from Excel to Jupyter-based applications | JupyterCon 2020
JupyterCon
Damián Avila - Using the Jupyterverse to power MADS | JupyterCon 2020
JupyterCon
Chiin Rui Tan- From Zero to Hero | JupyterCon 2020
JupyterCon
Firas Moosvi- Teaching an Active Learning class with Jupyter Book| JupyterCon 2020
JupyterCon
Daniel Mietchen- Jupyter in the Wikimedia ecosystem | JupyterCon 2020
JupyterCon
Qiusheng Wu- How Jupyter and geemap enable interactive mapping and analysis | JupyterCon 2020
JupyterCon
Stephanie Juneau- Jupyterenabled astrophysical analysis for researchers and students|JupyterCon 2020
JupyterCon
Denton Gentry- The Care and Feeding of JupyterHub for Climate Solution Models| JupyterCon 2020
JupyterCon
Tingkai Liu- FlyBrainLab: Interactive Computing in the Connectomic/Synaptomic Era | JupyterCon 2020
JupyterCon
Kunal Bhalla- A Notebook Style Guide| JupyterCon 2020
JupyterCon
Julia Wagemann - How to avoid 'Death by Jupyter Notebooks' | JupyterCon 2020
JupyterCon
David Pugh - Best practices for managing Jupyter-based data science | JupyterCon 2020
JupyterCon
Karla Spuldaro - Debugging notebooks and python scripts in JupyterLab | JupyterCon 2020
JupyterCon
Shreyas Dalia - assert browserTest == True # Frontend Testing JupyterLab | JupyterCon 2020
JupyterCon
Chris Holdgraf - The new Jupyter Book stack | JupyterCon 2020
JupyterCon
Hamel Husain - Fastpages - A new, open source Jupyter notebook blogging system | JupyterCon 2020
JupyterCon
Marc Wouts - Jupytext: Jupyter Notebooks as Markdown Documents | JupyterCon 2020
JupyterCon
Sheeba Samuel- ProvBook |JupyterCon 2020
JupyterCon
Philipp Rudiger - To Jupyter and back again | JupyterCon 2020
JupyterCon
Jacob Tomlinson - What is my GPU doing? | JupyterCon 2020
JupyterCon
Afshin Darian - A visual debugger in Jupyter | JupyterCon 2020
JupyterCon
Eric Charles - Jupyter Real Time Collaboration| JupyterCon 2020
JupyterCon
Devin Robison - Optimizing model performance | JupyterCon 2020
JupyterCon
Junhua zhao - PayPal Notebooks: ML & Data Science experience | JupyterCon 2020
JupyterCon
April Wang - Redesigning Notebooks for Better Collaboration | JupyterCon 2020
JupyterCon
Bryan Weber - Distributing and Collecting Jupyter Notebooks for Manual Grading| JupyterCon 2020
JupyterCon
Georgiana Dolocan - The Littlest JupyterHub distribution | JupyterCon 2020
JupyterCon
Tim Metzler - Electronic Examination using Jupyter Notebook | JupyterCon 2020
JupyterCon
Blaine Mooers - Why develop a snippet library for Jupyter in your subject domain? | JupyterCon 2020
JupyterCon
Ryan Abernathey - Cloud Native Repositories for Big Scientific Data | JupyterCon 2020
JupyterCon
Tanya Rai - Introducing Bento: Jupyter Notebooks @ Facebook | JupyterCon 2020
JupyterCon
Kenton McHenry - From Papers to Notebooks | JupyterCon 2020
JupyterCon
Ryan Herr - After model.fit, before you deploy| JupyterCon 2020
JupyterCon
Ana Ruvalcaba - Community building is a sustainability strategy | JupyterCon 2020
JupyterCon
Martin Renou - Xeus: an ecosystem of Jupyter kernels | JupyterCon 2020
JupyterCon
Michael Wilson - Teaching teenagers to understand Dark Energy | JupyterCon 2020
JupyterCon
Davide De Marchi - Voilà dashboards for policy support | JupyterCon 2020
JupyterCon
Marcos Lopez Caniego - ESASky's JupyterLab widget| JupyterCon 2020
JupyterCon
Praveen Kanamarlapud - Kernel Life Cycle Management | JupyterCon 2020
JupyterCon
Aaron Bray - Pulse Physiology Engine | JupyterCon 2020
JupyterCon
Aaron Watters - Using WebGL2 transform/feedback in Jupyter widgets | JupyterCon 2020
JupyterCon
More on: Reading ML Papers
View skill →Related AI Lessons
⚡
⚡
⚡
⚡
I Spent Weeks Looking for a Research Gap Before I Realized I Was Searching the Wrong Way
Medium · AI
ICMI 2026 Reviews [D]
Reddit r/MachineLearning
Workshop submission for main conference paper under review [D]
Reddit r/MachineLearning
Kept context-switching between arxiv, OpenReview, GitHub, and HuggingFace for every paper, so I built this. Chrome extension + website with everything inline, plus citation graph + SPECTER2 neighbors. 3M papers, free, feedback welcome [P]
Reddit r/MachineLearning
🎓
Tutor Explanation
DeepCamp AI