Deploying a small Jupyterhub server.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Documentation for installing a Jupyterhub server on MacOSX. The server authenticates UCSC Google accounts and creates local users for whom individual Jupyter notebook servers can be started.

File hierarchy

By default, all files will be stored in the runtime directory, /srv/jupyterhub. Within this directory, the notebooks directory contains the home directories of all users as well as a shared directory.


You'll need to install python3 and npm. All other requirements are installed through their respective package managers.


As root, run

cd /srv/jupyterhub

This installs the necessary python packages, creates a cookie secret file and copies over all necessary files to the runtime directory.

HTTPS certificate

You can create a self-signed certificate with openssl, but most browsers will warn that this is insecure.

openssl req -x509 -newkey rsa:4096 -keyout jupyterhub.key -out jupyterhub.cert -days 365

Third party certificates can be obtained from Let's Encrypt.


To authenticate through Google, follow the directions in the Oauthenticator readme. You'll need to create OAuth2.0 credentials, and then edit environment variables in with the client ID, client secret, and callback URL.


From /srv/jupyterhub, run ./ as root to start the Jupyterhub server. This can be accessed at port 8000 by default. The script starts up a python HTTP server to for redirects.


The and scripts are for interfacing with Mac's directory service. is called by Jupyterhub whenver a new user authenticates.


Fill in documentation on automated backups with Duplicity.