JupyterLab · 7 min read · Oct 21, 2025

Как установить и настроить окружение JupyterLab на Rocky Linux 9

JupyterLab — это среда разработки следующего поколения на основе веб-технологий для проекта Jupyter. Проект Jupyter был разработан с целью создания открытого программного обеспечения, открытых стандартов и сервисов для интерактивных вычислений на нескольких языках программирования. JupyterLab предлагает гибкий интерфейс, который позволяет разработчикам работать с документами и действиями, такими как блокноты Jupyter, текстовые редакторы, терминалы и пользовательские компоненты, гибким, интегрированным и расширяемым образом. JupyterLab является следующим поколением Jupyter Notebook и должен в конечном итоге заменить его. Он поддерживает более 40 языков программирования, включая R, Python, Scala и Julia.

Этот учебник научит вас, как установить и настроить JupyterLab на сервере Rocky Linux 9.

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

  • Сервер с установленным Rocky Linux 9.
  • Пользователь без прав root с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN), указывающее на ваш сервер. Для наших целей мы будем использовать jupyterlab.example.com в качестве доменного имени.
  • SELinux отключен.
  • Убедитесь, что все обновлено. $ sudo dnf update
  • Установите базовые утилиты. Некоторые из них могут быть уже установлены. $ sudo dnf install wget curl nano unzip yum-utils -y

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. Rocky Linux использует брандмауэр Firewalld. Проверьте статус брандмауэра.

$ sudo firewall-cmd --state
running

Брандмауэр работает с различными зонами, и публичная зона является той, которую мы будем использовать по умолчанию. Перечислите все службы и порты, активные на брандмауэре.

$ sudo firewall-cmd --permanent --list-services

Он должен показать следующий вывод.

cockpit dhcpv6-client ssh

Wiki.js нуждается в портах HTTP и HTTPS для функционирования. Откройте их.

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

Перезагрузите брандмауэр, чтобы применить изменения.

$ sudo firewall-cmd --reload

Шаг 2 - Установка Nginx

Rocky Linux 9 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.

Создайте и откройте файл /etc/yum.repos.d/nginx.repo для создания официального репозитория Nginx.

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте следующий код в него.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Установите сервер Nginx.

$ sudo dnf install nginx -y

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.1

Включите и запустите сервер Nginx.

$ sudo systemctl enable nginx --now

Проверьте статус сервера.

$ sudo systemctl status nginx
? nginx.service - nginx - высокопроизводительный веб-сервер
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-12-13 06:07:05 UTC; 31s ago
       Docs: http://nginx.org/en/docs/
    Process: 146475 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 146476 (nginx)
      Tasks: 2 (limit: 5911)
     Memory: 1.9M
        CPU: 15ms
     CGroup: /system.slice/nginx.service
             ??146476 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??146477 "nginx: worker process"

Шаг 3 - Установка JupyterLab

Давайте сначала проверим версию Python.

$ python -V
Python 3.9.14

Установите менеджер пакетов PIP.

$ sudo dnf install python3-pip

Создайте директорию для JupyterLab.

$ mkdir jupyterlab

Перейдите в только что созданную директорию.

$ cd ~/jupyterlab

Настройте виртуальное окружение под названием jupyterlab_env.

$ python3 -m venv --system-site-packages jupyterlab_env

Активируйте окружение.

$ source jupyterlab_env/bin/activate

Обновите менеджер пакетов Pip.

(jupyterlab_env) $ pip install --upgrade pip

Установите JupyterLab.

(jupyterlab_env) $ pip install jupyterlab

Шаг 4 - Настройка JupyterLab

По умолчанию JupyterLab генерирует новый токен каждый раз, когда вы его запускаете, чтобы предоставить доступ к интерфейсу. Давайте заменим его на аутентификацию по паролю.

Сгенерируйте хэш пароля. Замените YOUR_PASSWORD на надежный пароль по вашему выбору.

(jupyterlab_env) $ python3 -c "from jupyter_server.auth import passwd; print(passwd('YOUR_PASSWORD'))"

Вышеуказанная команда сгенерирует длинный хэш пароля. Она использует функцию хеширования пароля Argon2. Запишите хэш.

Создайте файл конфигурации JupyterLab.

(jupyterlab_env) $ jupyter lab --generate-config

Вышеуказанная команда создаст файл конфигурации с значениями по умолчанию и сохранит его в директории ~/.jupyter.

Откройте файл для редактирования.

(jupyterlab_env) $ nano ~/.jupyter/jupyter_lab_config.py

Найдите следующие переменные, раскомментируйте их и измените их значение следующим образом. Замените PASSWORD_HASH на хэш, сгенерированный выше.

c.ServerApp.allow_remote_access = True

c.ServerApp.password = 'PASSWORD_HASH'

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте порт 8888 в брандмауэре.

$ sudo firewall-cmd --add-port=8888/tcp --permanent
$ sudo firewall-cmd --reload

Запустите сервер JupyterLab. Параметр --ip 0.0.0.0 позволяет ему слушать любой IP-адрес, а не только localhost.

$ jupyter lab --ip 0.0.0.0

Вышеуказанная команда запускает сервер JupyterLab на порту по умолчанию 8888, который мы открыли. Запустите URL http://:8888/ в вашем браузере, и вы увидите следующий экран.

