JupyterHub

Stable v1.86p1

Многопользовательская среда для Jupyter Notebooks

📖 Описание

JupyterHub — это многопользовательская платформа для работы с Jupyter Notebooks. Данный бандл предоставляет готовое решение для развертывания JupyterHub с аутентификацией через PAM (login) и поддержкой JupyterLab по умолчанию.

Установка производится в изолированное Python виртуальное окружение (venv), что обеспечивает независимость от системных пакетов и упрощает управление зависимостями.

✨ Основные возможности

  • ✅ Установка в изолированное Python venv
  • ✅ Аутентификация через PAM (использование системных пользователей)
  • ✅ JupyterLab включен по умолчанию
  • ✅ Поддержка множества языков программирования через ядра (kernels)
  • ✅ Расширения для научных публикаций (LaTeX/TeX)
  • ✅ Персональные Python ядра с управлением пакетами
  • ✅ Интеграция с systemd для управления сервисом
  • ✅ Гибкая настройка URL-префиксов
  • ✅ Управление правами администратора
  • ✅ Поддержка работы от имени root или custom user

💻 Поддержка языков программирования

JupyterHub поддерживает работу с множеством языков программирования через систему ядер (kernels). Пользователи могут устанавливать и использовать ядра для различных языков:

🐍 Python

IPython kernel (по умолчанию), поддержка Python 2.x и 3.x

📊 R

IRkernel для статистического анализа и data science

☕ Java / Scala

Almond kernel для JVM-языков и Apache Spark

💎 Ruby

IRuby kernel для скриптинга

⚡ Julia

IJulia для научных вычислений

🔷 C++ / C

Xeus-cling для компилируемых языков

🌐 JavaScript / TypeScript

Node.js kernel для веб-разработки

🔵 Go

Gophernotes для Go разработки

🦀 Rust

EvCxR kernel для Rust

🔢 Octave / MATLAB

Octave kernel для математических вычислений

🗄️ SQL

SQL kernels для работы с базами данных

🐚 Bash

Bash kernel для системного администрирования

💡 Примечание: Каждый пользователь может устанавливать дополнительные ядра в свое личное окружение без необходимости системных привилегий.

⚙️ Параметры конфигурации

Параметр По умолчанию Описание
venv_dir /opt/jupyterhub/venv Директория виртуального окружения
root_dir /opt/jupyterhub Корневая директория для конфигурации
data_dir /var/lib/jupyterhub Директория для данных (cookies, sqlite)
bind_host 0.0.0.0 IP адрес для привязки
bind_port 8000 Порт для HTTP сервера
base_url /jupyter Базовый URL префикс
admin_users root Администраторы (через пробел/запятую)

🚀 Использование

После установки JupyterHub доступен по адресу:

http://<host>:8000/jupyter/hub/

Вход осуществляется с использованием учетных данных системных пользователей Linux. Пользователи, указанные в параметре admin_users, получают права администратора.

🎯 Сценарии применения

  • 📊 Data Science проекты — совместная работа над анализом данных на Python, R, Julia
  • 🎓 Образование — проведение занятий по программированию на множестве языков
  • 🔬 Научные исследования — воспроизводимые вычисления с LaTeX публикациями
  • 📝 Научные публикации — создание статей и документации в Jupyter + LaTeX
  • 💼 Корпоративная аналитика — централизованная среда с персональными окружениями
  • 🏫 Университеты — платформа для курсов по Data Science, ML, математике
  • 🔧 Прототипирование — быстрая разработка на разных языках программирования
  • 📚 Создание книг — интерактивные технические книги через Jupyter Book

📋 Требования

  • ADCM версия: ≥ 2.6.0
  • ОС: Linux (протестировано на Ubuntu, CentOS)
  • Python: 3.6+
  • Node.js: для Configurable HTTP Proxy
  • Свободный порт: 8000 (или настраиваемый)

📝 LaTeX и научные публикации

Одна из ключевых возможностей бандла — полная поддержка LaTeX для создания научных публикаций и технической документации непосредственно в Jupyter Notebook.

