Build your own fast, multi-user Jupyter and Pluto server

The Jupyter and Julia communities provide all the tools required to set up a custom multi-user notebook server, configured exactly as needed for e.g. students to do coursework in Julia without the hassle of maintaining their own individual installations. In this short tutorial you will learn how to set up such a server, building up from a clean Debian installation towards a fully configured JupyterHub capable of running Jupyter and Pluto notebooks with a custom system image for speed.

Using JupyterHub, it is possible to make Jupyter, JupyterLab and even Pluto available to multiple users on the same server. The system supports a wide range of options for authentication and notebook launching. We will build on our experience of running the JupyterHub server at the Royal Military Academy to show how to configure a server that can run Julia 1.6 JupyterLab and Pluto notebooks. We will go through the following steps:

  1. Set up JupyterHub and authentication, including a discussion of some of the options
  2. Discussion of the launching options, which include distributing the system over multiple servers or a cluster
  3. Set up Docker for the actual notebooks and Pluto
  4. Build a custom Docker image with the tools and packages required for your own problems
  5. Add Pluto to the launcher
  6. Build a system image integrated into the Docker image, for shorter startup times

We will end with a small demo of the system as it runs at the Royal Military Academy