Development
12 min read
41 views

なぜ開発者は ngrok を Rust ベースのトンネルに置き換えるのか

IT
InstaTunnel Team
Published by the InstaTunnel team | Editorial policy
なぜ開発者は ngrok を Rust ベースのトンネルに置き換えるのか

Current comparison

Looking for the main ngrok alternative guide?

We keep the latest ngrok alternative comparison, CLI commands, pricing notes, and webhook examples on one canonical page.

Open the InstaTunnel ngrok alternative guide

Quick answer

なぜ開発者は 2MB の Rust バイナリに ngrok を置き換えるのか: localhost tunnel answer

A localhost tunnel gives your local app a public HTTPS URL without opening router ports, which is useful for demos, QA, mobile testing, and provider callbacks.

How do I expose localhost without opening ports?

Use a reverse HTTPS tunnel. Your machine connects outbound to the tunnel service, and the public URL forwards requests back to your local app.

When should I use a localhost tunnel?

Use one for webhook testing, OAuth callbacks, client demos, QA previews, mobile device checks, and short-lived development reviews.

Webhook の開発や API のテスト、リモートでホームラボサーバーにアクセスしようとした経験があるなら、標準的な手順はご存知でしょう:ngrok をインストールし、コマンドを実行して、あなたの localhost にフォワードする公開 URL を取得する。長年にわたり、これは NAT トラバーサルやローカルトンネリングのデフォルト選択でした。

しかし、特にエッジコンピューティングエンジニア、IoTホビイスト、ホームラボ愛好者の間で変化の兆しが見えています。商用のトンネリング SaaS 製品がより多くのエンタープライズ機能(およびエンタープライズ価格)を追加するにつれ、開発者はオープンソースのミニマリストな代替手段をますます検討しています — その多くは Rust で書かれています。

Go ベースの frp (Fast Reverse Proxy) は長らく主要なオープンソース選択肢であり、この分野で最も大きなプロジェクトの一つです。それに並ぶ小規模な Rust ツール群 — rathole, bore, そしてホステッドサービスの tunnelto — は、frp の機能の広さを犠牲にして、より小さなフットプリントと、特に制約のあるハードウェア上での負荷時の挙動の改善を武器に、実績を築いています。

これらのツールが実際に得意とする点、”Rust が Go を凌駕する”という見解が成り立つ場面、そして誇張されている点について、正直に見ていきましょう。

無料プランの真実:ngrok の無料プランで実際に得られるもの

ngrok に関する “X に乗り換えよう” という多くの情報は、数年前から誤りだった主張を繰り返しています:無料ユーザーは、トンネルが再接続されるたびに変わるランダムなサブドメインを使う、というものです。これは ngrok の初期の頃には真実でしたが、2023年以降、ngrok は各無料アカウントに 永続的な開発用ドメイン(例:your-assigned-name.ngrok-free.app)を割り当てるようになり、再起動しても同じものが使われます。ngrok の公式ドキュメントも、無料エンドポイントにはセッションタイムアウトがなく、バックグラウンドサービスとして無期限に動作可能であることを確認しています。

しかし、無料プランに *含まれない*のは、自分のサブドメイン名を選択したり、自分のドメインを持ち込むことです — これは有料プラン(Hobbyist で *.ngrok.app のカスタム名、Pay-as-you-go で自分のドメイン)に限定されています。つまり、実際の制約は URL の回転ではなく、特定の名前やドメインをブランド化または再利用できないことにあり、TCP エンドポイントは無料でも検証済みのクレジットカードが必要です。

この違いは重要です。なぜなら、開発者が代替手段を求める本当の理由は、2時間のセッションや絶え間ない URL の変化に関する神話ではなく、実際には名前やドメインをカスタマイズできないことにあります。

エッジでの Rust 利用の理由

Go のガーベジコレクターは非決定的な一時停止動作を引き起こします。これはクラウドの VM ではほとんど気になりませんが、制約のあるハードウェア(OpenWrt ルーターや初期の Raspberry Pi など)で高負荷の接続が続くと、GC の一時停止やバッファの増大によりメモリ使用量が高まり、Linux の OOM キラーを誘発することがあります。

Rust はガーベジコレクターを持たずにメモリ安全性を実現しているため、GC の一時停止はなく、接続のピーク時でもメモリ使用量は一定に保たれやすいです。tokio の非同期ランタイムと組み合わせることで、Rust のトンネルは依存関係の少ない小さなバイナリを予測可能なレイテンシで配信できます。

これが理論です。実際には各ツールでどうなるか見てみましょう。

1. rathole:より軽量な frp の代替

もともと GitHub ユーザー rapiz1 によって作られ、現在は rathole-org の管理下にある rathole は、この記事執筆時点で GitHub スター数 14,000、フォーク数 800 です。ライセンスは Apache-2.0。

