Package: jupyterhub
Technical Overview|Installation|Configuration|Docker|Contributing|License|Help and ResourcesJupyterHubWithJupyterHubyou can create amulti-user Hubthat spawns, manages, and proxies multiple instances of the
single-userJupyter notebookserver.Project Jupytercreated JupyterHub to support many
users. The Hub can offer notebook servers to a class of students, a corporate
data science workgroup, a scientific research project, or a high-performance
computing group.Technical overviewThree main actors make up JupyterHub:multi-userHub(tornado process)configurable httpproxy(node-http-proxy)multiplesingle-user Jupyter notebook servers(Python/Jupyter/tornado)Basic principles for operation are:Hub launches a proxy.The Proxy forwards all requests to Hub by default.Hub handles login and spawns single-user servers on demand.Hub configures proxy to forward URL prefixes to the single-user notebook
servers.JupyterHub also provides aREST APIfor administration of the Hub and its users.InstallationCheck prerequisitesA Linux/Unix based systemPython3.6 or greaternodejs/npmIf you are usingconda, the nodejs and npm dependencies will be installed for
you by conda.If you are usingpip, install a recent version (at least 12.0) ofnodejs/npm.If using the default PAM Authenticator, apluggable authentication module (PAM).TLS certificate and key for HTTPS communicationDomain nameInstall packagesUsingcondaTo install JupyterHub along with its dependencies including nodejs/npm:condainstall-cconda-forgejupyterhubIf you plan to run notebook servers locally, install JupyterLab or Jupyter notebook:condainstalljupyterlab
condainstallnotebookUsingpipJupyterHub can be installed withpip, and the proxy withnpm:npminstall-gconfigurable-http-proxy
python3-mpipinstalljupyterhubIf you plan to run notebook servers locally, you will need to installJupyterLab or Jupyter notebook:python3 -m pip install --upgrade jupyterlab
python3 -m pip install --upgrade notebookRun the Hub serverTo start the Hub server, run the command:jupyterhubVisithttp://localhost:8000in your browser, and sign in with your system username and password.Note: To allow multiple users to sign in to the server, you will need to
run thejupyterhubcommand as aprivileged user, such as root.
Thewikidescribes how to run the server as aless privileged user, which requires
more configuration of the system.ConfigurationTheGetting Startedsection of the
documentation explains the common steps in setting up JupyterHub.TheJupyterHub tutorialprovides an in-depth video and sample configurations of JupyterHub.Create a configuration fileTo generate a default config file with settings and descriptions:jupyterhub --generate-configStart the HubTo start the Hub on a specific url and port10.0.1.2:443withhttps:jupyterhub --ip 10.0.1.2 --port 443 --ssl-key my_ssl.key --ssl-cert my_ssl.certAuthenticatorsAuthenticatorDescriptionPAMAuthenticatorDefault, built-in authenticatorOAuthenticatorOAuth + JupyterHub Authenticator = OAuthenticatorldapauthenticatorSimple LDAP Authenticator Plugin for JupyterHubkerberosauthenticatorKerberos Authenticator Plugin for JupyterHubSpawnersSpawnerDescriptionLocalProcessSpawnerDefault, built-in spawner starts single-user servers as local processesdockerspawnerSpawn single-user servers in Docker containerskubespawnerKubernetes spawner for JupyterHubsudospawnerSpawn single-user servers without being rootsystemdspawnerSpawn single-user notebook servers using systemdbatchspawnerDesigned for clusters using batch scheduling softwareyarnspawnerSpawn single-user notebook servers distributed on a Hadoop clusterwrapspawnerWrapSpawner and ProfilesSpawner enabling runtime configuration of spawnersDockerA starterdocker image for JupyterHubgives a baseline deployment of JupyterHub using Docker.Important:Thisjupyterhub/jupyterhubimage contains only the Hub itself,
with no configuration. In general, one needs to make a derivative image, with
at least ajupyterhub_config.pysetting up an Authenticator and/or a Spawner.
To run the single-user servers, which may be on the same system as the Hub or
not, Jupyter Notebook version 4 or greater must be installed.The JupyterHub docker image can be started with the following command:docker run -p 8000:8000 -d --name jupyterhub jupyterhub/jupyterhub jupyterhubThis command will create a container namedjupyterhubthat you canstop and resumewithdocker stop/start.The Hub service will be listening on all interfaces at port 8000, which makes
this a good choice fortesting JupyterHub on your desktop or laptop.If you want to run docker on a computer that has a public IP then you should
(as in MUST)secure it with sslby adding ssl options to your docker
configuration or by using an ssl enabled proxy.Mounting volumeswill
allow you tostore data outside the docker image (host system) so it will be persistent, even when you start
a new image.The commanddocker exec -it jupyterhub bashwill spawn a root shell in your docker
container. You canuse the root shell to create system users in the container.
These accounts will be used for authentication in JupyterHub's default configuration.ContributingIf you would like to contribute to the project, please read ourcontributor documentationand theCONTRIBUTING.md. TheCONTRIBUTING.mdfile
explains how to set up a development installation, how to run the test suite,
and how to contribute to documentation.For a high-level view of the vision and next directions of the project, see theJupyterHub community roadmap.A note about platform supportJupyterHub is supported on Linux/Unix based systems.JupyterHub officiallydoes notsupport Windows. You may be able to use
JupyterHub on Windows if you use a Spawner and Authenticator that work on
Windows, but the JupyterHub defaults will not. Bugs reported on Windows will not
be accepted, and the test suite will not run on Windows. Small patches that fix
minor Windows compatibility issues (such as basic installation)maybe accepted,
however. For Windows-based systems, we would recommend running JupyterHub in a
docker container or Linux VM.Additional Reference:Tornado's documentation on Windows platform supportLicenseWe use a shared copyright model that enables all contributors to maintain the
copyright on their contributions.All code is licensed under the terms of therevised BSD license.Help and resourcesWe encourage you to ask questions and share ideas on theJupyter community forum.
You can also talk with us on our JupyterHubGitterchannel.Reporting IssuesJupyterHub tutorialDocumentation for JupyterHubDocumentation for JupyterHub's REST APIDocumentation for Project JupyterProject Jupyter websiteProject Jupyter communityJupyterHub follows the JupyterCommunity Guides.Technical Overview|Installation|Configuration|Docker|Contributing|License|Help and Resources