Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

手元のマシンに外部からアクセスするために ngrok 使ってみた

手元の PC で開発してるときに,外部からアクセスさせたいなぁと思い立ち.で,ざっと調べた感じ ngrok が良さそうだったのでアカウント作成してみました.

ngrok ですが,

  • HTTP/TCP tunnels on random URLs/ports
  • 1 online ngrok process
  • 4 tunnels/ngrok process
  • 40 connections / minute

な条件で良ければ無料で使えます.

ngrok のホームページ上でアカウントを作成して,https://ngrok.com/download から ngrok コマンドをダウンロード.

$ ngrok authtoken

で auth token を登録.auth token はユーザーアカウントのホームページの auth のところに書かれています.このコマンド自体は auth key をそのまま ~/.ngrok2/ngrok.yml に書き込むだけみたいだけどね.

その後,

$ ngrok http 8880

って感じで立ち上げると

Session Status           online
Account                     Toshihisa Matsuki (Plan: Free)
Version                      2.2.8
Region                       United States (us)
Web Interface            http://127.0.0.1:4040
Forwarding                http://xxxx.ngrok.io -> localhost:8880
Forwarding                https://xxxx.ngrok.io -> localhost:8880

な感じで表示され,http://xxxx.ngrok.io というグローバルアドレスで手元のマシンにアクセスできるようになります.また,Web Interface のアドレス (http://127.0.0.1:4040) にアクセスすると接続ステータスチェックなどができます.

手元の Debian な PC で docker を立ち上げて,その中で apache を動作させて,それを ngrok 経由で外部からアクセスしてみましたが,わりと簡単にできました.まぁ,当然か.

速度も早いし,良い感じ.

Free プランではマシン名は one time になるので,ngrok を立ち上げ直す毎に変更になります.

ちょこっと外部マシンから webhook のデバッグ用に使ってみたけど,うん,十分使える感じ.

ただ,外部に晒されるので,開発途中の環境にアクセスできるようにする場合にはセキュリティとかは気をつけないと駄目だけどね.

TLS tunnel 接続をしたい場合には有料プランに申し込む必要があります.あとは接続数を増やしたい場合とか,ドメイン名を変更したい場合とかも.詳しくは https://ngrok.com/pricing あたりを参照してください.

15-day money back guarantee があったので,一瞬だけ有料プランに申し込んでみたけど普通に ssl で外部から接続できました.

ssl で使おうとしてた開発内容と環境が微妙に合わなかったので,結局のところ,当面は Free プランで使うことにしたけどね.

コマンドラインの細かいオプションとかは

$ ngrok help

で表示されるのでその辺りを見てください.

手元で作ってる Plamo Linux の野良環境(ディストリビューション)の web サーバーとして今はレンタルサーバー借りてるんだけど,最近,ハードディスクが足りなくなってきてるんだよね.大容量のストレージをサポートしてるレンタルサーバーを探してたんだけど,あんまり良さそうなのがない状態.大容量が使えるところでも,通信量とか接続数の制限が微妙にあったりしてちょっと使いにくそうなんだよな.

ngrok は接続数には制限があるけど,通信量は特に制限ないから,いま使ってるレンタルサーバーの代わりに独自ドメイン取って,うちの中にあるサーバーで docker 動かして ngrok 経由で外部に公開する形にしても良いかもしれないなぁとちょっと考え中.どうせ,うちの中に24時間稼働させてサーバーがすでにあるので,その余力を使えばいいだけだし.

またはその程度の作業なら家庭内サーバの余力じゃなくて,ラズパイでも十分かもな.USB HDD をつなげておけば十分だし.そうすればマシンを分離できるのでちょっと安心.ダウンロードページに ARM 用 Linux の ngrok コマンドも置かれてるし.

けど,色々とメンテの手間を考えるとやっぱりレンタルサーバーの方が良いんだよな.

まぁ,追々考えます.

あ,話がそれていきましたけど,ngrok 自体は使ってみてる範囲では悪い感じは全然ないですよ.興味のある方はフリープランに申し込んで試してみれば良いかなと思います.

そんな感じ.

WEB+DB PRESS総集編[Vol.1~102] (WEB+DB PRESS plusシリーズ)
WEB+DB PRESS編集部
技術評論社
Software Design総集編【2013~2017】
Software Design編集部
技術評論社