削除された機能

rathole は意図的に frp のウェブダッシュボード、ロードバランサー、プラグインシステムを省略し、TCP/UDP 転送とクライアント/サーバーの TOML 設定に集中しています。

ベンチマークとその背景

rathole の README には、frp とほぼ同じレイテンシを実現しながら、より多くの接続を少ないメモリで処理できると記載されています。具体的な数値は、rathole の docs/benchmark.md に記載されており、QPS 1 から 3,000 の範囲で、rathole と frp はほぼ同じレイテンシを示し、4,000 QPS では frp がエラーを出し、レイテンシが秒単位に上昇する一方、rathole のレイテンシは一定でした。30秒の負荷テストでは、frp のメモリ使用量は大きく増加しましたが、rathole はほぼ一定でした。

この結果について知っておくべき点は二つあります:一つは、このベンチマークは一度だけ、単一のマシン(Arch Linux のデュアル Xeon E5-2620)上で2021年12月に実行されたもので、古い rathole のビルドと frp v0.38.0 を比較したものであること。もう一つは、これはループバックテストであり、rathole のドキュメントも指摘している通り、実際のネットワーク状況より CPU バウンドのパフォーマンスを反映している点です。低負荷時の動作と比較して、負荷時の低メモリ使用と遅延の安定性は、GC ありとなしのアーキテクチャの違いによるものであり、現行の frp と比較した最新のベンチマークは存在しません。

特徴的なポイント

  • Noise Protocol:rathole はオプションで Noise Protocol フレームワークを使ったトランスポート暗号化を選択可能です。これは WireGuard のハンドシェイクを保護し、WhatsApp のクライアント-サーバー間の通信も保護します。WhatsApp のエンドツーエンド暗号化は別のシステム(Signal Protocol)です。したがって、WireGuard との比較は正確ですが、WhatsApp との比較は範囲が狭まります。
  • 小さなバイナリ:rathole のビルドガイドによると、最小の x86_64 バイナリは 574 KiB に削減可能です。これは frpc の約 10 MiB と比べて圧倒的に小さいです。
  • 必須のサービスごとのトークン:各サービスには独自のトークンが必要で、デフォルトは拒否設定です。
  • ホットリロード設定:サービスの追加や削除を再起動なしで行えます。

メンテナンス状況

これが最も重要な修正点です:rathole の最後の *タグ付けされた*リリースは 2023年10月1日の v0.5.0 です。これは多くの主張と一致しますが、実際には放置されていません。リポジトリにはアクティブな開発ブランチがあり、自動ビルドも行われており(2026年初頭まで)、issue や PR も2025年・2026年にかけて継続して作成・マージされています。したがって、rathole は「安定していて軽くメンテナンスされているが、新しい安定版タグは出ていない」と表現するのがより正確です。

2. bore:最小限の TCP トンネル

Eric Zhang によって作られ、MIT ライセンスの bore は、GitHub で 11,100スター、493フォーク です。最新リリースは 2025年6月の v0.6.0。

コードベース

bore のクライアントとサーバーの実装は、tokio 上の async Rust で約 400 行と非常に小さく、一読で理解できる規模です。

仕組み

bore local 8000 --to bore.pub

これにより、ローカルのポート 8000 が bore.pub:<ランダムポート> で公開され、メンテナの公開サーバーを利用します。自己ホスティングする場合は:

bore server

重要なセキュリティポイント

bore はオプションの --secret フラグ(または BORE_SECRET 環境変数)をサポートし、クライアントが共有秘密を HMAC チャレンジを通じて証明することでトンネルの受け入れを行います。これは誰がトンネルを開くかの認証です。ただし、bore のドキュメントによると、この秘密は初期のハンドシェイクのみをカバーし、プロキシされたトラフィック自体はデフォルトでは暗号化されません。HTTPS 開発サーバーなど、すでに TLS を行っているサービス以外をトンネリングする場合は、注意が必要です。この点は、多くの「bore vs. ngrok」の比較記事には記載されていません。

3. tunnelto:二つの異なるプロジェクトが同じ名前を共有

この部分は最も修正が必要でした。「tunnelto」は実は二つの別々の、無関係なプロジェクトを指しており、比較記事で混同されることが多いです。

tunnelto.devagrinman/tunnelto on GitHub)は、オープンソースの MIT ライセンスの Rust プロジェクトです。最後のリリースは 2021年 で、その後の更新はされていません。カスタムドメインやエンドポイント認証、静的ホスティング機能もありません。

tunnelto.me は別の、積極的にメンテナンスされているホステッドサービスで、名前は似ていますが、実装言語は公開されていません。2026年6月時点の公式サイトによると、tunnelto.me は tunnelto.dev のコードベースを使っていません。料金プランは以下の通り:

