Georgiana Dolocan - The Littlest JupyterHub distribution | JupyterCon 2020

JupyterCon · Intermediate ·📄 Research Papers Explained ·5y ago

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 Interview   Joshua Patterson NVIDIA
Interview Joshua Patterson NVIDIA
JupyterCon
2 Dave Stuart - Jupyter as an Enterprise “Do It Yourself” (DIY) Analytic Platform | JupyterCon 2020
Dave Stuart - Jupyter as an Enterprise “Do It Yourself” (DIY) Analytic Platform | JupyterCon 2020
JupyterCon
3 Jeffrey Mew - Supercharge your Data Science workflow | JupyterCon 2020
Jeffrey Mew - Supercharge your Data Science workflow | JupyterCon 2020
JupyterCon
4 Michelle Ufford- Supercharging SQL Users with Jupyter Notebooks | JupyterCon 2020
Michelle Ufford- Supercharging SQL Users with Jupyter Notebooks | JupyterCon 2020
JupyterCon
5 Alan Yu - What we learned from introducing Jupyter Notebooks to the SQL community  | JupyterCon 2020
Alan Yu - What we learned from introducing Jupyter Notebooks to the SQL community | JupyterCon 2020
JupyterCon
6 Chris Holdgraf- 2i2c: sustaining open source through hosted Jupyter infrastructure | JupyterCon 2020
Chris Holdgraf- 2i2c: sustaining open source through hosted Jupyter infrastructure | JupyterCon 2020
JupyterCon
7 Yiwen Li - Intro to Elyra - an AI centric extension for JupyterLab | JupyterCon 2020
Yiwen Li - Intro to Elyra - an AI centric extension for JupyterLab | JupyterCon 2020
JupyterCon
8 Luciano Resende - What's new on Elyra - A set of AI centric JupyterLab extensions | JupyterCon 2020
Luciano Resende - What's new on Elyra - A set of AI centric JupyterLab extensions | JupyterCon 2020
JupyterCon
9 Alan Chin - Explore and Extend AI Pipeline Runtimes with Elyra and JupyterLab | JupyterCon 2020
Alan Chin - Explore and Extend AI Pipeline Runtimes with Elyra and JupyterLab | JupyterCon 2020
JupyterCon
10 Eduardo Blancas- Streamline your Data Science projects with Ploomber | JupyterCon 2020
Eduardo Blancas- Streamline your Data Science projects with Ploomber | JupyterCon 2020
JupyterCon
11 Thorin Tabor - Democratizing the accessibility of computational workflows | JupyterCon 2020
Thorin Tabor - Democratizing the accessibility of computational workflows | JupyterCon 2020
JupyterCon
12 Simon Willison- Using Datasette with Jupyter to publish your data | JupyterCon 2020
Simon Willison- Using Datasette with Jupyter to publish your data | JupyterCon 2020
JupyterCon
13 Brendan O'Brien - Using Qri (“query”) to fetch, query, combine and publish datasets.|JupyterCon 2020
Brendan O'Brien - Using Qri (“query”) to fetch, query, combine and publish datasets.|JupyterCon 2020
JupyterCon
14 Georgiana Dolocan - Putting the JupyterHub puzzle pieces together | JupyterCon 2020
Georgiana Dolocan - Putting the JupyterHub puzzle pieces together | JupyterCon 2020
JupyterCon
15 Yuvi Panda- Running nonjupyter applications on JupyterHub with jupyter-server-proxy| JupyterCon 2020
Yuvi Panda- Running nonjupyter applications on JupyterHub with jupyter-server-proxy| JupyterCon 2020
JupyterCon
16 Richard Wagner- The Streetwise Guide to JupyterHub Security | JupyterCon 2020
Richard Wagner- The Streetwise Guide to JupyterHub Security | JupyterCon 2020
JupyterCon
17 TamNguyen- Handling Custom Jupyter Data Sources | JupyterCon 2020
TamNguyen- Handling Custom Jupyter Data Sources | JupyterCon 2020
JupyterCon
18 Immanuel Bayer- ipyannotator - the infinitely hackable annotation framework  | JupyterCon 2020
Immanuel Bayer- ipyannotator - the infinitely hackable annotation framework | JupyterCon 2020
JupyterCon
19 Rebecca Kelly- A shared Python, R and Q  Jupyter Notebook - A Quant Sandbox Dream |JupyterCon 2020
Rebecca Kelly- A shared Python, R and Q Jupyter Notebook - A Quant Sandbox Dream |JupyterCon 2020
JupyterCon
20 Itay Dafna - Leap of faith: Transitioning from Excel to Jupyter-based applications | JupyterCon 2020
Itay Dafna - Leap of faith: Transitioning from Excel to Jupyter-based applications | JupyterCon 2020
JupyterCon
21 Damián Avila - Using the Jupyterverse to power MADS | JupyterCon 2020
Damián Avila - Using the Jupyterverse to power MADS | JupyterCon 2020
JupyterCon
22 Chiin Rui Tan- From Zero to Hero | JupyterCon 2020
Chiin Rui Tan- From Zero to Hero | JupyterCon 2020
JupyterCon
23 Firas Moosvi- Teaching an Active Learning class with Jupyter Book| JupyterCon 2020
Firas Moosvi- Teaching an Active Learning class with Jupyter Book| JupyterCon 2020
JupyterCon
24 Daniel Mietchen- Jupyter in the Wikimedia ecosystem | JupyterCon 2020
Daniel Mietchen- Jupyter in the Wikimedia ecosystem | JupyterCon 2020
JupyterCon
25 Qiusheng Wu- How Jupyter and geemap enable interactive mapping and analysis | JupyterCon 2020
Qiusheng Wu- How Jupyter and geemap enable interactive mapping and analysis | JupyterCon 2020
JupyterCon
26 Stephanie Juneau- Jupyterenabled astrophysical analysis for researchers and students|JupyterCon 2020
Stephanie Juneau- Jupyterenabled astrophysical analysis for researchers and students|JupyterCon 2020
JupyterCon
27 Denton Gentry- The Care and Feeding of JupyterHub for Climate Solution Models| JupyterCon 2020
Denton Gentry- The Care and Feeding of JupyterHub for Climate Solution Models| JupyterCon 2020
JupyterCon
28 Tingkai Liu- FlyBrainLab: Interactive Computing in the Connectomic/Synaptomic Era  | JupyterCon 2020
Tingkai Liu- FlyBrainLab: Interactive Computing in the Connectomic/Synaptomic Era | JupyterCon 2020
JupyterCon
29 Kunal Bhalla- A Notebook Style Guide| JupyterCon 2020
Kunal Bhalla- A Notebook Style Guide| JupyterCon 2020
JupyterCon
30 Julia Wagemann - How to avoid 'Death by Jupyter Notebooks' | JupyterCon 2020
Julia Wagemann - How to avoid 'Death by Jupyter Notebooks' | JupyterCon 2020
JupyterCon
31 David Pugh - Best practices for managing Jupyter-based data science  | JupyterCon 2020
David Pugh - Best practices for managing Jupyter-based data science | JupyterCon 2020
JupyterCon
32 Karla Spuldaro - Debugging notebooks and python scripts in JupyterLab | JupyterCon 2020
Karla Spuldaro - Debugging notebooks and python scripts in JupyterLab | JupyterCon 2020
JupyterCon
33 Shreyas Dalia - assert browserTest == True # Frontend Testing JupyterLab  | JupyterCon 2020
Shreyas Dalia - assert browserTest == True # Frontend Testing JupyterLab | JupyterCon 2020
JupyterCon
34 Chris Holdgraf - The new Jupyter Book stack | JupyterCon 2020
Chris Holdgraf - The new Jupyter Book stack | JupyterCon 2020
JupyterCon
35 Hamel Husain - Fastpages - A new, open source Jupyter notebook blogging system | JupyterCon 2020
Hamel Husain - Fastpages - A new, open source Jupyter notebook blogging system | JupyterCon 2020
JupyterCon
36 Marc Wouts - Jupytext: Jupyter Notebooks as Markdown Documents | JupyterCon 2020
Marc Wouts - Jupytext: Jupyter Notebooks as Markdown Documents | JupyterCon 2020
JupyterCon
37 Sheeba Samuel- ProvBook |JupyterCon 2020
Sheeba Samuel- ProvBook |JupyterCon 2020
JupyterCon
38 Philipp Rudiger - To Jupyter and back again | JupyterCon 2020
Philipp Rudiger - To Jupyter and back again | JupyterCon 2020
JupyterCon
39 Jacob Tomlinson - What is my GPU doing? | JupyterCon 2020
Jacob Tomlinson - What is my GPU doing? | JupyterCon 2020
JupyterCon
40 Afshin Darian - A visual debugger in Jupyter | JupyterCon 2020
Afshin Darian - A visual debugger in Jupyter | JupyterCon 2020
JupyterCon
41 Eric Charles - Jupyter Real Time Collaboration| JupyterCon 2020
Eric Charles - Jupyter Real Time Collaboration| JupyterCon 2020
JupyterCon
42 Devin Robison - Optimizing model performance | JupyterCon 2020
Devin Robison - Optimizing model performance | JupyterCon 2020
JupyterCon
43 Junhua zhao - PayPal Notebooks: ML & Data Science experience | JupyterCon 2020
Junhua zhao - PayPal Notebooks: ML & Data Science experience | JupyterCon 2020
JupyterCon
44 April Wang - Redesigning Notebooks for Better Collaboration | JupyterCon 2020
April Wang - Redesigning Notebooks for Better Collaboration | JupyterCon 2020
JupyterCon
45 Bryan Weber - Distributing and Collecting Jupyter Notebooks for Manual Grading| JupyterCon 2020
Bryan Weber - Distributing and Collecting Jupyter Notebooks for Manual Grading| JupyterCon 2020
JupyterCon
Georgiana Dolocan - The Littlest JupyterHub distribution | JupyterCon 2020
Georgiana Dolocan - The Littlest JupyterHub distribution | JupyterCon 2020
JupyterCon
47 Tim Metzler - Electronic Examination using Jupyter Notebook | JupyterCon 2020
Tim Metzler - Electronic Examination using Jupyter Notebook | JupyterCon 2020
JupyterCon
48 Blaine Mooers - Why develop a snippet library for Jupyter in your subject domain? | JupyterCon 2020
Blaine Mooers - Why develop a snippet library for Jupyter in your subject domain? | JupyterCon 2020
JupyterCon
49 Ryan Abernathey - Cloud Native Repositories for Big Scientific Data | JupyterCon 2020
Ryan Abernathey - Cloud Native Repositories for Big Scientific Data | JupyterCon 2020
JupyterCon
50 Tanya Rai - Introducing Bento: Jupyter Notebooks @ Facebook | JupyterCon 2020
Tanya Rai - Introducing Bento: Jupyter Notebooks @ Facebook | JupyterCon 2020
JupyterCon
51 Kenton McHenry - From Papers to Notebooks | JupyterCon 2020
Kenton McHenry - From Papers to Notebooks | JupyterCon 2020
JupyterCon
52 Ryan Herr - After model.fit, before you deploy| JupyterCon 2020
Ryan Herr - After model.fit, before you deploy| JupyterCon 2020
JupyterCon
53 Ana Ruvalcaba - Community building is a sustainability strategy | JupyterCon 2020
Ana Ruvalcaba - Community building is a sustainability strategy | JupyterCon 2020
JupyterCon
54 Martin Renou - Xeus: an ecosystem of Jupyter kernels | JupyterCon 2020
Martin Renou - Xeus: an ecosystem of Jupyter kernels | JupyterCon 2020
JupyterCon
55 Michael Wilson - Teaching teenagers to understand Dark Energy | JupyterCon 2020
Michael Wilson - Teaching teenagers to understand Dark Energy | JupyterCon 2020
JupyterCon
56 Davide De Marchi - Voilà dashboards for policy support | JupyterCon 2020
Davide De Marchi - Voilà dashboards for policy support | JupyterCon 2020
JupyterCon
57 Marcos Lopez Caniego - ESASky's JupyterLab widget| JupyterCon 2020
Marcos Lopez Caniego - ESASky's JupyterLab widget| JupyterCon 2020
JupyterCon
58 Praveen Kanamarlapud - Kernel Life Cycle Management | JupyterCon 2020
Praveen Kanamarlapud - Kernel Life Cycle Management | JupyterCon 2020
JupyterCon
59 Aaron Bray - Pulse Physiology Engine | JupyterCon 2020
Aaron Bray - Pulse Physiology Engine | JupyterCon 2020
JupyterCon
60 Aaron Watters - Using WebGL2 transform/feedback in Jupyter widgets | JupyterCon 2020
Aaron Watters - Using WebGL2 transform/feedback in Jupyter widgets | JupyterCon 2020
JupyterCon

