The goal of this repository is to produce a reference deployment of JupyterHub for teaching with nbgrader.
The repository started from this deployment of JupyterHub for "Introduction to Data Science" at Cal Poly. It is designed to be a simple and reusable JupyterHub deployment, while following best practices.
The main use case targeted is small to medium groups of trusted users working on a single server.
Create a JupyterHub teaching reference deployment that is simple yet functional:
To deploy this JupyterHub reference deployment, you should have:
pip install "ansible>=2.1"
)
For administration of the server, you should also:
root
for administration.For managing users and services on the server, you will:
Follow the detailed instructions in the Installation Guide.
The basic steps are:
ansible-playbook -i hosts deploy.yml
supervisorctl reload
The nbgrader package is installed when JupyterHub is installed using the steps in the Installation Guide.
View the documentation for detailed configuration steps. The basic steps to configure formgrade or nbgrader's notebook extensions are:
nbgrader extension activate
ansible-playbook -i hosts deploy_formgrade.yml
supervisorctl reload
With this reference deployment, instructors can start to use nbgrader. The Using nbgrader section of the reference deployment documentation gives brief instructions about creating course assignments, releasing them to students, and grading student submissions.
For full details about nbgrader and its features, see the nbgrader documentation.
Change the ansible configuration by editing ./ansible_cfg
.
To limit the deployment to certain hosts, add -l hostname
to the
Ansible deploy commands:
ansible-playbook -i hosts -l hostname deploy.yml
If you are not using GitHub OAuth, you will need to manually create users
using adduser: adduser --gecos "" username
.
The logs for jupyterhub are in /var/log/jupyterhub
.
The logs for nbgrader are in /var/log/nbgrader
.
To manage the jupyterhub and nbgrader services by SSH to the server
and run: supervisorctl jupyterhub [start|stop|restart]