Обзор развертывания JupyterLab на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется операционная система на базе Linux, в частности Ubuntu, с правами root для выполнения скриптов установки и управления системными службами. Необходимы следующие компоненты и настройки:
-
Операционная система: Ubuntu
-
Права доступа: Доступ root обязателен для создания пользователей, управления службами и операций с Docker.
-
Домен:
hostkey.in -
Порты:
-
Внутренний порт приложения:
8888 -
Внешний порт HTTPS:
443
FQDN финальной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
lab<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.
Структура файлов и каталогов¶
Приложение использует следующую структуру каталогов для конфигурации, хранения данных и сертификатов:
-
/opt/data: Корневой каталог для данных Jupyter и виртуальных окружений. -
/opt/data/jupyter: Расположение виртуального окружения Python. -
/root/.jupyter: Каталог, содержащий файлы конфигурации JupyterLab. -
/root/nginx: Каталог, содержащий файлы Docker Compose для прокси-сервера. -
/data/nginx: Каталог для пользовательских конфигураций Nginx и файлов окружения. -
/etc/letsencrypt: Точка монтирования для SSL-сертификатов, управляемых Certbot. -
/home: Домашние каталоги пользователей, смонтированные для контейнера Nginx.
Процесс установки приложения¶
JupyterLab устанавливается с использованием виртуального окружения Python и управляется как служба systemd. Процесс установки включает:
-
Создание системной группы и пользователя с именем
jupyterс UID и GID2841. -
Установка системных пакетов:
python3,python3-pip,jupyterиpython3-virtualenv. -
Создание виртуального окружения в
/opt/data/jupyter. -
Установка следующих пакетов Python внутри виртуального окружения:
-
jupyterlab -
jupyter-core -
voila -
jupyter-server -
Генерация файла конфигурации JupyterLab.
-
Установка параметра
allow_originв значение*в конфигурации. -
Генерация пароля для аутентификации.
-
Установка файла службы systemd в
/usr/lib/systemd/system/jupyterlab.service.
Контейнеры Docker и их развертывание¶
Развертывание включает контейнер Docker для прокси-сервера Nginx и управления SSL. Контейнер развертывается с использованием Docker Compose со следующими спецификациями:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Переменные окружения:
-
CERTBOT_EMAIL:hkadm@hostkey.com -
Тома (Volumes):
-
nginx_secretsотображен на/etc/letsencrypt -
/data/nginx/user_conf.dотображен на/etc/nginx/user_conf.d -
/homeотображен на/home -
Расположение файла Compose:
/root/nginx/compose.yml
Контейнер запускается с помощью команды docker compose up -d, выполненной из каталога /root/nginx.
Прокси-серверы¶
Контейнер Nginx действует как обратный прокси и обрабатывает завершение SSL с использованием Certbot.
-
Образ прокси:
jonasal/nginx-certbot:latest -
Управление SSL: Автоматизировано через Certbot с адресом электронной почты
hkadm@hostkey.com. -
Конфигурация: Пользовательские конфигурации Nginx хранятся в
/data/nginx/user_conf.d. -
Внешний порт:
443(HTTPS) -
Внутренний путь: Пустая строка (
"") -
Внешний путь:
/
Настройки прав доступа¶
Права доступа к файлам и каталогам настроены следующим образом:
-
/opt/data: Владелецjupyter:jupyterс режимом0777. -
/opt/data/jupyter: Владелецjupyter:jupyterс режимом0755. -
/root/nginx: Владелецroot:rootс режимом0644. -
/root/nginx/compose.yml: Владелецroot:rootс режимом0644. -
Системный пользователь
jupyterсоздается с домашним каталогом.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и данные находятся по следующим путям:
-
Конфигурация JupyterLab:
/root/.jupyter/jupyter_lab_config.pyи/root/.jupyter/jupyter_server_config.json. -
Служба Systemd:
/usr/lib/systemd/system/jupyterlab.service. -
Docker Compose:
/root/nginx/compose.yml. -
Окружение Nginx:
/data/nginx/nginx-certbot.env. -
Данные ноутбуков:
/opt/data/jupyter/share/jupyter.
Доступные порты для подключения¶
Для приложения настроены следующие порты:
-
Внутренний порт:
8888(Используется службой JupyterLab во внутренней сети). -
Внешний порт:
443(HTTPS-трафик, маршрутизируемый через прокси Nginx).
Запуск, остановка и обновление¶
Служба JupyterLab управляется с помощью systemctl. Для управления службой используются следующие команды:
-
Запуск службы:
-
Остановка службы:
-
Включение службы при загрузке:
-
Перезагрузка демона systemd и перезапуск:
-
Проверка статуса службы:
Для контейнера прокси Nginx используйте следующие команды из каталога /root/nginx:
-
Запуск/Перезапуск контейнера:
-
Остановка контейнера: