💬

【LINE Bot開発】Webhookの宛先をLocalhostにする

1 min read

LINE Botの開発中にWebhookイベントの動作確認をしたい時があると思います。そんなとき、いちいちサーバーにデプロイせずとも手元の環境でシミュレーションが可能です。

結論: localtunnelを使う

localtunnelを使えばLocalhost上のアプリケーションを簡単に外部に公開できます。事前にポート3000でボットサーバーを起動しておいてください。

$ npm i -D localtunnel
$ npx lt --port 3000 # localhost:3000で動いているアプリケーションを公開
your url is: https://unlucky-turtle.loca.lt

こうして払い出されたURLをWebhook URLに割り当てます。webhook設定

ngrok無料プランと違い、URL固定も可能

こうした目的のためにしばしばngrokが紹介されますが、こちらの場合払い出されるURLは毎回ランダムになります。URLを固定する機能(Custom subdomains機能)は有料プランでしか使えません。
一方でlocaltunnelであればオプションで使用するURLを指定可能です。

$ npx lt --port 3000 --subdomain hoge # 誰かが使用中のサブドメインは使用不可
your url is: https://hoge.loca.lt

これであればURLを払い出すたびにLINEのWebhook URLを再設定する必要がありません。

npmスクリプトに割り当てる

いちいちオプションの入力をしなくていいよう、npmスクリプトに登録します。
以下の場合、npm run exposeで実行可能です。

package.json
{
    "scripts": {
        "expose": "lt --port 3000 --subdomain ${LOCALTUNNEL_SUBDOMAIN} --print-requests",
    },
}
  • 使用するサブドメイン名は環境変数LOCALTUNNEL_SUBDOMAINで別途指定しています。
  • --print-requestsでリクエストのログがターミナルに出力されるようにしています。

デフォルトで特に認証などはなく、世界中の誰もがアクセスできる状態になります。したがって他人に推測されにくい文字列をサブドメインに指定したほうがいいでしょう。

代替ソフトウェア

https://github.com/anderspitman/awesome-tunneling
こちらにまとまっています。結構色々あります。
GitHubで編集を提案

Discussion

ログインするとコメントできます