UbuntuにJupyter Notebookをインストールしてリモートアクセスする方法

開発環境

「Ubuntu に Jupyter Notebook を入れたい。できれば手元のノートPCではなく、借りているVPSやサーバー上で動かして、ブラウザからリモートで触りたい」——そんな方に向けた記事です。

結論から言うと、Ubuntu 24.04 LTS では pip3 install notebook をいきなり実行すると externally-managed-environment エラーで止まります。正しい流れは python3 -m venv で仮想環境を作り、その中に pip install してから、トークンかパスワードを設定して起動するという手順です。

本記事では、実際に Docker 上の ubuntu:24.04 で Jupyter を最後までインストールし、ブラウザでアクセスした画面まで Playwright で撮影した実測データだけを載せています。入るバージョン・デフォルト設定値・パスワードハッシュの形式まで、すべて本物の実行結果です。

この記事のポイント

  • Ubuntu 24.04 では pip3 install notebook の直接実行は NG(externally-managed-environment)→ python3 -m venv が必須
  • 2026年6月時点で入るのは notebook 7.5.7 / jupyterlab 4.5.8。昔のクラシックNotebookではなく Notebook 7 系で、/lab にアクセスすれば JupyterLab も使える
  • Jupyter は初期設定だと ServerApp.ip = 'localhost' のため外部から繋がりません。これが「ローカルでは動くのにリモートで開けない」の正体
  • リモートアクセスは「SSHポートフォワーディングが最も安全」。ssh -N -L 8888:localhost:8888 ユーザー@VPSのIP の1行でOK
  • 外部公開する場合は jupyter server password でパスワード(argon2id ハッシュ)を必ず設定する

目次

  1. 前提環境とバージョン確認
  2. Jupyter のインストール手順
  3. 起動して画面を確認する
  4. リモートアクセスの3つの方法
  5. 最も安全なSSHトンネル方式
  6. パスワードを設定して公開する
  7. よくあるエラーと解決策
  8. まとめ

前提環境とバージョン確認

本記事の検証は、Docker 公式イメージ ubuntu:24.04(Noble)と ubuntu:22.04(Jammy)を使って実行しました。VPS や WSL の Ubuntu でも同じ手順がそのまま使えます。まず押さえておきたいのが、Ubuntu のバージョンによって pip install の挙動が変わるという点です。

実際に両方のコンテナで python3 と pip を入れて挙動を比べたのが次の図です。

Ubuntu 22.04 vs 24.04 の pip install 挙動の実測比較
Ubuntu 22.04 vs 24.04 の pip install 挙動の実測比較

Ubuntu 24.04 では Python 3.12.3 / pip 24.0 が入りますが、PEP 668(外部管理環境)という仕組みが有効になっていて、システムのPython環境へ直接 pip install しようとすると error: externally-managed-environment で止まります。一方 Ubuntu 22.04(Python 3.10.12 / pip 22.0.2)にはこの制約がなく、そのまま通ってしまいます。

注意

「22.04なら直接 pip install できるから楽じゃん」と思うかもしれませんが、システムPythonを汚すとaptで入れた他のツールと衝突しやすくなります。バージョンに関係なく venv を使うのが正解です。本記事も venv 前提で進めます。

Jupyter のインストール手順

順番はシンプルです。① pip と venv を apt で入れる → ② 仮想環境を作る → ③ その中で Jupyter を pip install する、の3ステップです。

手順1:pip と venv を入れる

ubuntu@linuxlab: ~
$ sudo apt update $ sudo apt install -y python3-pip python3-venv Setting up python3-pip (24.0+dfsg-1ubuntu1.3) … Setting up python3-venv (3.12.3-0ubuntu2.1) …

手順2:仮想環境を作って有効化する

ホームディレクトリに jupyter という名前の仮想環境を作ります。名前は何でも構いません。

ubuntu@linuxlab: ~
$ python3 -m venv ~/jupyter $ source ~/jupyter/bin/activate (jupyter) $ # プロンプトの先頭に (jupyter) が付けば成功です

手順3:Jupyter を pip install する

有効化した venv の中で pip install notebook jupyterlab を実行します。実際にこのコマンドを Ubuntu 24.04 で最後まで走らせた実ログが次の図です。

Ubuntu 24.04 に venv + pip で Jupyter を実インストールしたログ
Ubuntu 24.04 に venv + pip で Jupyter を実インストールしたログ

ここで知っておきたいのが、notebook パッケージを入れると、依存として jupyterlab・jupyter-server・ipykernel まで一式そろうという点です。実測で入った各コンポーネントのバージョンをまとめると次のようになります。

