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

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

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

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

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

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

  • Порты:

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

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

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

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

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

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

Основные директории, используемые в системе:

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

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

  • /root/nginx — конфигурационные файлы прокси-сервера Nginx.

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

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

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

Развертывание выполняется в несколько этапов:

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

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

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

  4. Создается директория /opt/data/jupyter.

  5. Инициализируется виртуальное окружение с использованием python3.

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

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

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

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

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

  11. Настройка системной службы: Создается и активируется служба systemd для обеспечения автоматического запуска приложения при загрузке сервера.

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

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

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

  • Директория /opt/data имеет права доступа 0777.

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

  • Доступ к приложению защищен паролем, установленным на этапе инсталляции.

Базы данных

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

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

Для обеспечения работы веб-интерфейса через защищенное соединение используется контейнер:

Параметр Значение
Имя образа jonasal/nginx-certbot:latest
Сетевой режим host
Тома (volumes) nginx_secrets:/etc/letsencrypt
/data/nginx/user_conf.d:/etc/nginx/user_conf.d
/home:/home
Переменные окружения CERTBOT_EMAIL=hkadm@hostkey.com
Политика перезапуска unless-stopped

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

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

  • Генерация пароля: Автоматическая установка пароля для Jupyter Lab через команду /opt/data/jupyter/bin/jupyter lab password.

  • Настройка конфигурации сервера: Редактирование файла jupyter_lab_config.py для обеспечения возможности удаленного доступа.

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

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

  1. Обновить системные пакеты через apt upgrade.

  2. Если требуется обновление компонентов внутри виртуального окружения, выполнить команду pip install --upgrade <название_пакета> внутри директории /opt/data/jupyter/bin/.

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

  • Конфигурация Jupyter: /root/.jupyter/jupyter_server_config.json

  • Данные пользователя: /opt/data/jupyter/share/jupyter

  • Конфигурация Nginx: /data/nginx/user_conf.d

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

  • 443 (HTTPS) — основной порт через прокси-сервер.

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

Запуск, остановка приложения

Управление приложением осуществляется через системную службу:

  • Запуск: systemctl start jupyterlab

  • Остановка: systemctl stop jupyterlab

  • Статус: systemctl status jupyterlab

  • Перезагрузка: systemctl restart jupyterlab

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