はじめに

クラウドサーバを利用したい場合、GCPのGoogle Compute EngineでVMインスタンスを立ち上げることがありませんか?

そのVMインスタンスでJupyter Notebookを起動したら、どうやってローカルPCのブラウザからそのNotebookを使えるかと私と同じように悩んでいた人がいるかもしれません。

ネットで調べたら、GCPのいろんな設定を変えたり、ソフトウェアをインストールしたりする方法がありそうですが、ちょっと面倒だなと思いました。

今日は一発でできる方法を紹介したいと思います。それが、Google Cloud SDKでポートフォワーディングすることです。

※ポートフォワーディングとは、自らのIPアドレスのTCPやUDPの特定のポート番号への通信を、別のアドレスの特定のポートへ転送することです。

ローカルPCの準備

まず、Google Cloud SDKをインストールしてください。

Google Cloud SDKをインストールできたら、ローカルのターミナル(Windowsならコマンドプロンプト、MacならTerminal)を起動しましょう。

実際にコマンドを打ってみよう

Windowsのコマンドプロンプト、またはMacのTerminalに下記のコマンドを打ってみましょう。

gcloud compute ssh --project=<プロジェクト名> --zone=<ゾーン名> <VMインスタンス名>-- -L <ローカルホストのポート>:<VMインスタンスのNotebookのIPアドレス>:<VMインスタンスのNotebookのポート>

一つの例として、もし下記の設定でしたら

プロジェクト名:my-project

ゾーン名は:asia-northeast1-b

VMインスタンス名は:my-instance

ローカルホストのポート:7777

VMインスタンス上で起動したJupyter NotebookのIPアドレス:127.0.0.1

VMインスタンス上で起動したJupyter Notebookのポート:8888

下記のコマンドを入力してください。

gcloud compute ssh --project=my-project --zone=asia-northeast1-b my-instance -- -L 7777:127.0.0.1:8888

または

gcloud compute ssh --project=my-project --zone=asia-northeast1-b my-instance -- -L 7777:localhost:8888

実行後、Windows 10ならPuttyのウィンドウが自動で出ます。(MacならTerminalのままです。)

Jupyter Notebookのurlのドメインを変更し忘れずに

※Windowsのコマンドプロンプト(またはMacのTerminal)で表示されたJupyter Notebookのドメインを「localhost」にする必要があります。なお、ポート番号を上記で指定した「ローカルホストのポート」にしてください。

例:

http://a2f0372d:8888/?token=dc8f832c97c03ea2411dc43647cb45be71c962a54da1b

http://localhost:7777/?token=dc8f832c97c03ea2411dc43647cb45be71c962a54da1b

このURLをローカルPCのブラウザで開いたら、VMインスタンスで立ち上がったNotebookが表示されます!