Jupyter Notebook / Jupyter Hub est une évolution de iPython Notebook.
En gros, c’est un éditeur de texte Web, multi-langage, multi-utilisateurs (hub) ou mono utilisateur (notebook) qui permet de réaliser des travaux notamment dans le domaine scientifique.
Voir les explications sur le site officiel.
Installation :
On va installer la bête à coups d’apt, de npm et de pip :
# Les outils LDAP serviront à l'authentification LDAP et Supervisor lancera Jupyterhub en tant que service
apt-get install -y npm nodejs-legacy python3-pip libnss-ldap libpam-ldap ldap-utils supervisor
npm install -g configurable-http-proxy
# NBGrader : plugin de notation profs/élèves, LdapAuthenticator pour les utilisateurs LDAP
pip3 install jupyterhub notebook nbgrader jupyterhub-ldapauthenticator
Préparation d’un certificat TLS :
On aura besoin d’un certificat TLS par la suite donc autant le créer maintenant.
Ici il est auto-signé :
cd /etc/ssl
openssl req -nodes -sha512 -x509 -newkey rsa:4096 -keyout jupyterhub.key -out jupyterhub.crt -days 356
Authentification :
Jupyterhub va utiliser l’authentification locale (du Debian) pour authentifier les utilisateurs. Si vous voulez un utilisateur Jupyterhub, il vous faut créer un utilisateur Linux :
adduser toto
Pour authentifier mes utilisateurs par LDAP, j’ai utilisé un module dédié à l’authentification LDAP.
Configuration :
Vous pouvez générer un fichier de configuration par défaut pour Jupyterhub. Pour ma part, je le mets dans /etc pour être cohérent avec les autres services.
mkdir /etc/jupyterhub
cd /etc/jupyterhub
jupyterhub --generate-config
Voilà, maintenant que la configuration par défaut est générée, voici les quelques paramètres à ajouter ou changer :
C’est parti :
Yaplukatester :
jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
Et hop : https://monjupyter.maboite.com/
Service :
Pour faire tourner Jupyterhub en tant que service, je vais me tourner vers supervisor.
Fichier /etc/supervisor/conf.d/jupyterhub.conf :
On redémarre le bouzin et c’est parti pour la prod :
service supervisor reload
supervisorctl status jupyterhub