Jupyter ノートブックのサーバ(Ubuntu 上)

Ubuntu 24.04 LTSにJupyter Notebookサーバを構築する。APTでのインストール、パスワード設定、設定ファイルでのIP/ポート指定、起動方法を解説する。特にセキュリティリスクの高い設定への注意と、安全なアクセス方法に言及する。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で次のコマンドを実行する。システムのセキュリティと安定性を維持するために定期的に実行することが推奨される。

Ubuntu のインストールは別ページ »で説明

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now

Jupyter ノートブックのサーバ(Ubuntu 上)

  1. インストール
    sudo apt install python3-jupyter*
    sudo apt install jupyter-notebook
    

    Ubuntu 24.04 LTSでは通常 sudo apt install jupyter-notebook コマンド単体でJupyter Notebookとそれに必要なパッケージが適切にインストールされる。

  2. Ubuntu システムで jupyter 用のアカウントを作成し,そのアカウントでログイン

    サーバ用途ではセキュリティのため専用の非特権アカウントを使用することが推奨される。必要であれば sudo adduser jupyteruser のように新しいアカウントを作成し,そのアカウントでログインしてから以降の作業を行う。

  3. パスワードの設定

    JupyterにWebブラウザからログインするためのパスワードを設定する。新しいJupyterのバージョンでは jupyter notebook --generate-password または jupyter server password コマンドの使用が推奨される。これによりパスワードハッシュが生成され,設定ファイルに保存される。

  4. jupyter-notebook --generate-config を実行

    Jupyterの設定ファイルをデフォルトの場所(通常 ~/.jupyter/jupyter_notebook_config.py)に生成する。

  5. ~/.jupyter/jupyter_notebook_config.py の設定

    生成された設定ファイルを編集し、以下の行を追加または変更する。XXXXXXX には先ほど設定または取得したパスワードに関する情報を記載する。

    c.NotebookApp.ip = '*'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port = 8888
    c.NotebookApp.password = u'sha1:XXXXXXX' # または新しいパスワード情報
    

    注意: 新しいバージョンでは設定項目名が c.NotebookApp.* から c.ServerApp.* に変更されている場合がある。

    セキュリティ警告: c.NotebookApp.ip = '*' (または c.ServerApp.ip = '*')はあらゆるネットワークインターフェースからの接続を許可するため,セキュリティリスクが非常に高い。外部に公開する場合は,必ずパスワード認証とSSL/HTTPS暗号化を設定し,より安全なアクセス方法(SSHトンネルなど)を強く推奨する。

  6. Jupyter ノートブックのサーバを起動

    以下のコマンドでJupyterサーバをバックグラウンドで起動する。nohup により端末を閉じても動作し続ける。

    nohup jupyter-notebook &
    

    より安全で管理しやすいsystemdサービスとしての起動も推奨されるが,設定手順は複雑になる。新しいバージョンではデフォルトでトークン認証が有効な場合がある。

  7. メッセージ中のポート番号を確認

    サーバ起動時のメッセージ中に表示されるポート番号を確認する。設定したポートで起動しない場合は,別のポートが使用されている可能性があるため,表示される実際のポート番号を確認する。

    xxx:yyy:zzz:167:8889
    

このポート番号を用いて Web ブラウザから接続する。Webブラウザからは http://[サーバーのIPアドレスまたはホスト名]:[実際のポート番号]/ の形式で接続する。SSL設定時は https:// となる。

外部から接続する場合は,サーバのファイアウォール(例: ufw)でJupyterが使用するポート(デフォルト 8888)を開放する必要がある。カーネル通信用のポート範囲(デフォルト 49152-65535)も必要となる場合がある。

複数ユーザーで使用する場合は,JupyterHubの使用を検討すべきである。