jupiter

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.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator'
c.LDAPAuthenticator.server_address = 'W.X.Y.Z'
c.LDAPAuthenticator.bind_dn_template = 'uid={username},ou=Users,dc=maboite,dc=com'
c.LDAPAuthenticator.use_ssl = True
c.LDAPAuthenticator.server_port = 636
c.JupyterHub.ip = '0.0.0.0'
c.JupyterHub.port = 443
# Le cookie_secret peut être généré par cette commande : openssl rand -base64 2048
c.JupyterHub.cookie_secret_file = '/etc/jupyterhub/cookie_secret'
# Le proxy_auth_token peut être généré par cette commande : openssl rand -hex 32
c.JupyterHub.proxy_auth_token = '1ca568ca6546132fdea314b365a9e86dcc33a5f1678ad43fcccbcd3472a867c61c'
c.JupyterHub.ssl_cert = '/etc/ssl/jupyterhub.crt'
c.JupyterHub.ssl_key = '/etc/ssl/jupyterhub.key'
c.Authenticator.admin_users = {'moi''}

 

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.

apt-get install supervisor

 

Fichier /etc/supervisor/conf.d/jupyterhub.conf :

[program:jupyterhub]
command=jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
autostart=true
autorestart=true
startretries=3
exitcodes=0,2
stopsignal=TERM
redirect_stderr=true
stdout_logfile=/var/log/jupyterhub.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
user=root

 

On redémarre le bouzin et c’est parti pour la prod :

service supervisor reload
supervisorctl status jupyterhub

 

 

Sur le même sujet :