- Home »

Настройка Jupyter Notebook с Python 3 на Ubuntu 24
Если ты разворачиваешь data science проекты на серверах или просто хочешь иметь удобное окружение для работы с Python прямо в браузере, то Jupyter Notebook — это именно то, что нужно. Особенно актуально для тех, кто работает с VPS или выделенными серверами — можно настроить один раз и получить доступ к полнофункциональной среде разработки откуда угодно. В этой статье разберём установку и настройку Jupyter Notebook с Python 3 на свежей Ubuntu 24.04, причём сделаем это правильно — с виртуальными окружениями, безопасностью и оптимизацией для продакшена.
Как это работает и зачем нужно
Jupyter Notebook — это веб-приложение, которое позволяет создавать и делиться документами с живым кодом, уравнениями, визуализацией и текстом. В отличие от обычного IDE, здесь всё крутится вокруг концепции “notebook” — интерактивного документа, где можно смешивать код, markdown и результаты выполнения.
Архитектура довольно простая:
- Jupyter Server — бэкенд, который выполняет код и управляет ядрами
- Notebook Interface — веб-интерфейс в браузере
- Kernels — процессы, которые выполняют код (Python, R, Julia и т.д.)
Пошаговая установка и настройка
Шаг 1: Подготовка системы
Начнём с обновления системы и установки необходимых пакетов:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv python3-dev build-essential -y
sudo apt install curl wget git -y
Шаг 2: Создание виртуального окружения
Никогда не ставь Jupyter в системный Python! Создаём изолированное окружение:
mkdir ~/jupyter-env
cd ~/jupyter-env
python3 -m venv jupyter_venv
source jupyter_venv/bin/activate
Шаг 3: Установка Jupyter
Устанавливаем Jupyter и популярные библиотеки для data science:
pip install --upgrade pip
pip install jupyter notebook jupyterlab
pip install numpy pandas matplotlib seaborn plotly
pip install requests beautifulsoup4 scikit-learn
Шаг 4: Генерация конфигурации
Создаём конфигурационный файл:
jupyter notebook --generate-config
Файл конфигурации будет создан в ~/.jupyter/jupyter_notebook_config.py
Шаг 5: Настройка пароля
Генерируем хеш пароля:
python3 -c "from jupyter_server.auth import passwd; print(passwd())"
Скопируй полученный хеш — он понадобится для конфигурации.
Шаг 6: Настройка конфигурации
Редактируем конфигурационный файл:
nano ~/.jupyter/jupyter_notebook_config.py
Добавляем следующие настройки:
# Разрешаем подключения с любых IP
c.NotebookApp.ip = '0.0.0.0'
# Устанавливаем порт (по умолчанию 8888)
c.NotebookApp.port = 8888
# Отключаем автоматическое открытие браузера
c.NotebookApp.open_browser = False
# Устанавливаем пароль (замени на свой хеш)
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$...'
# Указываем рабочую директорию
c.NotebookApp.notebook_dir = '/home/your_username/notebooks'
# Разрешаем запуск от root (не рекомендуется для продакшена)
c.NotebookApp.allow_root = False
Шаг 7: Создание рабочей директории
mkdir -p /home/$USER/notebooks
cd /home/$USER/notebooks
Настройка как системный сервис
Чтобы Jupyter автоматически запускался при перезагрузке сервера, создаём systemd service:
sudo nano /etc/systemd/system/jupyter.service
Содержимое файла:
[Unit]
Description=Jupyter Notebook Server
After=network.target
[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/notebooks
ExecStart=/home/your_username/jupyter-env/jupyter_venv/bin/jupyter notebook
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Включаем и запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable jupyter.service
sudo systemctl start jupyter.service
sudo systemctl status jupyter.service
Настройка безопасности
Настройка firewall
sudo ufw allow 8888/tcp
sudo ufw enable
sudo ufw status
Настройка SSL (рекомендуется)
Создаём самоподписанный сертификат:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.jupyter/jupyter.key -out ~/.jupyter/jupyter.crt
Добавляем в конфигурацию:
c.NotebookApp.certfile = '/home/your_username/.jupyter/jupyter.crt'
c.NotebookApp.keyfile = '/home/your_username/.jupyter/jupyter.key'
Сравнение различных подходов
Метод установки | Плюсы | Минусы | Рекомендация |
---|---|---|---|
pip install | Простота, скорость | Конфликты зависимостей | Только в venv |
conda install | Управление зависимостями | Больше места, медленнее | Для data science |
Docker | Изоляция, портабельность | Сложность, оверхед | Для продакшена |
Snap/Flatpak | Простота установки | Ограничения доступа | Не рекомендуется |
Альтернативные решения
Стоит знать о существующих альтернативах:
- JupyterLab — следующее поколение Jupyter с улучшенным интерфейсом
- VS Code — с расширением Python поддерживает .ipynb файлы
- Google Colab — облачное решение с бесплатными GPU
- Apache Zeppelin — больше подходит для big data
- Databricks — коммерческая платформа для команд
Практические кейсы и примеры
Положительные сценарии:
- Прототипирование — быстрая проверка идей и алгоритмов
- Анализ данных — исследование датасетов с визуализацией
- Обучение — интерактивные туториалы и примеры
- Документация — живые примеры кода в документах
Когда лучше не использовать:
- Большие приложения — структура кода становится неуправляемой
- Production код — сложно версионить и тестировать
- Командная разработка — конфликты при слиянии изменений
Оптимизация и полезные расширения
Устанавливаем полезные расширения:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyterlab-git
Для мониторинга ресурсов:
pip install jupyter-resource-usage
Автоматизация и интеграция
Jupyter отлично интегрируется с другими инструментами:
- nbconvert — конвертация notebook в HTML, PDF, слайды
- papermill — параметризация и выполнение notebook
- voila — превращение notebook в веб-приложение
- Git hooks — автоматическая очистка output перед коммитом
Пример автоматизации с papermill:
pip install papermill
papermill input.ipynb output.ipynb -p parameter_name parameter_value
Мониторинг и логирование
Для отслеживания использования ресурсов:
pip install psutil
Настройка логирования в конфигурации:
import logging
c.Application.log_level = logging.INFO
c.NotebookApp.log_format = '[%(name)s]%(highlevel)s %(message)s'
Интересные факты и нестандартные применения
- Netflix использует Jupyter для аналитики в реальном времени
- Kernel switching — можно переключаться между Python, R, Julia в одном notebook
- Magic commands — %%time, %%bash, %%sql для различных задач
- Widgets — интерактивные элементы интерфейса прямо в notebook
Пример использования магических команд:
%%time
# Измерение времени выполнения
import pandas as pd
df = pd.read_csv('large_file.csv')
%%bash
# Выполнение bash команд
ls -la /var/log/
Troubleshooting типичных проблем
- Kernel died — обычно нехватка памяти или бесконечный цикл
- Can’t connect to kernel — проблемы с портами или файрволом
- ModuleNotFoundError — неправильное виртуальное окружение
- Permission denied — проблемы с правами доступа к файлам
Статистика и сравнение производительности
По данным официального репозитория Jupyter:
- Более 10 млн активных пользователей
- Поддержка 40+ языков программирования
- Время запуска kernel: Python ~2-3 сек, R ~5-7 сек
- Потребление памяти: базовый Python kernel ~50MB
Заключение и рекомендации
Jupyter Notebook — мощный инструмент для интерактивной разработки, особенно в области data science. Правильная настройка на Ubuntu 24.04 открывает множество возможностей:
- Для разработки — используй с виртуальными окружениями и версионированием
- Для продакшена — обязательно настрой SSL и аутентификацию
- Для команды — рассмотри JupyterHub для мультипользовательского доступа
- Для автоматизации — интегрируй с papermill и CI/CD пайплайнами
Помни: Jupyter — это не замена IDE, а дополнительный инструмент для исследования данных и прототипирования. Используй его по назначению, и он значительно ускорит твою работу с данными и аналитикой.
При выборе между VPS и выделенным сервером для Jupyter, учитывай объём данных и количество пользователей — для личного использования достаточно небольшого VPS, а для командной работы лучше взять более мощное решение.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.