なんでもいいのですが。
例えば、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の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 Linengrok 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>