Note: This will only allow a single (preconfigured) user to login to Jupyter lab! See How to run Jupyter Hub (multi-user mode) using systemd on how to deploy Jupyter Hub in multi-user mode using systemd, which allows any Unix user to login!
The following script will install Jupyter Hub in single user mode (i.e. only a single Linux user can login to Jupyter Hub using the web interface).
Prerequisites
First install Python & PIP, then NodeJS, then Jupyter Hub, then configurable-http-proxy
:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs python3-pip sudo pip3 install jupyterhub sudo npm i -g configurable-http-proxy
Installing the Jupyter Hub systemd service
Run the following script as the user you want to be able to login! Do not run the script using sudo
!
#!/bin/bash # This script installs and enables/starts a systemd service export NAME=JupyterHub-$USER export GROUP=$(id -gn $USER) # Create service file sudo tee /etc/systemd/system/${NAME}.service <<EOF [Unit] Description=${NAME} [Service] Type=simple ExecStart=/usr/bin/env jupyterhub WorkingDirectory=$HOME User=$USER Group=$GROUP Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target EOF # Enable and start service systemctl enable --now ${NAME}
This script will install a systemd service named JupyterHub-$USER
(where $USER
is the current user, e.g. uli
) and autostart it on boot.
Running multiple services
If you run multiple services, you can run the script for each user and choose a unique port for each service by adding --port=7219
to the /usr/bin/env jupyter hub
command, e.g.
ExecStart=/usr/bin/env jupyterhub --port=7192
Alternatively, you can run a single systemwide Jupyter Hub in multi-user mode where multiple users can log in.