AI・テクノロジーClaude活用

Cloudflare Tunnelの使い方|自宅PCをポート開放なしで外部公開

スクロールで分かる

Claude Code などの AI で作ったアプリや社内用の小さなツールが、自宅の PC では http://localhost:3000 で開けるのに、外出先のスマホやほかの人からは開けない。でもルーターのポート開放は怖い──この記事はそんな人向けです。 Cloudflare Tunnel を使い、ポート開放なしで https://app.example.com のような自分のアドレスで開けるようにし、許可したメールアドレスの人だけが入れるようにするまでを実演します。

※ 最終確認日: 2026年10月5日(Cloudflare 公式ドキュメントで手順を確認)。画面のメニュー名・ボタン名は公式で確認できた英語表記のまま書き、図は実物の UI を写したものではありません。 ドメインは example.com、トークンは <TUNNEL_TOKEN> と伏せています。

用意するもの

  • Cloudflare のアカウント(無料プランで足ります)
  • 自分のドメイン(場面 3 のお試しだけなら不要。無ければ購入が必要で、Cloudflare Registrar でも買えます)
  • ターミナルでコマンドを打てる PC(Mac で説明します。Windows は補足)
  • 公開中は PC を起動したままにしておくこと
  • Access(メール認証)を使う場合、Zero Trust の組織作成で支払い情報の入力を求められます(Free plan なら課金されません)

この記事でわかること

  • 外から自宅の PC に届かない理由と、ポート開放をせずに通す方法
  • アカウント不要で 2 行打つだけのお試し(URL は誰でも開ける)
  • 自分のドメインで、https の付いた固定のアドレスにする手順
  • 許可したメールアドレスの人だけが入れるようにする手順(先に関所を作る)
  • 2 つ目のアプリを同じトンネルで出す方法と、本番に進む前に確認すること

自宅の PC では開けるのに、外からは開けない

自分の PC でアプリを起動すると、ブラウザで http://localhost:3000 のような住所で開けます。ところが家の外のスマホで同じ住所を打ってもつながりません。

localhost は「このコンピューター自身」を指す名前です。家の中の PC だけに通じる住所で、外の世界からはたどり着けません。 アプリの起動方法そのものはアプリごとに違うため扱いません。「ブラウザで localhost のアドレスを開くと表示される」状態から始めます。

外から届かない理由と、2 つの通し方

外からの通信は、家のルーターで止まります。家の中の機器は外から直接は見えない作りになっているからです。

通す方法は 2 つ。1 つ目はポート開放。ルーターに穴を開けて、外からの特定の通信を PC に流します。家の中へ入る口を常に開けておくことになります。

2 つ目が Cloudflare Tunnel。PC 側から Cloudflare へ外向きに接続を張り、その上を通信が双方向に流れます。受信ポートを開けず、公開 IP も不要です (公式: "No open inbound ports. No public IPs. No attack surface.")。

守られるのは「ルーターに穴を開けない」ところまでです。ホスト名を付けて公開したアプリは、Access を掛けなければネット上の誰でも開けます。 誰が入れるかを絞るのは Access の役目です(場面 7)。

  • トンネル — 自宅 PC から Cloudflare へ外向きに張る通り道。名前と UUID が付く
  • cloudflared — PC に入れる小さな常駐プログラム。トンネルを張る役

公式: Cloudflare Tunnel

まず試す: アカウント不要の Quick Tunnel

仕組みを体で理解するには、まず Quick Tunnel です。Cloudflare アカウントもドメインも要りません。 Mac の「ターミナル」で 2 行打つだけ。Homebrew が無ければ先に Homebrew のインストールと基本コマンド を済ませてください。

brew install cloudflaredcloudflared tunnel --url http://localhost:3000

cloudflared が表示する trycloudflare.com の URL を、外のスマホで開くと自宅のアプリが表示されます。

URL を知っている人は誰でもアクセスできます。 cloudflared を止めると URL は使えなくなり、作るたびにホスト名が変わります。 稼働保証はなく、Server-Sent Events(AI のチャットで返答を少しずつ表示する画面などで使われる仕組み)には対応していません。 テストと開発用で、本番には次の場面からの手順で作ります(公式: "Quick Tunnels are for testing and development.")。

Windows の場合: GitHub Releases の .exe / .msi を入れます。自動更新されないので手動更新が必要です。

詳しい人向け: Debian / Ubuntu(APT)・Docker・ファイアウォール

Debian / Ubuntu は公式の 3 手順:

sudo mkdir -p --mode=0755 /usr/share/keyringscurl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/nullecho "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main" | sudo tee /etc/apt/sources.list.d/cloudflared.listsudo apt-get update && sudo apt-get install cloudflared

Docker で動かす場合(本番のトンネル用。トークンは伏せ字):

docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>

制限の強いファイアウォールの内側なら、事前にポート 7844 で Cloudflare に届くか確認します(公式の Tip)。

公式: Quick Tunnels / Downloads

