ngrokというサービスを使ってLAN内のサーバーに外部から接続する

ngrokはNATやファイヤーウォール以下にあるローカルサーバーを、インターネット越しにアクセス可能にしてくれるサービス。 便利だよと教えてもらったので、試してました。

ngrok.com

無料版の機能はアカウント登録等不要で、ngrokコマンドをダウンロードして実行すると、すぐに使えました。 ngrokコマンドは依存ライブラリ等なしの単一バイナリで、Windows, MacOSX, Linux用のものが配布されています。

公開したいサーバー

お試しなので、とりあえずPython3に組み込みのhttp.serverを使ってみます。

$ python3.5 -m http.server

カレントディレクトリにはindex.htmlを配置済み。これでlocalhostの8000番ポートでHTTPサーバーが起動します。 このサーバーをngrokで外部から接続できるようにしてみます。

ngrokの起動

localhostの8000番ポートをhttpで公開するのであれば次の通り。

$ ngrok http 8000

起動すると、ngrokのサービスのサーバーと、公開対象のサーバーにクライアントが接続し、「bf9fddc6.ngrok.io」のようにドメイン名が割り当てられます。 表示されたURLにWebブラウザ等で接続すると、対象のサーバー(この例だとPythonのhttp.server)につながります。

f:id:nullpobug:20160713221459p:plain

開発中のWebアプリなどを、ちょっと外部に見せたりするのに便利そうな感じですね。 有料プランだとカスタムのドメインを使えたりするそうなので、そのあたりも試してみたいところです。

参考

英語ドキュメントが整備されていて、使い方もわかりやすかったです。

https://ngrok.com/docs

ちなみに「えん-ぐろっく」と読むらしい

https://ngrok.com/faq#name