Перейти к содержанию

Обзор развертывания Jupyter Notebook на сервере

Предварительные требования

Для корректной работы приложения требуются следующие параметры и условия:

  • Операционная система: Ubuntu.

  • Права доступа: Требуется доступ с правами суперпользователя (root) для установки системных пакетов и настройки сервисов.

  • Порты:

  • Внутренний порт приложения: 8888.

  • Внешний порт (через прокси): 443 (HTTPS).

FDQN итоговой панели на домене hostkey.in

Для доступа к приложению используется следующий шаблон доменного имени:

Параметр Значение
Префикс notebook
Домен hostkey.in
Полный шаблон notebook{Server_ID}.hostkey.in

Структура файлов и каталогов

В системе создаются следующие директории для хранения данных и конфигураций:

  • /opt/data — основное хранилище данных пользователя jupyter.

  • /opt/data/jupyter — директория виртуального окружения Python.

  • /root/nginx — рабочая директория контейнера Nginx с файлом compose.yml.

  • /data/nginx/user_conf.d — пользовательские конфигурации Nginx.

  • /data/nginx/nginx-certbot.env — файл переменных окружения для SSL.

Процесс установки приложения

Установка выполняется в несколько этапов:

  1. Подготовка системы: Создается системный пользователь и группа jupyter (UID/GID 2841).

  2. Установка зависимостей: С помощью пакетного менеджера apt устанавливаются python3, python3-pip, jupyter, и python3-virtualenv.

  3. Настройка окружения Python:

  4. Создается виртуальное окружение в /opt/data/jupyter.

  5. Внутри виртуального окружения устанавливаются пакеты: notebook, voila, virtualenv и jupyter-server.

  6. Конфигурация Jupyter:

  7. Генерируется стандартный файл конфигурации.

  8. В настройки вносится изменение для разрешения внешних подключений (c.ServerApp.allow_origin = '*').

  9. Устанавливается пароль доступа для пользователя.

  10. Настройка сервиса: Создается системный юнит jupyter-notebook.service для автоматического запуска приложения при загрузке системы.

  11. Развертывание прокси-сервера: Настраивается контейнер Nginx с поддержкой SSL через Certbot.

Права доступа и безопасность

  • Для работы с данными используется выделенный системный пользователь jupyter.

  • Директория /opt/data имеет права 0777, что обеспечивает доступ для процесса Jupyter.

  • Конфигурационные файлы Nginx в директории /root/nginx имеют права доступа 0644.

Базы данных

В данной конфигурации внешняя база данных не используется; данные приложения хранятся локально в файловой системе сервера.

Контейнеры Docker и их запуск

Для обеспечения безопасного доступа по HTTPS используется один основной контейнер:

Nginx с поддержкой SSL (Certbot)

  • Образ: jonasal/nginx-certbot:latest

  • Порты: Используется режим host для прямого управления сетевым стеком.

  • Тома (volumes):

  • nginx_secrets:/etc/letsencrypt — хранение SSL-сертификатов.

  • /data/nginx/user_conf.d:/etc/nginx/user_conf.d — пользовательские настройки проксирования.

  • /home:/home — монтирование домашних директорий пользователей.

  • Переменные окружения: CERTBOT_EMAIL=hkadm@hostkey.com.

  • Политика перезапуска: unless-stopped.

Кастомные скрипты и дополнительные настройки

В процессе развертывания выполняются следующие действия:

  • Генерация пароля для Jupyter Notebook через интерактивный запрос (автоматизированно).

  • Настройка системного сервиса systemd для управления процессом Jupyter.

  • Создание конфигурационного файла /root/.jupyter/jupyter_server_config.json.

Инструкция по обновлению приложения

Для обновления основного приложения необходимо:

  1. Обновить пакеты через менеджер пакетов: apt update && apt upgrade jupyter notebook.

  2. Перезапустить сервис Jupyter: systemctl restart jupyter-notebook.

  3. Если вносятся изменения в конфигурацию прокси, обновите контейнер Nginx: cd /root/nginx && docker compose up -d --force-recreate.

Расположение конфигурационных файлов и данных

Тип файла Путь к файлу
Конфигурация Jupyter /root/.jupyter/jupyter_server_config.json
Данные приложения /opt/data/jupyter/share/jupyter
Файл конфигурации Nginx /data/nginx/user_conf.d/

Доступные порты для подключения

  • 443 (HTTPS) — основной порт для доступа через браузер.

  • 8888 (HTTP) — внутренний порт приложения (доступен внутри сервера).

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×