JupyterLab · 3 min read · Oct 21, 2025
Rocky Linux 9にJupyterLab環境をインストールして構成する方法

JupyterLabは、Project Jupyterの次世代のWebベースの開発環境です。Project Jupyterは、複数のプログラミング言語にわたるインタラクティブコンピューティングのためのオープンソース、オープンスタンダード、およびサービスを開発することを目指して開発されました。JupyterLabは、開発者がJupyterノートブック、テキストエディタ、ターミナル、カスタムコンポーネントなどのドキュメントやアクティビティを柔軟で統合的かつ拡張可能な方法で扱うことを可能にする柔軟なインターフェースを提供します。JupyterLabはJupyter Notebookの次世代版であり、最終的にはそれを置き換えることになっています。R、Python、Scala、Juliaを含む40以上のプログラミング言語をサポートしています。
このチュートリアルでは、Rocky Linux 9サーバーにJupyterLabをインストールして構成する方法を学びます。
前提条件
- Rocky Linux 9を実行しているサーバー。
- sudo権限を持つ非rootユーザー。
- サーバーを指す完全修飾ドメイン名(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リポジトリをダウンロードする必要があります。
公式のNginxリポジトリを作成するために、/etc/yum.repos.d/nginx.repoファイルを作成して開きます。
$ 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 - high performance web server
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パラメータは、localhostだけでなく任意のIPアドレスでリッスンできるようにします。
$ jupyter lab --ip 0.0.0.0
上記のコマンドは、開いたデフォルトのポート8888でJupyterLabサーバーを起動します。ブラウザでhttp://のURLを起動すると、次の画面が表示されます。

パスワードを入力し、ログインボタンをクリックして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グループ証明書を生成します。
$ 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サーバープッシュを有効にする
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;
# TLSv1.3の0-RTTを有効にする。リバースプロキシを使用する場合は$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スタプリング ---
# ssl_certificateのURLからOCSPレコードを取得し、キャッシュする
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のデバッグに役立ちます。必要に応じてこれを削除し、
# NGINXが直接公開する$ssl_early_data変数を使用してください。
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
ブラウザでhttps://jupyterlab.example.comのURLにアクセスして、JupyterLabにアクセスできます。
結論
これで、Rocky Linux 9サーバーにJupyterLabをインストールして構成し、Nginxプロキシサーバーを使用して提供する方法に関するチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。