コマンド1行でlocalhostのローカルサービスをパブリックアクセス可能なURLへ:CloudflareがQuick Tunnelsをリリース

アカウント登録、ドメイン設定、ルーターのポート開放を一切行わずに、コマンド1行でローカルサービスを全世界からHTTPSアクセス可能なURLとして即座に公開できるCloudflareの「Quick Tunnels」について、その仕組み、導入手順、開発・テスト専用としての技術的制約を解説します。

著者:Cloudflare09-21 · 約7分

ローカル環境でWebサービスを立ち上げたり、モバイル端末での表示を検証したり、外部サービス向けにWebhookのコールバックを設定したりする際、開発者は共通の壁に直面しがちです。それは、「コードは自分のマシン上で動いているが、インターネット(パブリックネットワーク)からはアクセスできない」という問題です。

ローカルサービスをパブリックネットワークに接続する従来の手法では、ルーターの管理画面でポートフォワーディングを設定するか、サードパーティのトンネリングサービスに登録する必要がありました。Cloudflareが提供する「Quick Tunnels(クイックトンネル)」は、摩擦がほとんど生じない代替手段をもたらします。Cloudflareアカウントの登録、ドメインの購入や管理、ルーターでのインバウンドポート開放は一切不要です。ローカルにCLIツールをインストールしてコマンドを1行実行するだけで、世界中からHTTPS暗号化アクセスが可能なパブリックURLを即座に生成できます。

ローカルサービスをパブリック接続する際の従来の課題

開発やコラボレーションの現場では、ローカルで実行中のサービスへの外部アクセスが必要となるシナリオが数多く存在します:

プレビューの共有:開発中のプロトタイプをリモートの同僚に見せたり、モバイル端末などの外部デバイス上でローカルフロントエンドのレンダリング結果をプレビューしたりする。

Webhookの受信:外部プラットフォームのWebhookと連携する際、サービスに向けてイベント通知をプッシュ送信してもらうために、直接アクセス可能な公開URLを指定する必要がある。

ブラウザテスト:自動テストやクロス環境パイプラインでブラウザテストを実行する際、外部のテスト環境からローカルサービスを安定して呼び出せる必要がある。

Coding Agentへのパブリックエンドポイント提供:ローカルで動作するAIコーディングエージェントやスクリプトがサービスを立ち上げた後、さらなるデバッグや外部連携のために実際のパブリックなアクセス先が必要になる。

軽量なトンネリングツールが登場する前は、こうした要求を満たすためにローカル環境を危険に晒してパブリックに公開するか、アカウント登録、認証情報の管理、設定ファイルのメンテナンスといった事前準備に多大な時間を費やす必要がありました。

アウトバウンド専用:リバーストンネルがインバウンドポート開放を回避する仕組み

Quick Tunnelsの基盤は、Cloudflareの軽量デーモンである cloudflared によって支えられています。ルーターの設定を不要にできる根本的な理由は、アウトバウンド専用(Outbound-only)のリバーストンネルアーキテクチャを採用している点にあります。

通常のWebサイトアクセスでは、外部からのリクエストがルーターのパブリックIPへ能動的に送られます。これは「インバウンド(受信)トラフィック」に該当し、ルーター側で対応するポートを開放していなければ通信を通過させられません。しかし、Quick Tunnelsのアーキテクチャではデータの流れが完全に逆転しています:

接続確立フェーズ:ローカルのターミナルでコマンドを実行すると、cloudflared が現在のネットワークから最も近いCloudflareのエッジロケーションに向けて、暗号化されたアウトバウンド接続を能動的に確立します。このアウトバウンド通信では、ルーター側でインバウンドポートを開放する必要は一切ありません。ただし、厳格に制限されたネットワーク環境では、相応のアウトバウンドトラフィックを許可する必要があります(公式ドキュメントでは正式なTunnelについて、サーバーからCloudflareのポート7844にアクセス可能である必要があると明記されています)。

リクエスト転送フェーズ:外部ユーザーが割り当てられた公開URLにアクセスすると、リクエストはまずCloudflareのグローバルエッジネットワークに到達し、TLSハンドシェイク、DDoS対策、ルーティング解決が行われます。その後、リクエストはCloudflareを経由して確立済みの接続を通じてローカルの cloudflared へ届き、そこから対応する localhost のポートへと転送されます。

