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

Обзор развертывания 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. Процесс установки включает:

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

  2. Установка системных пакетов: python3, python3-pip, jupyter и python3-virtualenv.

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

  4. Установка следующих пакетов Python внутри виртуального окружения:

  5. jupyterlab

  6. jupyter-core

  7. voila

  8. jupyter-server

  9. Генерация файла конфигурации JupyterLab.

  10. Установка параметра allow_origin в значение * в конфигурации.

  11. Генерация пароля для аутентификации.

  12. Установка файла службы 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. Для управления службой используются следующие команды:

  • Запуск службы:

    systemctl start jupyterlab
    

  • Остановка службы:

    systemctl stop jupyterlab
    

  • Включение службы при загрузке:

    systemctl enable jupyterlab
    

  • Перезагрузка демона systemd и перезапуск:

    systemctl daemon-reload
    systemctl restart jupyterlab
    

  • Проверка статуса службы:

    systemctl status jupyterlab
    

Для контейнера прокси Nginx используйте следующие команды из каталога /root/nginx:

  • Запуск/Перезапуск контейнера:

    docker compose up -d
    

  • Остановка контейнера:

    docker compose down
    

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