本番に進む前に確認する 3 つ

  1. 動画・大容量ファイルの配信。 公開ホスト名の通信は Cloudflare を経由します。Free / Pro / Business では、動画やその他の大きなファイルを配るのに指定の有料サービスが必要と Service-Specific Terms に書かれていて、Tunnel の公開ホスト名もこの対象です。アップロード上限は Free 100 MB / Pro 100 MB / Business 200 MB / Enterprise Up to 5 GB。
  2. 自宅回線の約款。 自宅回線でサーバーを公開してよいかは Cloudflare の範囲外です。契約しているプロバイダの約款で確認してください。
  3. 他人・他社のデータを置くなら。 自宅 PC は停電・故障・盗難・回線断の影響をそのまま受けます。個人情報を預かる責任も含めて、置いてよいデータかを先に考えます。 誰にどのデータを見せるかを先に決める手順は AIに社内データを使わせる前に決める権限管理の3層と5ステップ にまとめています。

公式: Delivering videos with Cloudflare / Upload limits

ドメインを Cloudflare に載せる(ネームサーバーの変更)

本番で固定の住所を使うには、自分のドメインが Cloudflare に載っている必要があります。ドメインが無ければ購入が必要で、Cloudflare Registrar でも買えます(金額はここには書きません)。

  1. ダッシュボードの Domains → Onboard a domain で example.com のようなサブドメインの付かないドメインを入れ、プランを選ぶ
  2. 取り込まれた DNS レコードの一覧を確認する(会社のメールやホームページに使っているドメインなら、漏れが無いか)
  3. Cloudflare から 2 つのネームサーバーが割り当てられる
  4. ドメインを買った登録業者(レジストラ)の管理画面で、ネームサーバーをその 2 つに書き換える
  5. Cloudflare 側で Active になれば完了

ネームサーバーはドメインの DNS レコードを持ち、「この名前はどこへつなぐか」の問い合わせに最終的な答えを返すサーバーです。これを Cloudflare に向けると、Cloudflare がドメインの案内係になります。

会社のドメインのネームサーバーを変えると、メールやホームページの行き先も Cloudflare が案内するようになります。管理している制作会社・担当者がいれば変更前に相談を。 試すだけなら試験用の別ドメインが安全です。

  • Free / Pro プランで使える DNS 構成はこの「フルセットアップ」だけです
  • レジストラ側で DNSSEC(DNS の応答が改ざんされていないことを署名で確かめる仕組み)が有効なら、変更前に無効にします。有効のまま変えると到達不能になりえます

公式: Add a site / Zone setups

トンネルを作って PC に常駐させる

公式は、ダッシュボードで作る方法をほとんどの用途に推奨しています(公式: "Cloudflare recommends creating a remotely-managed tunnel for most use cases.")。

  1. Networking > Tunnels を開き、Create Tunnel
  2. トンネル名を入れて、もう一度 Create Tunnel
  3. Setup Environment で PC の OS とアーキテクチャを選ぶ
  4. Install and Run に出るコマンドをそのままコピーし、新しいターミナルで実行する(Quick Tunnel を動かしている画面には続けて打たない)
  5. つながったら Continue。一覧に Healthy と出れば成功

参考までに、公式ドキュメントにある同種のコマンドはこの形です(トークンは伏せ字)。

sudo cloudflared service install <TUNNEL_TOKEN>

トークンは秘密情報です。 トークンを持つ人は誰でもこのトンネルを動かせます(公式: "Anyone with the token can run the tunnel.")。

このコマンドは cloudflared をサービスとして登録します(Linux は systemd、macOS は launch agent / launch daemon)。PC を起動すれば自動で立ち上がり、動き続けます。 公開されるのは PC が動いている間だけで、スリープや電源オフ中は外から開けません(DNS レコードは残り、訪問者には 1016 エラーが出ます)。

公式: Get started / Tunnel tokens / Run as a service

先に Cloudflare Access で、メール認証の関所を作る

ホスト名を付けて公開した時点で、ネット上の誰でも開ける状態になります。公式はルートを作る前に Access application を作ることを推奨しています (公式: "We recommend creating an Access application before setting up the tunnel route.")。

Cloudflare Access は、アプリの手前で「誰か」を確認する関所です。既定は拒否で、Allow ポリシーに一致した人だけ通します。 メールアドレスに使い捨てのコードを送る One-time PIN なら、外部サービスの連携なしで始められます。

  1. Zero Trust の組織を作る。プラン選択と支払い情報の入力を求められますが、Free plan を選べば課金されません
  2. Zero Trust > Integrations > Identity providers → Add new identity provider → One-time PIN(新しい組織では自動では入らないので自分で追加する)
  3. Zero Trust > Access controls > Applications → Create new application → Self-hosted and private
  4. Add public hostname で、ドメインのドロップダウンから自分のドメインを選ぶ
  5. Access policies でポリシーを作る。Action は Allow、Rules は Include、Selector は自分のメールだけなら Emails(例 alice@example.com)、ドメイン単位なら Emails ending in(例 @example.com)
  6. ログイン方法で One-time PIN を選ぶ。1 つだけなら Apply instant authentication をオン
  7. Session Duration を選び、Create