Экран входа в JupyterLab

Введите ваш пароль и нажмите кнопку Войти, чтобы открыть интерфейс JupyterLab.

Домашняя страница JupyterLab

Теперь, когда доступ подтвержден, нажмите Ctrl + C, чтобы остановить сервер, и введите y, когда будет предложено остановить.

Шаг 5 - Создание файла службы JupyterLab

Выйдите из виртуального окружения.

(jupyterlab_env) $ deactivate

Создайте новый файл службы для JupyterLab.

$ sudo nano /lib/systemd/system/jupyterlab.service

Вставьте следующий код в него.

[Unit]
Description=JupyterLab Server

[Service]
User=USER
Group=USER
Type=simple
WorkingDirectory=/home/USER/jupyterlab
ExecStart=/home/USER/jupyterlab/jupyterlab_env/bin/jupyter-lab --config=/home/USER/.jupyter/jupyter_lab_config.py
StandardOutput=null
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Замените USER на текущего вошедшего пользователя вашей системы.

Инициализируйте службу JupyterLab.

$ sudo systemctl daemon-reload

Включите и запустите службу JupyterLab.

$ sudo systemctl enable jupyterlab --now

Проверьте статус службы.

$ sudo systemctl status jupyterlab
? jupyterlab.service - JupyterLab Server
     Loaded: loaded (/usr/lib/systemd/system/jupyterlab.service; disabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-12-13 11:45:26 UTC; 5s ago
   Main PID: 151675 (jupyter-lab)
      Tasks: 1 (limit: 5911)
     Memory: 59.0M
        CPU: 1.943s
     CGroup: /system.slice/jupyterlab.service
             ??151675 /home/navjot/jupyterlab/jupyterlab_env/bin/python3 /home/navjot/jupyterlab/jupyterlab_env/bin/jupyter-lab --config=/home/navjot/.jupyter/jupyter_lab_config.py

Dec 13 11:45:26 jupyter.example.com systemd[1]: Started JupyterLab Server.

Шаг 6 - Установка SSL

Перед тем как продолжить, нам нужно установить инструмент Certbot и SSL-сертификат для нашего домена.

Чтобы установить Certbot, мы будем использовать установщик пакетов Snapd. Snapd всегда содержит последнюю стабильную версию Certbot, и вы должны использовать именно ее.

Инструмент Snapd требует репозиторий Epel для работы.

$ sudo dnf install epel-release -y

Мы будем использовать Snapd для установки Certbot. Установите Snapd.

$ sudo dnf install snapd -y

Включите и запустите службу Snap.

$ sudo systemctl enable snapd.socket --now

Создайте необходимые ссылки для работы Snapd.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Убедитесь, что ваша версия snapd актуальна.

$ sudo snap install core 
$ sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку в директории /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Сгенерируйте SSL-сертификат.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d jupyterlab.example.com

Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/jupyterlab.example.com на вашем сервере.

Сгенерируйте сертификат Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проведите пробный запуск процесса, чтобы проверить, работает ли автоматическое обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, значит, все готово. Ваш сертификат будет автоматически обновляться.

Шаг 7 - Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/jupyterlab.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/jupyterlab.conf

Вставьте следующий код в файл jupyterlab.conf. Замените все вхождения jupyterlab.example.com на ваш домен.

## принудить HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name jupyterlab.example.com;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name jupyterlab.example.com;

  access_log /var/log/nginx/jupyterlab.access.log;
  error_log /var/log/nginx/jupyterlab.error.log;
  client_max_body_size 20m;

  http2_push_preload on; # Включить HTTP/2 Server Push

  ssl_certificate     /etc/letsencrypt/live/jupyterlab.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/jupyterlab.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/jupyterlab.example.com/chain.pem;
  ssl_session_timeout 1d;

  # Включить версии TLS (TLSv1.3 требуется для предстоящего HTTP/3 QUIC).
  ssl_protocols TLSv1.2 TLSv1.3;

  # Включить 0-RTT для TLSv1.3. Используйте $ssl_early_data при обратном проксировании, чтобы
  # предотвратить атаки повторного воспроизведения.
  #
  # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
  ssl_early_data on;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets off;

  # OCSP Stapling ---
  # извлекать OCSP записи из URL в ssl_certificate и кэшировать их
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  add_header X-Early-Data $tls1_3_early_data;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-Scheme $scheme;
    proxy_buffering off;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8888;
  }
}

# Этот блок полезен для отладки TLS v1.3. Пожалуйста, не стесняйтесь удалять это
# и использовать переменную `$ssl_early_data`, предоставленную NGINX, напрямую, если вы
# хотите это сделать.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

Вышеуказанная конфигурация перенаправит все HTTP-запросы на HTTPS и будет служить прокси для службы JupyterLab, чтобы обслуживать ее через ваш домен.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте вашу конфигурацию Nginx.

$ sudo nginx -t

Если вы не видите ошибок, значит, вы готовы. Перезагрузите сервер Nginx.

$ sudo systemctl reload nginx

Теперь вы можете получить доступ к JupyterLab, посетив URL https://jupyterlab.example.com в вашем браузере.

Заключение

Это завершает наш учебник по установке и настройке JupyterLab на сервере Rocky Linux 9 и его обслуживанию с помощью прокси-сервера Nginx. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.