無料でポート開放など面倒な設定不要でローカル環境を外部に公開できる「Cloudflare Tunnel」を使ってみた

レビュー

Cloudflare Tunnel」はローカル環境のアプリケーションを簡単に外部へ公開できるサービスです。「自宅サーバー」を出先から使うために必要なポート開放などのさまざまな設定を丸ごとスキップ可能なうえ、Cloudflare Accessと組み合わせれば複数ユーザーでの認証も設定可能です。今回はまずCloudflare Tunnelでローカル環境のサービスを外部からアクセスできるようにするところまでを試してみました。

Cloudflare Tunnel · Cloudflare Docs https://developers.cloudflare.com/tunnel/

以前、ローカルAIを動かすツール「Lemonade」をインストールしたうえで、Firefoxのチャット機能を完全ローカルAIにするなど活用していたのですが、このローカル環境で動いているAIを外部から使いたいと思っていました。

しかし、いわゆる自宅サーバーを設置するとなるとポート開放や固定グローバルIPアドレスの用意、リバースプロキシの構成や認証機構の構築などの手間がかかります。さらに、もともとのLemonadeがローカルで動かす前提の作りとなっており、そのままインターネットに公開するのは危険です。

そこで今回はCloudflare Tunnelを使用することにしました。Cloudflare Tunnelを使うと、ローカル環境で動作する「cloudflared」がCloudflare側へアウトバウンド接続を張り、その経路を通じて外部からローカルサービスへアクセスできるようになります。 ローカルネットワーク側で外向きの接続を作るだけなのでポート開放など受信側のネットワーク設定を変更せずに済むのが大きなメリットです。アクセスがCloudflare経由になるためHTTPS化や公開ホスト名の設定が簡単で、DDoSなどの攻撃に対する保護機能も使えるうえ、Cloudflare Accessを使うことで公開したURLに対して認証を設定してアクセスを制限することが可能です。

さっそくCloudflare Tunnelを設定していきます。まずCloudflareのダッシュボードにアクセスし、左上の検索欄に「トンネル」と入力。「Zero Trust > ネットワーク > トンネル」と書かれた項目をクリックします。

「トンネルを追加」をクリック。

「選択する Cloudflared」をクリックします。

分かりやすくトンネルの名前を付けて「トンネルを保存」をクリック。

コネクターをインストールする必要があります。「ダウンロード」の横にあるURLをクリックしてインストーラーをダウンロード。

インストーラーをダブルクリックするとコネクターがインストールされます。確認などはなく、画面が一瞬表示されて閉じればインストールは完了しています。何度もインストーラーを起動しないように注意してください。

続いてスタートメニューを開き、「powershell」と検索。ヒットした「Windows PowerShell」の項目から「管理者として実行する」をクリックします。

ブラウザに戻り、「次のコマンドを実行します:」の下のコマンドをクリックしてコピー。

右クリックでPowerShellに貼り付けてEnterキーで実行します。

ブラウザの画面をスクロールし、「コネクター」の欄に「接続済み」の表示が出ればOK。「次へ」をクリックします。

外部からアクセスするホスト名を設定し、ルーティング先の内部アドレスも設定します。「http://localhost:13305」で動くLemonadeサーバーにルーティングするよう設定して「セットアップを完了」をクリック。

外部から先ほど設定したホスト名でアクセスしてみると、ローカルで動いているLemonadeサーバーにアクセスできました。

このままでは誰でもアクセスできてしまうので、次回は認証を設定していきます。

・関連記事 SSHを使用したポート転送やトンネリングの設定をわかりやすく図示したビジュアルガイド - GIGAZINE

混乱しがちな「SSHトンネルの確立方法」をイメージ図とセットでまとめたコマンド集 - GIGAZINE

安全なVPNネットワークを簡単に構築できる「Tailscale」の仕組みとは - GIGAZINE

AdGuardが独自のVPNプロトコル「TrustTunnel」をオープンソース化 - GIGAZINE

公共の充電ポートを使うとスマホが乗っ取られるという「ジュースジャッキング」は本当に起こりうるのか? - GIGAZINE

関連記事: