Обзор развертывания 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.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Создается системный пользователь
jupyter(UID2841) и группаjupyter. -
Установка зависимостей: С помощью пакетного менеджера
aptустанавливаютсяpython3,python3-pip,jupyter, иpython3-virtualenv. -
Настройка окружения Python:
-
Создается директория
/opt/data/jupyter. -
Инициализируется виртуальное окружение с использованием
python3. -
Внутри виртуального окружения устанавливаются пакеты:
jupyterlab,jupyter-core,voilaиjupyter-server. -
Конфигурация Jupyter Lab:
-
Генерируется стандартный конфигурационный файл.
-
В настройки вносится изменение для разрешения внешних подключений (
c.ServerApp.allow_origin = '*'). -
Устанавливается пароль доступа для авторизации.
-
Настройка системной службы: Создается и активируется служба
systemdдля обеспечения автоматического запуска приложения при загрузке сервера. -
Развертывание прокси-сервера: Настраивается контейнер 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) необходимо:
-
Обновить системные пакеты через
apt upgrade. -
Если требуется обновление компонентов внутри виртуального окружения, выполнить команду
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