\ ポイント最大11倍! /

【Django】ngrokを使ってローカル環境を外部公開する方法

  • ローカルの開発サーバーに外部からアクセスしたい
  • Webhook のテストがしたい

python manage.py runserver をすると開発用のローカルサーバーが立ち上がるのはご存知のとおりだと思います。

ところがこのローカルサーバーは外部からアクセスできません
そうなると、次のような場合に不便です。

  • デプロイ後に近い環境での動作確認をしたい
  • 開発中のアプリを他の人にお試しで使ってもらいたい
  • Webhook の受信テストがしたい

これらの悩みを解決してくれるのが ngrok (エングロック)です。

ngrok を実行すると、開発用サーバーにアクセスするためのURLが発行され、ngrok を経由して外部から開発サーバーにアクセスできるようになります。

本記事では ngrok を実行するまでの手順をイチから解説しました。

※ 本記事の内容は Django を使った場合を想定しています。他のフレームワークをご利用の場合は、適宜読み替えてください。

ngrok には有料版も存在しますが、無料版のみ解説します。
というのも、僕は無料版で十分に満足しており、有料版を使ったことがないためです。

ngrok でトンネルを作って外部アクセスする方法

ngrok 実行までの流れは以下のとおりです。

  1. インストール
  2. ユーザー登録
  3. ngrok を実行する

最後に補足として、ngrok で使えるコマンドとログの確認方法もご紹介します。

1. インストール

OS ごとにインストール方法が異なります

公式サイトを見ていただき、お使いのOSのインストール方法に従ってを進めてください。

例えば mac OS の場合には、ターミナル上で以下のコマンドを実行します。
※ あらかじめbrew のインストールが必要

 brew install ngrok/ngrok/ngrok

インストールが終わったら以下のコマンドを実行します。

ngrok --version
>> ngrok version 3.1.1

ngrok のバージョンが返ってくればインストールは成功です。

2. ユーザー登録

ngrok は基本的にユーザー登録が必要です。
そのため、サインアップページからユーザー登録を済ませましょう。(登録無料)

メールアドレス・パスワード方式と、GitHub, Goole アカウントを使った登録方法があります。お好みの方法を選択してください。

ユーザー登録が終わったら、ダッシュボードに移動してください。

サイドバーの Your Authtoken をクリックすると、ユーザー固有のトークンが表示されます。
この後使いますので、Copy ボタンを押しましょう。

最後に、ターミナルなどのコマンドライン上で次のコマンドを実行してください。

ngrok config add-authtoken [コピーした Authtoken ]

“Authtoken saved to configuration” が表示されれば成功です。

これで、ngrok.yml ファイルにトークンが反映されました。

お疲れさまでした!初期設定は以上です。

3. ngrok を実行する

前提として、適当な Django プロジェクトをご用意ください。

その上で、以下のコマンドで開発用サーバーを立ち上げておきましょう。

python manage.py runserver 8000

上記コマンドは、わかりやすさを重視して明示的に8000番を指定しました。

Django のポート番号はデフォルト8000番なので、”8000″ を省略しても8000番ポートで実行されます。

続いて、開発用サーバーのポート番号を指定して ngrok を実行します。

ngrok http 8000

少し時間がかかる場合もありますが、しばらくすると次のように表示されるはずです。

ngrok

Check which logged users are accessing your tunnels in real time https://ngrok.com/s/app-users  
Session Status                online
Session Expires               1 hour, 58 minutes
Terms of Service              https://ngrok.com/tos
Version                       3.1.1
Region                        Japan (jp)
Latency                       9ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://xxxx-xxx-xxx-xx-xxx.jp.ngrok.io -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

Forwarding にある URL が ngrok によって提供された URL です。
※ https://xxxx-xxx-xxx-xx-xxx.jp.ngrok.io にあたる部分

この URL にアクセスすると、ngrok を経由してローカルで起動した開発用サーバーにアクセスできます。

補足1. Inspect を使ったログの確認方法

ngrok を起動すると表示される画面のうち、Web Interface に書かれたアドレスにアクセスすることでログ的なものが確認できます。

ngrok

Check which logged users are accessing your tunnels in real time https://ngrok.com/s/app-users  
Session Status                online
Session Expires               1 hour, 58 minutes
Terms of Service              https://ngrok.com/tos
Version                       3.1.1
Region                        Japan (jp)
Latency                       9ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://xxxx-xxx-xxx-xx-xxx.jp.ngrok.io -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

実際の画面は以下のとおりです。

どうしてもエラーが出てしまう場合、ngrok 側に問題がないかどうか確認する際に重宝します。

補足2. ngrok で使える主なコマンド

一般的なコマンドをざっとまとめておきます。

# ポート8000番に対してトンネルを作成
ngrok http 8000

# バージョンを表示
ngrok version

# 最新バージョンにアップデート
ngrok update

# ヘルプを表示
ngrok help

その他のコマンドはngrok help コマンドから確認できます。

まとめ

本番環境にアップロードせずにWebアプリの挙動を確認できるので重宝します。

ぜひテストの選択肢の一つとして加えてみてください。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Python(Django)が得意。最近ではフロント側の技術に触れる機会も増えてきました。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)