pip install で実際に入った Jupyter コンポーネントの版
pip install で実際に入った Jupyter コンポーネントの版

注目すべきは notebook 7.5.7 という点です。昔の記事に出てくる「クラシックNotebook(6系)」とはUIが別物で、現在の notebook パッケージは内部的に JupyterLab の技術で作り直された Notebook 7 系になっています。そのため jupyter notebook で起動しても、/lab にアクセスすれば JupyterLab のUIがそのまま使えます。venv 全体の容量は実測で 303MB でした。

著者アイコン
著者アイコン

古い解説記事を見ながら作業すると「クラシックNotebookが出てこない!」と戸惑いがちですが、それは仕様変更のせいです。2026年の今は Notebook 7 が標準。新しいUIで合っているので安心してください。

起動して画面を確認する

インストールできたら、まずはローカルで起動して動作を確認します。venv を有効化した状態で jupyter notebook と打つだけです。

ubuntu@linuxlab: ~
(jupyter) $ jupyter notebook –no-browser [I] Serving notebooks from local directory: /home/ubuntu [I] Jupyter Server 2.19.0 is running at: [I] http://localhost:8888/tree?token=52b3a25db133f95d3eeb337ed25503ce…

起動すると、URLの末尾に ?token=... という長い文字列が付いています。これが認証用のトークンです。ブラウザでこのURLにアクセスすると、まずトークン入力画面が出ます。実際にアクセスして撮影したのが次の画面です。

Jupyter のトークン/パスワード入力画面(ログイン画面)
Jupyter のトークン/パスワード入力画面(ログイン画面)

「Token authentication is enabled」と書かれている通り、Jupyter は初期状態でトークン認証が有効になっています。トークンを入力するか、最初から ?token=... 付きのURLを開けばログインできます。ログイン後はファイルブラウザ(ホーム画面)が表示されます。

Jupyter のファイルブラウザ(ホーム画面)
Jupyter のファイルブラウザ(ホーム画面)

ノートブックファイル(.ipynb)を開くと、おなじみのセル形式のエディタになります。実際に Ubuntu 24.04 上で Python のコードを実行した画面がこちらです。sys.version がしっかり 3.12.3 を返し、計算結果も表示されています。

実行済みノートブック(出力付き)
実行済みノートブック(出力付き)

画面右上の「JupyterLab」リンク、またはURLを /lab に変えると、より高機能な JupyterLab のインターフェースに切り替わります。複数ノートブックをタブで開いたり、ターミナルを内蔵で使えたりするのが特徴です。

JupyterLab のインターフェース(ランチャー画面)
JupyterLab のインターフェース(ランチャー画面)

リモートアクセスの3つの方法

ここからが本題です。VPS上の Jupyter にブラウザから繋ぎたいのに、IPアドレスを打っても繋がらない——これは Jupyter のデフォルト設定がローカル限定だからです。実際に jupyter server --generate-config で生成される設定ファイルの初期値を確認すると、その理由がはっきり分かります。

Jupyter のデフォルト設定値(なぜリモートから入れないか)
Jupyter のデフォルト設定値(なぜリモートから入れないか)

ポイントは c.ServerApp.ip = 'localhost'c.ServerApp.allow_remote_access = False です。つまり Jupyter は「自分自身(同じマシン内)からのアクセスしか受け付けない」状態で起動します。VPSの外から繋ぐには、この壁を越える必要があります。方法は大きく3つです。

方法 やること 安全性 難易度
SSHトンネル ssh -L でポート転送。Jupyterは localhost のまま ★★★★★(暗号化+外部非公開)
IP全開放+パスワード --ip=0.0.0.0 で公開しパスワードを設定 ★★★☆☆(HTTPSなしだと弱い)
リバースプロキシ Nginx+Let’s Encrypt でHTTPS化して公開 ★★★★☆(設定が正しければ高い)

初学者の方には、結論として SSHトンネル一択をおすすめします。Jupyter自体は localhost のまま動かせるので外部に何も晒さず、通信もSSHで暗号化されるからです。順に見ていきます。

最も安全なSSHトンネル方式

考え方はシンプルです。VPS上では Jupyter を普通に(localhost のまま)起動しておき、手元のPCからSSHで「VPSの8888番ポートを、自分のPCの8888番に繋ぐ」トンネルを掘るだけです。そのトンネル経由でブラウザを開けば、VPS上の Jupyter があたかも手元で動いているかのように使えます。

まずVPS側で(venvを有効化して)Jupyter を起動します。

VPS側 (ubuntu@vps)
(jupyter) $ jupyter notebook –no-browser –port=8888 [I] http://localhost:8888/tree?token=xxxxxxxxxxxx…

