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:// в вашем браузере, и вы увидите следующий экран.

Введите ваш пароль и нажмите кнопку Войти, чтобы открыть интерфейс 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. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.