はじめに
クラウドサーバを利用したい場合、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が表示されます!