しょぼしょぼプログラマ雑記

自分のための備忘録。 開発記録など掲載してます。 質問・ご意見・ご感想等はTwitter ( https://twitter.com/yun_hokuto ) までお気軽にどうぞ。

ローカルのHTTPサーバーを一時的に外部に公開する方法

現在開発しているものは、実はメンバーが各員自宅やその他の場所で作業をしています

その際、サーバーを見てほしいけど公開サーバーも無いなんてことはよくあります

そんな時に便利なのが「ngrok」というものです

このngrokはトンネリング技術を利用してローカルサーバーを外部(LAN外)からアクセス可能にするというものです

公式サイトは下記になります

ngrok.com

今回の環境はこんな感じです

サーバーOSCentOS7(DHCPでIPを設定)
WebサーバーApache 2.4.6
LAN環境NTTの一般家庭用LAN
インストールするngrokバージョン2.0

1.ダウンロード&展開

公式サイトよりngrokをダウンロードします

今回のサーバーはLinuxなのでwgetcurlでファイルを取得します

そして取得したzipファイルを展開します

wget https://dl.ngrok.com/ngrok_2.0.16_linux_amd64.zip

unzip /path/to/ngrok.zip

※URL等は適宜確認してください

2.起動

起動コマンドを実行します

./ngrok http 80

このコマンドを発行して表示されるランダム文字列のサイトURLが外部からアクセス可能なURLになります

ポート変更の際は「80」の部分を変更してください

ウェルノンポートにするとエラーになるはずです

例)
Forwarding  http://[ランダム文字列].ngrok.io -> localhost:80
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            この部分がURL

その他


起動は2までで完了ですが、その他の設定を行うことが出来ます

Basic認証の設定

Basic認証を設定するには下記のコマンドになります

./ngrok http -auth="username:password" 80

ランダム文字列ではなく任意の文字列にする

ランダム文字列はめんどくさいという人がいると思います

特にお客様へお見せする際などは不都合が出てくる場合がありますね

その際は https://ngrok.com/dashboard へ行き、ユーザー登録 or GitHubユーザーでログインします

ログイン後のページにある「-authtoken」コマンドをコピーし、ngrokを起動する前に発行します

./ngrok authtoken [認証文字列]

その後、起動オプションを設定することでサブドメインが使用できます

./ngrok http -subdomain=hogehoge 80

Forwarding  http://hogehoge.ngrok.com -> localhost:80
            ^^^^^^^^^^^^^^^^^^^^^^^^^
            このアドレスでアクセス可能

設定ファイルで一括設定したい

設定ファイルは任意の場所で実行可能みたいです

rootで作成した場合は「/root/.ngrok2/ngrok.yml」になるかと思います

ファイルの中身は下記のような感じで設定可能です

authtoken: [認証文字列]
tunnels:
  [任意の設定名]:
    proto: http
    addr: 80       <=設定ポート
    subdomain: [設定したいサブドメイン]
    auth: "user:password"

作成したファイルを起動オプションで設定しますが、コマンドが若干異なるみたいですので注意です

./ngrok start -config /root/.ngrok2/ngrok.yml [任意の設定名]

設定等が間違っていない場合、これで一括設定できるかと思います

その他

その他設定も可能みたいです

詳細は公式ドキュメント(下記リンク)をご覧ください

ngrok.com