What does the installer do?

This document details what exactly the installer does to the machine it is run on.

apt Packages installed

The packages python3 and python3-venv are installed from the apt repositories. Since we need an recent & supported version of nodejs, we install it from nodesource.

Hub environment

JupyterHub is run from a python3 virtual environment located in /opt/tljh/hub. It uses the system’s installed python and is owned by root. It also contains a npm install of configurable-http-proxy and a binary install of traefik. This virtual environment is completely managed by TLJH.

User environment

By default, a miniconda environment is installed in /opt/tljh/user. This contains the notebook interface used to launch all users, and the various packages available to all users. The environment is owned by the root user. JupyterHub admins may use to sudo -E conda install or sudo -E pip install packages into this environment.

This conda environment is added to $PATH for all users started with JupyterHub. If you are using ssh instead, you can activate this environment by running the following:

source /opt/tljh/user/bin/activate

This should let you run various conda and pip commands. If you run into errors like Command 'conda' not found, try prefixing your command with:

sudo PATH=${PATH} <command>

By default, sudo does not respect any custom environments you have activated. The PATH=${PATH} ‘fixes’ that.

Systemd Units

TLJH places 3 systemd units on your computer. They all start on system startup.

  1. jupyterhub.service - starts the JupyterHub service.
  2. configurable-http-proxy.service - starts the nodejs based proxy that is used by JupyterHub.
  3. traefik.service - starts traefik proxy that manages HTTPS

In addition, each running Jupyter user gets their own systemd unit of the name jupyter-<username>.

User groups

TLJH creates two user groups when installed:

  1. jupyterhub-users contains all users managed by this JupyterHub
  2. jupyterhub-admins contains all users with admin rights managed by this JupyterHub.

When a new JupyterHub user logs in, a unix user is created for them. The unix user is always added to the jupyterhub-users group. If the user is an admin, they are added to the jupyterhub-admins group whenever they start / stop their notebook server.

If you uninstall TLJH, you should probably remove all user accounts associated with both these user groups, and then remove the groups themselves. You might have to archive or delete the home directories of these users under /home/.

Passwordless sudo for JupyterHub admins

/etc/sudoers.d/jupyterhub-admins is created to provide passwordless sudo for all JupyterHub admins. We also set it up to inherit $PATH with sudo -E, to more easily call conda, pip, etc.