プラン 価格 カスタムドメイン トンネル持続
無料 $0 1つ(含む) 1時間のみ — 再作成必要
Hobbyist $2/月 1 持続(再起動後も維持)
Plus $10/月 3 持続
Pro $20/月 5 持続

ここで注目すべきは、無料プランでもカスタムドメインが含まれている点です。これは多くの競合(ngrokや bore など)が有料 tier に制限している中での特筆事項です。ただし、無料プランのトンネルは1時間で期限切れとなり、再作成が必要です。長時間または再起動後も持続させたい場合は、$2/月の Hobbyist tier です。トンネル認証(Bearer/Basic)も有料機能です。

比較まとめ

機能 ngrok frp rathole bore tunnelto.me
言語 Go Go Rust Rust 非公開
GitHub スター —(クローズドソース) 約107k 14,000 11,100 —(ホステッド、クローズドソース)
主な焦点 商用 SaaS 自ホスティング、多機能 自ホスティング、低リソース 自ホスティング、最小 TCP ホステッド SaaS、カスタムドメイン
無料 tier でのカスタムドメイン なし(永続的 dev ドメインのみ) あり(自己ホスティング) あり(自己ホスティング) なし(ポートベース) あり(ただし1時間制限)
バイナリ/エージェントサイズ 独自エージェント 約10 MiB (frpc) 約574 KiB(最小ビルド) 小型、約400行 ネイティブバイナリ(言語未公開)
デフォルトのトラフィック暗号化 あり(HTTPS) TLS オプション TLSまたはNoise オプション なし — ハンドシェイク認証のみ あり(HTTPS デフォルト)
最終リリース 継続的 活発(v0.70.x 2026年) v0.5.0、2023年10月(開発ブランチは活動中) v0.6.0、2025年6月 活発(2026年)
セットアップの複雑さ 非常に低 高(多くの設定オプション) 中(クライアント/サーバー TOML) なし(単一コマンド) 非常に低

frp:公平な評価を

“Rust が Go に取って代わる” という見解は、frp が停滞した古いプロジェクトではないことを認めるべきです。現在、約 107,000スターと15,000フォーク を持ち、月次で新しいマイナーリリースを行っています — 2026年の前半には v0.68 から v0.70 までリリース済みで、セキュリティパッチも継続的に適用されています(2026年4月に認証バイパスの修正も公開)。TCP/UDP 転送だけでなく、プラグインやウェブダッシュボード、SSH トンネルゲートウェイ、より広範なプロトコルサポートが必要なら、frp は最も機能豊富なオープンソース選択肢です。”GC 一時停止” の問題は狭いトレードオフであり、プロジェクトの遅れを示すものではありません。

低RAMのローカルホストトンネルの設定方法(Raspberry Pi で rathole)

自宅に Raspberry Pi を持ち、クラウドの安価な VPS を使えば、rathole のトンネル設定は約10分で完了します。

ステップ 1 — VPS の設定。rathole のバイナリを リリースページ からダウンロードし、server.toml を作成:

[server]
bind_addr = "0.0.0.0:2333"

[server.services.my_pi_ssh]
token = "あなたが知っている秘密のトークン"
bind_addr = "0.0.0.0:5202"

起動:

./rathole server.toml

ステップ 2 — Raspberry Pi の設定。ARM/AArch64 バイナリをダウンロードし、client.toml を作成:

[client]
remote_addr = "YOUR_VPS_IP:2333"

[client.services.my_pi_ssh]
token = "あなたが知っている秘密のトークン"
local_addr = "127.0.0.1:22"

起動:

./rathole client.toml

ステップ 3 — 接続。どこからでも:

ssh pi@YOUR_VPS_IP -p 5202

本番運用では、systemd サービスファイルに両コマンドをラップし(rathole のリポジトリには例のユニットファイルも含まれています)、起動時やクラッシュ時に自動再起動させることを推奨します。暗号化を管理せずにトランスポートを行いたい場合は、[client.transport.noise] / [server.transport.noise] ブロックを追加し、Noise プロトコルを使うことも可能です — トークンだけでサービスの認証は行えますが、トンネル自体は暗号化されません。

まとめ

  • webhook テスト用の安定した URL が必要で、設定を最小限にしたい? tunnelto.me の無料カスタムドメインは非常に便利です — ただし、1時間を超える場合は $2/月のプランを検討してください。
  • TCP ポートをチームメイトと共有したいが設定不要、かつアップストリームサービスが TLS している必要がないなら? bore
  • 低RAMのエッジデバイス群を運用し、負荷下でも安定性の証拠が欲しいなら? rathole — ただし、新しい安定リリースは期待しない方が良いです。
  • プラグインやダッシュボード、広範なプロトコルサポート、Go ツールに慣れているなら? frp が最も完成度が高く、積極的に開発中です。
  • 企業向け機能(SSO、トラフィックポリシー、監査ログ、マネージドエッジネットワーク)が必要で、料金を気にしないなら? それは今や ngrok の役割です。無料プランも意外と使えますが、これらの自己ホスティングツールと競合しているわけではありません。

