Didacticiel :
Installer JupyterHub pour des Notebooks hébergés sur votre serveur

Vous connaissez sans doute déjà les notebooks Jupyter [1], ces documents web où l'on peut rédiger du contenu en Markdown, pouvant contenir des formules mathématiques en LaTeX, mêlées à des cellules de code Python, (ou R, Julia etc.) que l'on peut exécuter au cas par cas de façon interactive. Ils sont pas mal utilisés en data science pour explorer un jeu de données où créer un modèle de machine learning progressivement, par exemple.

Il existe de nombreux outils en ligne comme Google Colab, Kaggle, CoCalc ou encore Binder qui implémentent leur versions de Jupyter.

Installer JupyterHub sur votre serveur rendra vos notebooks accessibles aux gens avec qui vous travaillez et vous permettra d'avoir un accès complet sur les paramètres. Cela sera peut être l'occasion de convaincre votre labo ou votre université d'en créer une instance ouverte à tous (étudiants compris ;-).

Comment Installer JupyterHub ?

Il y a différentes façons d'installer JupyterHub sur votre serveur, j'ai choisi une façon relativement standard, mais si cela ne vous convient pas n'hésitez surtout pas à aller voir la documentation de JupyterHub [3] pour vous renseigner davantage.

On distingue deux techniques légèrement différentes, suivant le gestionnaire de paquets python que vous utilisez : Anaconda ou pip.

Pour la présente démonstration, j'ai choisi une installation sur Debian. Il vous faudra adapter les commandes en fonction de l'OS, ou de la distribution que vous avez sous la main...

Les droits administrateur sur la machine sont requis pour installer JupyterHub.

Anaconda

Pour installer Anaconda3 [2], entrez les commandes suivantes dans votre terminal:

Préférez une installation globale dans /opt/anaconda3 pour qu'il n'y ait pas de problème de droit (ce qui peut arriver avec l'option par défaut /root/anaconda3).

Pip

Comment créer le fichier de configuration jupyterhub_config.py ?

Dans tous les cas, générez le fichier de configuration dans /etc/jupyterhub en entrant les commandes suivante dans le terminal:

Comment gérér JupyterHub à l'aide d'un service Systemd ?

Pareillement, le service diffère suivant la procédure que vous avez menée jusqu'alors.

Pour éditer le fichier de configuration du service, tapez la commande suivante (pour les fan de Vim 😉 )

Puis copiez l'une de configurations suivantes, en fonction de votre installation.

Anaconda

Pip

Comment lancer le service Systemd ?

Comment installer et configurer un serveur proxy HTTP avec Nginx ?

Pour accéder au notebooks depuis une URL spécifique, il vous faudra enregistrer un nouveau nom de domaine, ou de sous-domaine chez votre registrar, et configurer votre serveur pour renvoyer cette adresse vers le port où écoute JupyterHub.

Contenu du fichier de configuration du serveur:

N'oubliez pas de remplacer 'HUB.DOMAIN.TLD' par le nom de domaine que vous avez enregistrer dans votre DNS, et qui pointe vers l'IP publique du serveur, par exemple dans mon cas, c'est hub.ortion.xyz.

Si vous préférez utiliser Apache, allez voir la configuration recommandée sur la doc de jupyterhub [4].

Comment générer les certificat SSL avec Letsencrypt ?

Relancer Nginx

Et voilà, normalement, si tout s'est déroulé comme prévu vous pouvez dorénavant accéder à votre serveur JupyterHub via le domaine que vous avez spécifié avec Nginx, ou via http://localhost:8000 si vous êtes en local, et commencer à créer des cellules et coder dans vos notebooks.

Les identifiants de connection sont ceux des utilisateurs UNIX de votre serveur.

Notebook Jupyter pour la classification de photos d'oiseaux sur mon serveur hub.ortion.xyz

Si l'installation s'est mal passée et que vous n'arrivez pas à cette page, n'hésitez pas à demander du support sur le forum de JupyterHub [5].

Bonus : Comment installer le Kernel R - IRKernel ?

Pour exécuter du code R dans vos notebooks, il faut installer le Kernel R.

Il faut installer une version de R >= 3.5.0 pour le paquet pbdZMQ.

Si vous travailler avec Anaconda, il est peut être plus simple d'installer R avec la commande suivante: (qui installe la version 3.5.1)

Pour plus de détail rendez vous sur la doc de IRKernel [6] .

Rendez vous sur la liste complète des Kernels disponibles sur Jupyter [7] pour voir l’étendue des possibilités.

Nota bene

Malheureusement, JupyterHub ne permet pas l'édition collaborative en simultané des notebooks. Cette fonctionnalité est encore en développement.

Pour accéder à cette fonctionnalité, il faudra plutôt se diriger vers une solution alternative telle que CoCalc.

J'ai installé Open CoCalc sur le serveur de Liness, (Linux Essonne, un GULL -- Groupe d'Utilisateurs de Logiciels Libres), et ça marche bien [8]. Il y a même un éditeur de document LaTeX intégré ainsi que de nombreux langages de programmations supportés par défaut.

Merci beaucoup aux relecteurs (azerin, Olivier Dameron et Yoann M.) pour leurs avis éclairés et leur suggestions !


Références

  • À propos de
  • Geekus biologicus juvénile en master Genomics, Informatics and Mathematics for Health and Environment (GENIOMHE) à l'Université d'Évry val d'Essonne -- Université Paris-Saclay.

Laisser un commentaire