Welcome to the JupyterHub Deployment Docs for ENGR114 2019Q4
This documentation serves as a record of the JupyterHub Deployment for ENGR114 Fall 2019 at Portland Commmunity College.
The GitHub repo for the deployment can be found here:
Click the menu items on the left to view the deployment steps.
Or start Here and click the arrows at the bottom of each page.
What is JupyterHub?
JupyterHub is a cloud server-hosted distributed Jupyter notebook deployment. JupyterHub allows users to log into a server and write Python code within a web browswer without installing any software on their local machine. After JupyterHub is deployed, anywhere you have an internet connection, you can bring up a Jupyter notebook in your browser and write/run Python code. The Jupyter notebook interface that JupyterHub provides is the same Jupyter notebook interface you can run locally. Because JupyterHub runs in a web browser, it even works on tablets and phones.
Why Jupyter Hub? I am teaching an engineering programming course Fall of 2019. In previous quarters, I've taught MATLAB for the programming class. But this fall, I am teaching Python and cover the same concepts and learning outcomes.
When we use Python in the class this Fall, I would like to spend the class time coding and solving problems. I don't want to spend time during class downloading Python, creating virtual environments, troubleshooting installs, dealing with system vs. non-system versions of Python, installing packages, dealing with folder structure, explaining the difference between conda and pip, teaching command-line arguments, going over Python on Windows compared to Python on MacOS... The solution is to use JupyterHub.
A series of blog posts documents my first JupyterHub deployment in Summer 2018. This documentation builds upon that previous experience.
A deployment of JupyterHub Winter 2019 documents by second JupyterHub installation. This documentation closely follows the same steps with only a few minor alterations.
- Install PuTTY, generate SSH keys
- Create a new Ubuntu 18.04 server on Digital Ocean
- Install JupyterHub and Python packages
- Aquire and link domain name to server
- Aquire SSL cirt
- Create Cookie Secret, Proxy Auth Token, and dhparam.pem
- Install and configure Nginx
- Configure JupyterHub
- Google Authentication
- Create a custom login page
- Cull idle servers script