公式: Self-hosted public application / One-time PIN

ホスト名と PC のアプリを結ぶ(Published application)

この操作で、外から届くようになります。 Access を先に作ってあるので、許可したメールアドレスの人だけが入れます。

  1. Networking > Tunnels で自分のトンネルを選び、Routes → Add route
  2. Published application を選ぶ
  3. Hostname でサブドメイン(例 app)を入れ、ドロップダウンからドメイン(例 example.com)を選ぶ
  4. Service URL に PC 側のアドレス(例 http://localhost:3000)
  5. Add route

登録すると、DNS に CNAME レコードが自動で増えます。向き先は <UUID>.cfargotunnel.com(トンネルの UUID)。CNAME は、ある名前を別の名前に向ける DNS レコードです。

古い解説記事にある「Public hostname」は、現在の画面では Routes → Add route → Published application。メニューも Zero Trust > Networks > Tunnels から Networking > Tunnels に移っています。

公式: Routing

Wi-Fi を切ったスマホで https を開く → PIN → アプリ

Wi-Fi を切ったスマホ(モバイル回線)で https://app.example.com を開きます。先にメールアドレスの入力画面が出るので、許可したアドレスを入れて Send login code。届いた PIN を貼って Sign in。 アドレスが https:// で始まり、警告が出ずにアプリが表示されれば成功です。

  • PIN は最初の要求から 10 分で失効し、1 回限り。送信元は noreply@notify.cloudflare.com(迷惑メール対策で許可リストに入れる対象)
  • 許可されていないメールには送られませんが、画面は常に「A code has been emailed to you」と出ます(仕様)
  • HTTPS の証明書は無料。Cloudflare に載せて Active になったドメインに自動発行・更新されます。対象はルートドメインと 1 階層目のサブドメイン(app.example.com は対象)。a.b.example.com のような 2 階層以上は Advanced Certificate が必要
  • Service URL が http:// でも、外から来た HTTPS の通信を cloudflared が PC 内のアプリへ HTTP で渡します

公式: Universal SSL / One-time PIN

2 つ目のアプリを、同じトンネル・別のホスト名で出す

同じ PC で動かす 2 つ目のアプリ(例: 在庫管理ツール http://localhost:5000)も、トンネルは 1 本のまま出せます。Routes → Add route をホスト名ごとに繰り返すだけです(例 inventory.example.com)。

Access application はホスト名ごとに作ります。 2 つ目のホスト名にも、場面 7 と同じ手順で Access を掛けてください。

CLI で管理する場合の config.yml(詳しい人向け)

CLI で管理する場合は、設定ファイル config.yml の ingress(振り分け表)に書きます。公式例の形をそのまま使い、ホスト名とポートだけ置き換えた例です。

tunnel: <Tunnel-UUID> credentials-file: /root/.cloudflared/<Tunnel-UUID>.json ingress: - hostname: app.example.com service: http://localhost:3000 - hostname: inventory.example.com service: http://localhost:5000 - service: http_status:404
  • ルールは上から順に評価され、最初に当たったものが使われます
  • 最後の catch-all は必須です。どのホスト名にも当たらない要求には http_status:404 を返します。検証は cloudflared tunnel ingress validate
  • cfargotunnel.com のサブドメインは同じ Cloudflare アカウントの DNS レコードからしか通りません(UUID を知られても他アカウントからは使えない)

公式: Configuration file

NAS やファイル共有(SMB)を外から使いたい場合

NAS は別の機器なので、上の例のようにそのまま出すことはできません。NAS の管理画面をそのままネットに出すのは勧めません。公式は SMB について 2 つの道を並べています。

  • 私設ネットワーク: 利用者が Cloudflare One Client(旧 WARP)を入れて Zero Trust 組織に登録し、プライベート IP へ届く経路を作る
  • 公開ホスト名 + cloudflared access: 利用者が自分の PC で次を実行し、SMB クライアントで localhost:8445 につなぐ。既定では誰でもホスト名に接続できるので Access application の作成が推奨
cloudflared access tcp --hostname smb.example.com --url localhost:8445

公式: SMB / Private networks

まとめ(手順の一覧)

  1. Quick Tunnel で試す → 規約・約款・置くデータを確認
  2. ドメインを Cloudflare に載せる(ネームサーバー変更 → Active)
  3. Networking > Tunnels → Create Tunnel → 画面のコマンドを実行 → Healthy
  4. 先に Access application(One-time PIN、許可するメール)を作る
  5. Routes → Add route → Published application。スマホで https を開き PIN を入れて完成
この記事で扱っていないこと
  • Install and Run に実際に出るコマンドの文字列(画面のものをそのままコピー)
  • 日本語表示のメニュー名、レジストラ側の変更画面、有効になるまでの所要時間
  • Access の無料枠の人数(公式の料金ページで確認)

公式の全体像は Cloudflare Tunnel、Get started(いずれも developers.cloudflare.com、英語)にあります。

次に読む