inletsの紹介
忙しい人のための短い紹介
- inletsはMITライセンスのOSSなので自社サーバー上に構築することができる
- websocketも対応
- Video DEMOもあるよ
- 3分くらいで導入できる
- ローカルがインターネットに公開されるので気をつけて。
詳しく見たい人のための紹介
GitHub: https://github.com/inlets/inlets
ngrokをご存じの方は、ngrokのOSS版いえば理解できるでしょう。 MOONGIFTさんの記事(2019/05/04)inlets - ローカルのサービスをインターネット上に公開するで紹介されています。
簡単に言えばローカルのサーバーをインターネットに公開するProxyのようなものです。
利用する場面としては、ローカル開発環境を外部共有したような場面でしょう。 たとえば、
- SlackのRequest URLを指定するサーバーを構築するとき(いちいちデプロイするのが面倒な場合)
- 知見共有のためにローカルの環境を他者に共有する場合
- WEBをスマートフォンで動作確認するするため
など、開発時のユースケースが想像されます。
使い方
Quick Tutorial通りにやってみます。 どちらがサーバーでクライアントかわからなくなるで気をつけましょう。
サーバー・クライアント両方のセットアップ
CLIをインストールしておきます。
サーバー側
このサーバーのローカルホストから見たホスト名を仮にinlets.himenon.github.io
としておきます。
shasum
コマンドが入っていない可能性があるので、インストールしておきます。
# installerがyumの場合
yum -y install perl-Digest-SHA
inletsサーバーをport 8090で起動します。
export token=$(head -c 16 /dev/urandom | shasum | cut -d" " -f1)
inlets server --port=8090 --token="$token"
ログに以下のようなログが出力されます。
2019/12/26 14:06:20 Welcome to inlets.dev! Find out more at https://github.com/inlets/inlets
2019/12/26 14:06:20 Starting server - version 2.6.3
2019/12/26 14:06:20 Server token: "123456a78b9bcd012e3fg4h456i7890j123kl456" <----- ここをクライアント側で利用する
2019/12/26 14:06:20 Control Plane Listening on :8090
2019/12/26 14:06:20 Data Plane Listening on :8090
クライアント側
適当な場所でHTTP Serverを起動します。何を使っても良いですが、手軽にPythonでHTTPサーバーをport 8000で起動します。
# python 2系
python2 -m SimpleHTTPServer 8000
# python 3系
python3 -m http.server 8000
次に、inletsのサーバーと接続します。
export REMOTE="inlets.himenon.github.io:8090" # Host名はIPアドレスでも良い
export TOKEN="123456a78b9bcd012e3fg4h456i7890j123kl456" # サーバー側のToken
inlets client \
--remote=$REMOTE \
--upstream=http://127.0.0.1:8000 \ # ローカルのHTTPサーバーのport番号
--token $TOKEN
起動すると以下のようなログが出力されます。
2019/12/26 14:14:07 Welcome to inlets.dev! Find out more at https://github.com/inlets/inlets
2019/12/26 14:14:07 Starting client - version 2.6.3
2019/12/26 14:14:07 Upstream: => http://127.0.0.1:8000
2019/12/26 14:14:07 Token: "123456a78b9bcd012e3fg4h456i7890j123kl456"
INFO[0000] Connecting to proxy url="ws://inlets.himenon.github.io:8090/tunnel"
アクセスする
サーバー側にアクセス(inlets.himenon.github.io:8090
)してみると、ローカルのサーバー(今回はPythonのサーバー)に接続されることが確認できます。
おわりに
inletsの簡単な紹介をしました。 他にもいろいろとオプションがあったり、Dockerイメージがあったりするようです。 開発環境の共有を楽にするツールとしていかがでしょうか。