次に手元のPC(Mac / Linux / WSL)から、別のターミナルでトンネルを張ります。

手元のPC
$ ssh -N -L 8888:localhost:8888 ubuntu@<VPSのIP> # -N: コマンドを実行せずトンネルだけ張る # -L 8888:localhost:8888: 手元8888 → VPSのlocalhost:8888 へ転送

あとは手元のブラウザで http://localhost:8888/?token=... を開くだけです。VPSの8888番ポートはインターネットに一切公開していないのに、リモートのJupyterが使えます。これがこの方式の強みです。

SSH接続には鍵認証を使うのが安全です。鍵を持っていなければ ssh-keygen で作れます。実際に Ubuntu 24.04(OpenSSH_9.6p1)で ed25519 鍵を生成した実出力がこちらです。

ubuntu@linuxlab: ~
$ ssh-keygen -t ed25519 -C “jupyter-vps” Generating public/private ed25519 key pair. The key fingerprint is: SHA256:/LA2AahtaPsvox+tKaKaJ1NW/c6IfFGGQr01sVM7zW4 jupyter-vps $ ssh -V OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024

パスワードを設定して公開する

「SSHを毎回張るのは面倒。ブラウザで直接アクセスしたい」という場合は、--ip=0.0.0.0 で全インターフェースに公開し、パスワードを設定する方法があります。ただしパスワードなしで 0.0.0.0 公開は絶対NGです。誰でもあなたのサーバーでコードを実行できてしまいます。

パスワードは jupyter server password(または下記のワンライナー)で設定します。実際にハッシュを生成した実出力がこちらです。平文ではなく argon2id 形式でハッシュ化されて保存されるのが分かります。

リモートアクセス用の起動・パスワード設定の実出力
リモートアクセス用の起動・パスワード設定の実出力

注意:HTTPSなしの 0.0.0.0 公開はリスクが高い

パスワードを設定しても、通信が暗号化されていない(http://)状態でインターネットに公開すると、パスワードやコードが盗聴される恐れがあります。どうしても直接公開したいなら、Nginx などでHTTPS化(リバースプロキシ)するか、おとなしくSSHトンネルを使ってください。

本格的にVPSで開発環境を運用したいなら、まずは安定したVPSを選ぶところからです。東京リージョンがあり時間課金で気軽に試せる Vultr あたりが、Jupyter のお試しサーバーには向いています。

よくあるエラーと解決策

① error: externally-managed-environment

Ubuntu 24.04 で pip3 install notebook を直接打つと出ます。原因は PEP 668。解決策は本記事のとおり python3 -m venv で仮想環境を作り、その中でインストールすることです。

② ブラウザで開いても繋がらない(リモート)

デフォルトの ServerApp.ip = 'localhost' が原因です。SSHトンネル方式ならJupyter側の設定変更は不要で、これが一番つまずきにくいです。--ip=0.0.0.0 で公開する場合は、VPSのファイアウォール(ufw やクラウド側のセキュリティグループ)で8888番ポートが開いているかも確認してください。

③ トークンを忘れた/URLが分からない

サーバー側で jupyter server list を実行すると、現在動いているJupyterのURLとトークンが一覧で表示されます。実際の出力は http://<ホスト>:8888/?token=... のような形です。

④ command not found: jupyter

venv を有効化し忘れている可能性が高いです。source ~/jupyter/bin/activate を実行してプロンプトに (jupyter) が付いているか確認してください。

公式のインストール手順は Project Jupyter の公式サイトでも確認できます。記事執筆時点(2026年6月)の公式ページを撮影したものがこちらです。

Project Jupyter 公式のインストール手順ページ
Project Jupyter 公式のインストール手順ページ

まとめ

この記事のまとめ

  • Ubuntu 24.04 では python3 -m venv で仮想環境を作り、その中で pip install notebook jupyterlab する
  • 2026年6月時点で入るのは notebook 7.5.7 / jupyterlab 4.5.8(Notebook 7 系)
  • Jupyter は初期設定だと localhost 限定。リモートで繋がらないのは仕様
  • リモートアクセスは SSHトンネル(ssh -N -L 8888:localhost:8888)が最も安全で簡単
  • 0.0.0.0 で公開するなら argon2id ハッシュのパスワードを必ず設定し、できればHTTPS化する

Jupyter はローカルでも十分使えますが、VPS上で常時動かしておくと、外出先のノートPCやタブレットからでも同じ開発環境にアクセスできて非常に便利です。自分専用のクラウド開発環境を持ちたくなったら、次の記事も参考にしてみてください。

VPS比較 ── 個人開発・学習サーバーに最適なクラウドの選び方

コメント

タイトルとURLをコピーしました