ローカルPCのWebサーバを外部公開するngrok(Windows 10)

ローカルPCのWebサーバを外部公開するngrok(Windows 10)

ngrok(エングロック)を使うことで、ローカル(localhost)で動いているアプリケーションを、インターネットからアクセスできるように外部公開することができます。

ローカル(localhost)で動いているアプリとは、例えば以下の記事で作成したPythonのBIダッシュボードなどです。

今回は、ローカル(localhost)で動いているPythonのBIダッシュボードを例に、ngrokを使い公開URLを発行し他の人でも使えるようにする方法を説明していきます。

ダウンロード

先ずは、以下からアカウント登録します。

ngrok Sign Up
https://dashboard.ngrok.com/signup

GoogleGithubのアカウントでもOKです。

アカウントを作成するとngrokダッシュボードにログインできるようになります。

ngrokのダッシュボードからngrokをダウンロードできます。

もしくは、以下のURLから直接ダウンロードできます。

ダウンロードした圧縮ファイルを解凍すると、実行ファイル(ngrok.exe)が登場します。

Mac OS版、Linux版、Docker版などありますが、ここではWindows版で説明を進めて行きます。

 

ngrokの起動

利用するときは、実行ファイル(ngrok.exe)をダブリクリックし実行します。

以下のような画面(コマンドプロンプト)が出てきます。

 

BASIC認証の設定

公開したURLアクセスするとき、ユーザ名パスワードを求めることができます。そのための設定になります。

ngrokのダッシュボードに、Authtokenの情報があります。

Authtokenの情報とは、以下のような意味不明な文字列です。人によって異なります。

534F7dinGaptjfq2Y8Wz24r2EkjlUAkYenNZ4N_24r2Ek53th

コマンドプロンプトに、以下のようなコードを入力します。

ngrok authtoken 534F7dinGaptjfq2Y8Wz24r2EkjlUAkYenNZ4N_24r2Ek53th

 

ローカル(localhost)で動かすアプリを起動

ローカル(localhost)で動かすアプリを起動します。

アプリが起動していれば、例えば、以下のようなURL(例では、ポート番号が9000)でブラウザから開くことができるはずです。

http://localhost:9000/

今回は、以下の記事のローカル(localhost)で動いているPythonのBIダッシュボードを例にしています。

公開URLの発行

コマンドプロンプトに以下のコードを入力します。

ngrok http 9000

 

そうすると、次のような画面(コマンドプロンプト)が出てきます。

 

Forwardingに書いてあるURLが公開URLです。この公開URLは、実行のたびに変わります。固定URLにする場合には、有料版のngrokを利用する必要があります。

ngrok停止したい場合は「Ctrl + C」で止めます。

 

公開URLをブラウザに入力し実行すると、以下のような画面になります。

 

BASIC認証あり公開URLの発行

公開URLアクセスするときに、ユーザ名パスワードを求める場合には、コマンドプロンプトに以下のコードを入力します。usernamepasswordは、好きなユーザー名とパスワードを設定してください。

ngrok http -auth="username:password" 9000

 

次のような画面(コマンドプロンプト)が出てきます。

Forwardingに書いてあるURLが公開URLです。この公開URLは、実行のたびに変わります。固定URLにする場合には、有料版のngrokを利用する必要があります。

ngrok停止したい場合は「Ctrl + C」で止めます。

 

公開URLをブラウザに入力し実行すると、以下のような画面になります。

 

ユーザ名パスワードを入力すると、ローカル(localhost)で動いているアプリにアクセスできます。

 

まとめ

今回は、ローカル(localhost)で動いているPythonのBIダッシュボードを例に、ngrokを使い公開URLを発行し他の人でも使えるようにする方法を説明しました。

今回の例で利用した、ローカル(localhost)で動いているPythonのBIダッシュボードに興味のある方は、以下の記事を参考にして頂ければと思います。

PythonでBIプラットフォームを構築するパッケージatoti