手元の 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 自体は使ってみてる範囲では悪い感じは全然ないですよ.興味のある方はフリープランに申し込んで試してみれば良いかなと思います.
そんな感じ.

