24
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ngrokの代わりに「tunnelto」を使ってローカルのHTTPサーバに外からアクセスする

Last updated at Posted at 2021-03-05

2022/7/22現在、公式のホスティングサービスでは無料版がなくなり$2のプランのみになっているようです。

私は普段、LINEのbotを開発したりもしていますが、ローカルで動いている開発中のWebアプリで外部サービスからのWebhookを受け取りたい場面がよくあります。そういうときに使われる有名なツールに ngrok があり、HTTPSも使えて大変助かるのですが、私が使っていて不満を感じていたのは、

  • 動作が重い
    • リージョン指定すると多少マシにはなりますが、それでも重い…
    • 最近は改善されているかも?
  • 無料版ではサブドメインを指定できない
    • お金払えば済む話ではありますが、それだけのために月$5払うのはちょっと…

といった点です。他のツールだと serveo(2021/03/05現在使えなくなっちゃったんですかね?)や localhost.run を使ったことがありますが、少し前に tunnelto というツールに乗り換えました。

私が使っていて良いと感じるのは、

  • 気にならない程度に動作が軽い
  • 2021/3/5現在、無料版でもサブドメインを指定できる
    • サインアップが必要です
    • 他の人に予約されているドメインは指定できません
    • 月$2払えば、50個のサブドメインを予約できます

といった点です。簡単に導入できるので、早速インストールして使ってみましょう🏃‍♂️💨

インストール

公式サイトにインストール方法が載っています。Macを使っている方はHomebrewでインストールできます。

$ brew install agrinman/tap/tunnelto

アクセスキー登録

サインアップするとアクセスキーが発行されます。そのアクセスキーをローカルに設定します。

$ tunnelto set-auth --key YOUR_ACCESS_KEY
実行結果
Authentication key stored successfully!

アクセスキーは ~/.tunnelto/key.token に保存されます。

実行

例として、ローカルのHTTPサーバが8080番ポートを使っていてmokichidevというサブドメインを使いたい場合、以下のコマンドを実行します。

$ tunnelto -p 8080 -s mokichidev
実行結果
(省略)

⣷ Success! Remote tunnel created on: https://mokichidev.tunnelto.dev
=> Forwarding to localhost:8080

表示されている通り、 https://mokichidev.tunnelto.dev で外部からローカルのHTTPサーバにアクセスすることができます。HTTPSにも対応していて良いですね✨

最後に

今回は公式のホスティングサービスを使いましたが、tunneltoはRust製のOSSで、サーバも自分でホスティングできます。私は今のところ公式のものを使っていますが、READMEに方法が載っているので、社内の制約等で必要な方は自分でホスティングしてみてください。

24
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?