プロセス終了に伴うライフサイクル:ドキュメントには、トンネルはプロセスとともに終了する(Ends with the process)と記載されています。ターミナル上でコマンドを中断するか cloudflared プロセスを停止すると、トンネルは即座に終了し、公開URLも同時に無効化されます。

パブリックリクエストがlocalhostへ届くまで 入口はCloudflare側にあり、接続はローカルマシンから開始されます。外部アクセスのためにルーターのインバウンドポートを開放する必要はありません。

レスポンスは同じ経路を戻ります。cloudflaredプロセスを終了すると、一時トンネルも終了します。

3ステップで導入:ローカルポートから公開URLまで

Quick Tunnelsの利用にはログインも設定ファイルの準備も不要で、全工程はわずか3つのステップで完了します。

ステップ1は、公式クライアントである cloudflared のインストールです。macOSユーザーはHomebrewを使って直接インストールできます:

brew install cloudflared

WindowsおよびLinuxユーザーは、公式ページの該当OSタブにあるインストール手順を参照して導入できます。インストール工程全体を通じて、Cloudflareアカウントを連携する必要はありません。

ステップ2は、ローカル開発サービスの起動です。一般的なフロントエンドプロジェクトやバックエンドAPIを例に、普段の開発で使用しているポートでローカルサービスを立ち上げます:

npm run dev

ここでは、ローカルサービスがすでに http://localhost:8000 で正常に稼働していると仮定します。

ステップ3は、トンネルの起動です。新しいターミナルウィンドウを開き、次のコマンドを実行します:

cloudflared tunnel --url http://localhost:8000

ターミナルで接続が確立されると、公式サンプルの https://quiet-marble-otter.trycloudflare.com のように、ランダムな trycloudflare.com のサブドメインが返されます。このURLをそのままコピーして同僚に送ったり、サードパーティサービスのWebhook設定に入力したりするだけで、外部からのリクエストがローカルの開発環境へ自動的にルーティングされます。

Coding Agentやスクリプト向けの機械可読な出力

人間の開発者が手動でリンクをコピーするだけでなく、Quick Tunnelsは最新の自動化ワークフローやAIコーディングエージェント(Coding Agent)にも対応しています。

コーディングエージェントや自動化スクリプトがローカルでサービスを起動した後、外部ブラウザにページを渡してテストを実行させたり公開エンドポイントを提供したりする場合、プログラムが自動的に生成された公開URLを抽出できる必要があります。

起動コマンドに --output json 引数を追加するだけで、スクリプトやエージェントが機械可読な実行結果を取得できます:

cloudflared tunnel --url http://localhost:8000 --output json

公式ページで紹介されているビジュアル表示の例示フィールドは次の通りです:

Tunnel ready https://quiet-marble-otter.trycloudflare.com
location: lhr01 · protocol: quic

なお、上記の内容は公式ドキュメントにおける表示イメージの例示フィールドであり、実際に出力されるJSONテキストのサンプルそのものではない点に注意が必要です。ページの例示フィールドには Tunnel ready、公開URL、ロケーションコード(lhr01 など)、接続プロトコル(quic など)が含まれています。実際のワークフローでは、自動化スクリプトは人間向けのログテキストに依存するのではなく、--output json が返す構造化されたJSONデータをパースすべきです。また、処理全体は一時的なものであり、タスクが完了したらプロセスを終了させるだけで済みます。ページ上でもクリーンアップ不要(no cleanup)と明記されています。

コアな境界線:なぜ本番環境で使用できないのか

Quick Tunnelsは極めて素早い立ち上げを実現しますが、公式ドキュメントにおける位置づけはローカル開発およびテスト専用(For local development / testing only)と極めて明確です。日常のツールチェーンに組み込む際は、その技術的な制約とセキュリティ境界を正しく把握しておく必要があります。

SSE(Server-Sent Events)非対応:公式ドキュメントには、Quick TunnelsがSSEをサポートしていないことが明記されています。SSEとは、サーバーが接続を維持したままブラウザへ一連のイベントを継続的にプッシュする仕組みであり、コンテンツを段階的にストリーミング返却するような場面で広く用いられています。ローカルサービスがこの方式で外部へデータをプッシュすることに依存している場合、Quick Tunnelsを選択すべきではありません。