This video teaches how to use The Littlest JupyterHub (TLJH) to provide hosted Jupyter Notebooks for students and users without worrying about installation issues. TLJH is a single-server JupyterHub distribution designed for simplicity and ease of use. The video covers the ideas and concepts behind TLJH and how to configure it using various tools.

Key Takeaways
  1. Create a DigitalOcean droplet for TLJH
  2. Copy the TLJH installation command from the documentation
  3. Paste the IP address of the TLJH installation into the browser to access the progress page
  4. Use nbgrader to share notebooks between users
  5. Access the link created by npkitpooler
  6. Install requirements as an admin user
  7. Edit the URL to use the Jupyter Lab interface
  8. Use the tla config tool to configure the system
  9. Reload the hub's configuration using the tla config tool
💡 The Littlest JupyterHub (TLJH) is a simple and easy-to-use JupyterHub distribution that can be configured using various tools and hosted on cloud providers like DigitalOcean.

Related Reads

📰
I Spent Weeks Looking for a Research Gap Before I Realized I Was Searching the Wrong Way
Learn how to effectively find research gaps by changing your approach, a crucial skill for AI researchers and academics
Medium · AI
📰
ICMI 2026 Reviews [D]
Learn how to interpret ICMI 2026 reviews and improve your paper's acceptance chances
Reddit r/MachineLearning
📰
Workshop submission for main conference paper under review [D]
Learn how to navigate submitting a paper to a non-archival workshop before the final decision of a main conference like ECCV
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]
Streamline your research with a new Chrome extension and website that integrates 3M papers from arxiv, OpenReview, GitHub, and HuggingFace, including citation graphs and SPECTER2 neighbors, and provide feedback to improve it
Reddit r/MachineLearning
Up next
Indians Under House Arrest in America? 😱 Immigration Crisis Explained | SumanTV Classroom
SumanTV Classroom
Watch →