webhookの開発にはngrokがおすすめ!

ngrok top pageWeb開発

なんでもいいのですが。

例えば、LINE messageing API等で指定するwebhookの向き先をローカルのサーバに向けて、開発したいときってありますよね。

自分が最初にLINE messageing APIを触ったときは、webhookのURLに自分のドメインのURLを入力して、自前のサーバでテストしてました。

いま考えれば、そんなことをする必要はなく、ngrokというツールを使用すればOKです。

ngrokとは?

ngrokとは、1コマンドで自分のローカルサーバに対してPublicなURLを割り当てることができるツールです。

「百聞は一見に如かず」ということわざの通り、見て触ればわかります。

実行環境

OS: CentOS7

ngrokのインストール方法

ngrok用のディレクトリを作成する。

$ mkdir ngrok
$ cd ngrok

ngrokをインストールする。

$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

※wgetコマンドがインストールされていない方は、以下でできる。

$ sudo yum install wget

ダウンロードしたファイルを解凍する。

$ unzip ngrok-stable-linux-amd64.zip

ローカル開発サーバの80番ポートにForwardingするように、以下ngrokコマンドを実行してみる。

$ ./ngrok http 80
Session Status                online
Session Expires               7 hours, 59 minutes
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://<random>.ngrok.io -> http://localhost:80
Forwarding                    https://<random>.ngrok.io -> http://localhost:80

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

http(s)://<random>.ngrok.io => http://localhost:80へForwardingされているのがわかります。

オプション

※以下は必須ではないです。単にローカルサーバでテストしたい人は必要ないです。

ユーザ登録をする。
https://dashboard.ngrok.com/signup

ローカル環境にtokenを登録する。

$ ./ngrok authtoken <token>

ここ or authページを参照。
ngrok token

登録したアカウントとローカルの開発サーバで実行するngrokを紐づけるために上のtokenが必要みたいです。

これによって、ngrokのWeb管理ページから、ローカルの開発サーバでngrokを実行して作成したトンネルを観れるようになります。

現在(2020/02/22)、tokenありの状態でコマンドを実行すると以下のエラーが表示されました。

$ ./ngrok http 80
The authtoken you specified is properly formed, but it is invalid.
Your authtoken: <token>
This usually happens when:
    - You reset your authtoken
    - Your authtoken was for a team account that you were removed from
    - You are using ngrok link and this credential was explicitly revoked
Go to your ngrok dashboard and double check that your authtoken is correct:
ngrok - Online in One Line
ngrok is the fastest way to put anything on the internet with a single command.
ERR_NGROK_107

前にも同じ現象がおこっていた模様。サービス側の問題だったようです。
https://github.com/inconshreveable/ngrok/issues/275

故に、自分は以下コマンドで登録したtokenを削除して、tokenなしで使用してます。

$ rm -rf .ngrok2

LINE messsage APIでngrokを使用する

LINE messaging APIのwebhookには、ngrokから割り当てられたURLを入力すると、そのURLを経由して自分のローカルのサーバにメッセージが飛んできます。

https://<random>.ngrok.io/<webhook path>

参照

ngrok download page

タイトルとURLをコピーしました