同時処理リクエスト数の上限は200件:公式ドキュメントでは、Quick Tunnelsに200 concurrent request limit(同時処理リクエスト数の上限200件)があることが明確に示されています。これは接続数(コネクション数)ではなく、同時に処理されるリクエストの数です。負荷がこの規模に達する可能性がある場合や、負荷テストの実施、一般公開のトラフィックを受け持つ用途には、Quick Tunnelsを選択すべきではありません。

ランダムサブドメインとアクセス制御の制限:Quick Tunnelsはランダムな trycloudflare.com のサブドメインを生成し、カスタムドメインやアクセス制御を設定する手順は用意されていません。安定的かつ長期的で管理可能な公開ホスト名が必要な場合、公式には正式なTunnelへの移行が求められます。

プライベートネットワーク上のサービスを安定的かつ永続的に外部へ公開する必要がある場合は、正式なCloudflare Tunnelへと移行しなければなりません:

前提条件:正式なTunnelでは、Cloudflareアカウントの登録、Cloudflare上で管理されているドメインの保有、およびインターネット接続が可能なサーバーまたは仮想マシンへの cloudflared のインストールが必要です。

ルーティング設定:正式なTunnelはダッシュボード(管理コンソール)またはAPI経由で作成し、公開ホスト名(hostname)からローカルサービスへのルーティングマッピングを設定します。

ファイアウォールのポート要件:厳格なエンタープライズファイアウォールの内側にあるサーバーへ正式なTunnelをデプロイする場合、サーバーからCloudflareのポート7844へのアウトバウンドアクセスが可能であることを確認する必要があります。

ツール選定の判断チェックリスト

Quick Tunnelsを使用すべきかどうかは、以下の基準を参考に迅速に判断できます:

適しているシナリオ:

  • プレビューの共有:リモートの協作者や外部のモバイル端末に向けてローカルのフロントエンド画面を一時的に共有するケース。複雑な設定なしに公開URLから手軽にプレビュー可能。
  • Webhookの受信:外部プラットフォームからのWebhookイベント通知をテスト・デバッグするために、一時的な公開エンドポイントが必要なケース。
  • ブラウザテストの実行:自動テストツールがローカルで動作するサービスにネットワーク越しでアクセスし、E2Eテストを完了させる必要があるケース。
  • Coding Agentへのエンドポイント提供:ローカルで実行される自動化スクリプトやコーディングエージェントが、実際のパブリックアクセス口を自動取得して読み取る必要があるケース。

適していないシナリオ:

  • SSEに依存するサービス:接続を維持したままブラウザへ継続的にイベントをプッシュする必要があるサービス(公式にSSE非対応と明記されており、正常な通信を確立できません)。
  • 同時処理リクエスト数が200件に迫る場合、負荷テスト、または公開トラフィックの受付:公式により同時処理リクエスト数の上限が200件(200 concurrent request limit)に制限されているため、この上限に迫る場合やAPI負荷テスト、一般公開トラフィックの処理では制限に達しやすくなります。
  • 本番環境および固定ドメインが必要な長期稼働サービス:長期間の安定運用、固定ドメイン、管理可能なルーティングが求められるケース(公式には本番環境では正式なTunnelの作成が求められます)。
  • 隔離されていない機密データを含むサービス、またはアプリケーション層での認証がないサービス:公開URLによって外部リクエストがローカルサービスへ直接貫通します。ネットワーク経路上のセキュリティ運用の観点から、本来その検証対象にアクセスされても問題がなく、かつアプリケーション自身で必要な認証やデータ隔離がすでに施されている対象のみを公開すべきです(この項目は開発者向けの安全な運用推奨事項であり、Cloudflare製品による追加のセキュリティ保証ではありません)。
出典
Cloudflare Quick TunnelsCloudflare·原文を見る
編集部注
記事内のサンプルURL、ロケーションコード、プロトコルは公式ページの表示に基づいています。本記事の制作時にはcloudflaredを実行していません。
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。