Webhookを使った開発をサポートしてくれるサービスまとめ

Webhookはサーバ側から指定したURLにアクセスしてくれる仕組みです。REST APIのようにクライアントからアクセスするのではなく、サーバ側からリクエストしてくれるのでちょうど逆向きになります。イベントが起きた時しかアクセスが来ないので、リソースの最適化にもなります。

Customers Mail CloudでもWebhookの仕組みを提供しています。そんなWebhookの開発を行う際には、開発対象のサーバもインターネット上で公開されている必要があります。しかし、オンライン上で公開しているサーバ上のコードを直接修正するのは難しいはずです。

そこで使ってみたいのが、ローカルサーバの特定のポートをインターネット上に公開し、インターネットからアクセスできるようにするトンネルサービスです。今回は一気にまとめて紹介します。

Argo Tunnel

f:id:moongift:20210326165807p:plain

Cloudflareが提供するサービスです。ホスト名は自由に設定できるようです(あらかじめCloudflare側で設定されている必要があります)。料金は月5ドルから転送量に応じた従量課金となっています。

Argo Tunnel | Secure Tunneling Software | Cloudflare

Beeceptor

f:id:moongift:20210326165546p:plain

APIのモックを提供するサービスです。月10ドルからのプランでlocalhostへのトンネル機能が提供されます。

Beeceptor - Zero Coding Rest API Mocking - Rest API Mock Server

Loophole

f:id:moongift:20210326165821p:plain

執筆時点(2021年3月)でベータ版につき、無料で利用できるポートフォワードサービスです。BASIC認証やトークンを使った認証にも対応しています。

Home | Loophole

Inlets

f:id:moongift:20210326165532p:plain

Cloudflare Argoのようにドメインを取得した上で、トンネルを作成します。VPNに変わるサービスとして提供されています。

Inlets – The Cloud Native Tunnel

beameio

f:id:moongift:20210326165608p:plain

無料で使えるサービスです。サブドメインは自動的に振られているので、実行するたびにURLが異なるようです。

INSTA-SSL | beameio

KubeSail

f:id:moongift:20210326165701p:plain

1GBのトラフィックまで無料で利用できます。接続は2台までとなるようです。

KubeSail | Host at Home

localhost.run

f:id:moongift:20210326165754p:plain

SSHのトンネリングを行えるサービスで、特に専用クライアントアプリケーションはありません。通常のSSHコマンドで接続できます。ドメイン名は自分で取得、指定する必要があります。

localhost.run | localhost.run

Localtunnel

f:id:moongift:20210326165332p:plain

npmでインストールできるコマンドを実行するだけでトンネリングできます。料金表もなく、無料で利用できるようです。

Localtunnel ~ Expose yourself to the world

LocalXpose

f:id:moongift:20210326165624p:plain

無料で利用できますが15分でタイムアウトします。サブドメインは無料でもカスタマイズできます。有料(月6ドル)でタイムアウトがなくなります。

LocalXpose

Lynk

f:id:moongift:20210326165721p:plain

類似サービスと比べて6倍高速であると謳っているサービスになります。データは圧縮され、転送量を抑えられます。無料で利用できますが、1時間100コネクションまでになります。

Lynk

ngrok

f:id:moongift:20210326165301p:plain

この手のサービスで最も有名でしょう。無料で利用できますが、サブドメインは毎回変わってしまいます。月5ドルの有料版で3サブドメインまで利用できます。

ngrok - secure introspectable tunnels to localhost

Openport

f:id:moongift:20210326165445p:plain

無料で月間10MBまでの転送が利用できます。月5ドルで1GBに拡張されます。HTTPに限らず、SSHトンネリングとして、VNCなども利用できます。

Openport - Easy and secure reverse SSH

Packetriot

f:id:moongift:20210326165737p:plain

Let's EncryptベースのHTTPSが利用できます。無料で月間1GBまでの転送量が利用できます。アクセスログなどの機能はありませんが、開発時には十分な量でしょう。

Packetriot - Host applications on the Internet from any network or PC

Pagekite

f:id:moongift:20210326165841p:plain

Pythonスクリプトでクライアントが提供されています。基本的に有料のみですが、トライアルは可能です。月5.99ドルで15GBまでのトラフィックとなっています。

Pagekite - The fast, reliable localhost tunneling solution

Portmap.io

f:id:moongift:20210326165641p:plain

無料から利用できるSSHポートフォワードサービスです。無料の場合はサブドメインが自動的に生成されます。Web開発以外にも利用できます。

Portmap.io - free port forwarding solution

Webhook Relay

f:id:moongift:20210326165414p:plain

Webhookを利用した開発のために作られたサービスです。あらかじめルールを決めて、そのルールに合わせた呼び出しが可能です。CIと組み合わせる、IoTで利用するといったユースケースが紹介されています。

Relay and proxy all your webhooks to public and internal destinations - Webhook Relay

Staqlab Tunnel

f:id:moongift:20210326165516p:plain

利用できるトンネルサービスです。パフォーマンスは不明ですが、無料で利用できるので一時的な開発であれば十分でしょう。

Staqlab Tunnel-Expose Your localhost

Burrow.io

f:id:moongift:20210326165428p:plain

クライアントソフトウェアのダウンロード不要で、コマンドを叩くだけでSSHトンネルが作成されます。カスタムドメインなどは有料プラン(月額4.99ドル)からになります。

The Simple, Stable Localhost Tunnel | Burrow.io

UltraHook

f:id:moongift:20210326165349p:plain

カスタムのサブドメインが使えて無料というサービスです。ライブラリはRubyGemsで配布されており、あらかじめAPIキーの取得が必要です。

UltraHook - Receive webhooks on localhost

まとめ

今回紹介したサービスを利用することでWebhookを使った開発が容易になるでしょう。なお、限られたポートとはいえ、インターネット上にローカルマシンのリソースが公開されますので、利用するサービスが問題ないかどうかはきちんと検討してください。また、開発が終わったらきちんとサーバを落として、不用意に公開し続けないように注意してください。