このガイドでは、cloudflared を使って Azure 仮想マシンを Cloudflare に接続し、Cloudflare Tunnel 経由で Web アプリケーションを公開する手順を説明します。
-
Azure ポータルで 仮想マシン > 作成 > Azure 仮想マシン を開きます。
-
リソースグループ を選ぶか、新しいグループを作成します。
-
VM の名前を入力し、リージョンを選びます。イメージ は Ubuntu Server 24.04 LTS を選びます。サイズ は適切なサイズ(例: Standard_B1s)を選びます。
-
管理者アカウント で SSH 公開キー を選び、キーペアを入力します。
-
受信ポート規則 で SSH(
22)を許可します。テスト用に HTTP(80)と HTTPS(443)も許可します。
-
確認および作成 を選び、続けて 作成 を選びます。
-
VM が起動したら、概要ページから パブリック IP アドレス をコピーします。
-
インスタンスへ SSH します。
ssh -i "your-key.pem" azureuser@<PUBLIC_IP> -
sudo suを実行し、VM の管理者権限を取得します。 -
テスト用に、ポート
80で簡易な Apache Web サーバーをデプロイできます。apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html> EOF -
Apache サーバーが動作していることを確認するには、ブラウザーで
http://<PUBLIC_IP>を開きます(httpsではなくhttpで接続してください)。Hello Cloudflare! のテストページが表示されます。
- Cloudflare ダッシュボード ↗ で Networking > Tunnels を開きます。
- Create Tunnel を選び、名前(例:
azure-tunnel)を入力します。 - Create Tunnel を選びます。
- Setup Environment で Debian 64-bit を選びます。
- インストールコマンドをコピーし、Azure VM 上で実行します。
- トンネルが接続されたら、Continue を選びます。
- Routes で Add route > Published application を選びます。
- ホスト名(例:
hellocloudflare.<your-domain>.com)を入力します。 - Service に
http://localhost:80を入力します。 - Add route を選びます。
テストするには、ブラウザーで設定したホスト名を開きます。Hello Cloudflare! のテストページが表示されます。
Azure VM を保護するには、ネットワークセキュリティグループ (NSG) ↗ を設定し、すべての受信トラフィックを拒否して、Cloudflare Tunnel の IP アドレス への送信トラフィックだけを許可できます。NSG 規則は優先度で評価されます。許可規則に一致しないトラフィックは、既定の拒否規則でブロックされます。そのため、カスタムの受信規則はすべて削除し、必要な送信規則だけを残して構いません。
NSG 規則を設定したあと、Cloudflare Tunnel 経由で 公開ホスト名 からサービスにアクセスできることを確認します。Cloudflare Tunnel の外からはサービスにアクセスできないはずです。たとえば、VM のパブリック IP への直接アクセスはできなくなります。