Возможности LaTeX интеграции:

  • 📄 Полная установка LaTeX — все необходимые пакеты для создания документов
  • 📚 Поддержка русского языка — корректная работа с кириллицей и русскими шрифтами
  • 🔬 Научные формулы — математические выражения в формате TeX/LaTeX
  • 📊 Графики и диаграммы — интеграция с matplotlib, TikZ
  • 📖 Экспорт в PDF — прямой экспорт notebooks в PDF через LaTeX
  • ✍️ Jupyter Book — создание полноценных книг и документации

Почему это важно?

LaTeX — довольно капризная система, особенно для русскоязычных публикаций. Полная установка и настройка LaTeX может быть сложной задачей, требующей:

  • 🔧 Правильной настройки кодировок (UTF-8)
  • 📦 Установки русских шрифтов и babel-пакетов
  • ⚙️ Конфигурации XeLaTeX или LuaLaTeX для Unicode
  • 🎨 Настройки правильного переноса слов

💡 Использование LaTeX в JupyterHub

Inline формулы:

$E = mc^2$

Block формулы:

$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$

Экспорт в PDF:

jupyter nbconvert --to pdf my_notebook.ipynb

Расширения для научной работы:

  • 📑 JupyterLab-LaTeX — живая компиляция LaTeX документов
  • 📊 jupyter-book — создание интерактивных научных книг
  • 🔢 jupyterlab-variableInspector — инспектор переменных
  • 📈 jupyterlab-plotly — интерактивные графики
  • 🗂️ jupyterlab-toc — оглавление для notebook'ов
  • jupyterlab-spellchecker — проверка орфографии

🔧 Персональные Python ядра

Пользователи могут создавать собственные Python ядра с уникальными наборами пакетов, не затрагивая системное окружение или других пользователей.

Управление пакетами через %pip magic:

Прямо из notebook можно устанавливать пакеты Python в текущее ядро:

%pip install pandas numpy scikit-learn
%pip install --upgrade matplotlib
%pip list # просмотр установленных пакетов

Создание персонального ядра:

# Создаем виртуальное окружение
python3 -m venv ~/my_custom_env
source ~/my_custom_env/bin/activate

# Устанавливаем необходимые пакеты
pip install ipykernel pandas scikit-learn tensorflow

# Регистрируем как Jupyter kernel
python -m ipykernel install --user --name=my_custom_kernel --display-name="My Custom Python"

Преимущества персональных ядер:

  • 🔒 Изоляция — каждый проект в своем окружении
  • 📦 Управление версиями — разные версии библиотек для разных проектов
  • 🚀 Производительность — только необходимые пакеты
  • 🔄 Воспроизводимость — точное окружение для экспериментов
  • 👥 Личное пространство — без влияния на других пользователей

🔌 Установка расширений через ADCM

Бандл поддерживает централизованную установку расширений JupyterLab через конфигурацию ADCM. Администраторы могут предустанавливать расширения для всех пользователей.

Типы расширений:

  • 🎨 Темы оформления — кастомные цветовые схемы
  • 🔧 Инструменты разработки — дебаггеры, профайлеры
  • 📊 Визуализация — plotly, bokeh, altair
  • 🔐 Безопасность — расширения для контроля доступа
  • 📝 Документирование — Sphinx, markdown enhancements
  • 🔗 Интеграции — Git, GitHub, GitLab

⚠️ Управление расширениями:

  • Расширения Python ядер устанавливаются через %pip в notebooks
  • Расширения JupyterLab устанавливаются через pip или Extension Manager
  • Некоторые расширения требуют перезапуска сервера

💡 Дополнительные возможности

Бандл включает множество интересных решений:

  • 🔧 Поддержка кастомных spawner commands
  • 🌐 Настройка PATH для single-user процессов
  • 🔐 Гибкая настройка PAM сервисов
  • 👥 Управление доступом пользователей (allow_all)
  • ⚡ Оптимизированная конфигурация для production
  • 📝 Подробная документация по настройке
  • 🔄 Автоматические резервные копии notebooks
  • 📱 Адаптивный интерфейс для мобильных устройств