Before performing an upgrade, you might want to back up some components of the stack.


JupyterHub keeps the state in a sqlite database, with information such as the last login and whether a user is an admin or not.

TLJH keeps the database in the /opt/tljh/state directory on the server. The full path to the database is /opt/tljh/state/jupyterhub.sqlite.

To know more about backing up the database please refer to:

For more info on where TLJH is installed: What does the installer do?

Plasma TLJH Plugin

This TLJH plugin is a regular Python package.

It is installed in /opt/tljh/hub/lib/python3.6/site-packages/tljh_plasma, and doesn’t need to be backed up as it doesn’t hold any state.

User Environments

The user environments correspond to Docker images on the host. There is no need to back them up as they will stay untouched if not removed manually.

User Data

It is generally recommended to have a backup strategy for important data such as user data.

This can be achieved by setting up tools that for example sync the user home directories to another machine on a regular basis.

Check out the User Data section to know more about user data.

Running the playbook

To perform an upgrade of the setup, you can re-run the playbooks as explained in Deploying with Ansible.

Re-running the playbooks will:

  • Update the TLJH Plasma plugin

  • Update TLJH

  • Restart JupyterHub and the Proxy to take new changes into account

However, performing an upgrade does not:

  • Stop user servers

  • Remove user environments (Docker images)

  • Delete user data

In most cases, it is enough to only run the tljh.yml playbook to perform the upgrade.

Refer to Running individual playbooks for more info.