変更履歴

  • SEO/アフィリエイトメタデータをすべて削除:ソース名の脚注(例:「InstaTunnel」、「tunnelto.me +1」)、ストックフォトの帰属キャプション、元の見出しの括弧付きサブタイトル。
  • ngrok の無料プランの誤解を正す:無料アカウントは2023年以降、*永続的な*開発用ドメインを使用しており、ngrok の公式ドキュメントも無料エンドポイントにはセッションタイムアウトがなく、無期限に動作可能と明記しています。真の制約は、カスタム名やドメインを選べないことにあり、URL の回転ではありません(出典:ngrok ドキュメント、「Free Plan Limits」および「Static dev domains」ブログ記事)。
  • GitHub のスター・フォーク数を最新に更新:frp 約107kスター/15kフォーク(旧「106,000+」は正確でしたが更新)、rathole 14.0kスター/800フォーク(旧「~14,000」も維持)、bore 11,100スター/493フォーク(旧「約10,000」より増加)
  • rathole の QPS/レイテンシベンチマークの数字を検証:2021年12月の単一マシン(rathole のメンテナによる frp v0.38.0 との比較)で実施されたもので、独立した比較ではなく、現行の frp と比較した最新のベンチマークは存在しません。
  • rathole の最小バイナリサイズの記述を修正:公式ビルドガイドによると、最小の x86_64 バイナリは 574 KiB です(旧「約500 KiB」は方向性は正しかったが、正確な数字ではありませんでした)。
  • Noise Protocol の説明を修正・補足:Noise は WireGuard のハンドシェイクと WhatsApp のクライアント-サーバー通信を保護しますが、WhatsApp のエンドツーエンド暗号化は Signal Protocol であり、Noise で直接保護されているわけではありません。
  • rathole のメンテナンス状況を修正:v0.5.0(2023年10月1日)が最後のタグ付けリリースですが、アクティブな開発ブランチと issue/PR 活動は2025年・2026年に継続しています。完全放置ではありません。
  • frp の公平な評価を追加:frp は活発に開発されており(2026年まで月次リリース)、セキュリティパッチも適用中です。単純な TCP/UDP 転送だけでなく、プラグインやダッシュボード、SSH ゲートウェイなどの機能も充実しています。”GC 一時停止” の問題は狭いトレードオフです。
  • bore のセキュリティに関する重要な事実を追加--secret フラグはハッシュベースのチャレンジ認証に使われますが、トンネルの暗号化はデフォルトでは行われません。
  • 大きな誤解を修正:tunnelto は一つのプロジェクトではなく、無関係な二つのプロジェクトです。tunnelto.dev(Rust、2021年以降更新なし)と tunnelto.me(商用、実装言語非公開)。
  • tunnelto.me の無料プランの制約を修正:無料トンネルは1時間で期限切れ、再作成が必要です。持続させたい場合は $2/月の Hobbyist 以上です。
  • 比較表を拡充:GitHub スター数、暗号化のデフォルト、最終リリース日を追加し、正確な情報を反映。
  • 公平な評価と結論の補足:各ツールの現状と適用シーンに合わせた推奨を明示しました。

Continue from this article into the most relevant product guides and workflows.

Related Topics

#lightweight ngrok alternative, rust reverse proxy, rathole vs bore, low ram localhost tunnel, raspberry pi tunnel, rathole, bore tunnel, tunnelto, rust tunneling tools, ngrok alternative, minimalist reverse proxy, high performance tunnel, edge computing tunnel, iot reverse proxy, homelab tunneling, low resource tunnel, rust binary tunnel, self hosted rust proxy, rathole rust, bore rust, tunnelto rust, fast reverse proxy rust, low memory footprint tunnel, raspberry pi reverse proxy, embedded systems tunnel, open source rust tunnel, lightweight tunnel binary, homelab reverse proxy, docker rust tunnel, low overhead tunneling, rathole configuration, bore tunnel setup, tunnelto setup, ngrok replacement rust, rust network tools, edge device port forwarding, low resource port forwarding, raspberry pi port forwarding, lightweight secure tunnel, performant reverse proxy, self hosted edge proxy, memory efficient proxy, small footprint tunneling, single binary reverse proxy, rathole vs ngrok, bore vs ngrok, tunnelto vs ngrok, lightweight port forwarding, rust networking tools, iot port forwarding, edge server tunnel, privacy focused tunnel, high throughput rust proxy, 2mb rust binary, zero saas tunneling

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles