Обзор развертывания Jupyter Lab на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя (root) для выполнения операций установки и настройки.
Необходимые сетевые требования: - Открытый доступ к порту, на котором будет работать веб-интерфейс Jupyter Lab (по умолчанию 8888, если не изменено в конфигурации). - Доступ к портам 80 и 443 для работы прокси-сервера Nginx и получения SSL-сертификатов через Certbot.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях:
/opt/data— основная директория для хранения данных пользователя и виртуального окружения./opt/data/jupyter— директория виртуального окружения Python для Jupyter Lab./root/.jupyter— директория конфигурационных файлов Jupyter./root/nginx— директория для конфигурации Docker Compose прокси-сервера./data/nginx— внешняя директория для хранения конфигураций Nginx и переменных окружения (указана в файле compose.yml)./home— директория домашних каталогов пользователей, монтируемая в контейнер Nginx.
Процесс установки приложения¶
Установка выполняется в два этапа: настройка окружения для Jupyter Lab и развертывание прокси-сервера в контейнере Docker.
Установка компонентов Jupyter Lab¶
- Создается системная группа
jupyterс идентификатором 2841. - Создается системный пользователь
jupyterс идентификатором 2841, принадлежащий к группеjupyter. - Устанавливаются пакеты системы:
python3,python3-pip,jupyter,python3-virtualenv. - Создается виртуальное окружение в директории
/opt/data/jupyterс использованием интерпретатора Python 3. - Внутри виртуального окружения устанавливаются пакеты:
jupyterlab,jupyter-core,voila,jupyter-server. - Генерируется конфигурационный файл Jupyter Lab.
- В конфигурационном файле
/root/.jupyter/jupyter_lab_config.pyнастраивается параметрc.ServerApp.allow_originсо значением*. - Генерируется пароль для доступа к веб-интерфейсу.
Развертывание прокси-сервера¶
- Устанавливается Docker.
- Создается директория
/root/nginx. - Генерируется файл
compose.ymlв директории/root/nginxна основе шаблона. - Запускается контейнер Nginx с Certbot через команду
docker compose up -dв директории/root/nginx.
Контейнеры Docker и их запуск¶
Прокси-сервер развертывается с использованием Docker Compose. Конфигурация описана в файле /root/nginx/compose.yml.
Используемый образ: jonasal/nginx-certbot:latest.
Параметры запуска контейнера: - Политика перезапуска: unless-stopped. - Режим сети: host. - Переменная окружения CERTBOT_EMAIL установлена в значение hkadm@hostkey.com. - Файл переменных окружения: /data/nginx/nginx-certbot.env.
Монтируемые тома: - nginx_secrets (внешний том) монтируется в /etc/letsencrypt для хранения SSL-сертификатов. - /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для пользовательских конфигураций Nginx. - /home монтируется в /home внутри контейнера.
Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с поддержкой автоматического получения и обновления SSL-сертификатов через Certbot.
Конфигурация прокси-сервера включает: - Автоматическое управление сертификатами Let's Encrypt. - Поддержку пользовательских конфигураций через монтирование директории /data/nginx/user_conf.d. - Доступ к домашним директориям пользователей через монтирование /home.
Настройки прав¶
Права доступа к файлам и директориям настроены следующим образом:
- Директория
/opt/dataимеет владельцаjupyter, группуjupyterи права доступа0777. - Директория
/opt/data/jupyterимеет владельцаjupyter, группуjupyterи права доступа0755. - Директория
/root/nginxимеет владельцаroot, группуrootи права доступа0644. - Файл конфигурации Docker Compose
/root/nginx/compose.ymlимеет владельцаroot, группуrootи права доступа0644.
Запуск, остановка и обновление¶
Управление сервисом Jupyter Lab осуществляется через системный демон systemd.
Файл сервиса расположен по пути: /usr/lib/systemd/system/jupyterlab.service.
Параметры сервиса: - Тип сервиса: simple. - Рабочая директория: /opt/data. - Команда запуска: /opt/data/jupyter/bin/jupyter-lab --config=/root/.jupyter/jupyter_server_config.json --allow-root --ip=0.0.0.0 --no-browser --notebook-dir=/opt/data/jupyter/share/jupyter. - Пользователь запуска: root. - Группа запуска: root. - Политика перезапуска: always с интервалом 10 секунд. - Сервис автоматически запускается при загрузке системы.
Команды управления сервисом: - Запуск: systemctl start jupyterlab - Остановка: systemctl stop jupyterlab - Перезапуск: systemctl restart jupyterlab - Проверка статуса: systemctl status jupyterlab
Для управления контейнером прокси-сервера используются команды Docker Compose в директории /root/nginx: - Запуск: docker compose up -d - Остановка: docker compose down - Перезапуск: docker compose restart