Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

はじめに

最終更新 Markdown で表示Agent セットアップ

このガイドでは、最初の Workers VPC Service を作成し、Worker からプライベートネットワーク内のリソースにアクセスできるようにします。

Workers アプリケーションを作成し、プライベートネットワークに Tunnel を作って Cloudflare に接続します。その後、Worker からアクセスしたいプライベートネットワーク上のサービス向けに VPC Services を設定します。

前提条件

始める前に、次を完了してください。

  1. Cloudflare アカウント に登録します。
  2. Node.js をインストールします。

Node.js のバージョンマネージャー

権限の問題を避け、Node.js のバージョンを切り替えられるよう、Voltanvm などの Node バージョンマネージャーを使います。このガイドの後半で説明する Wrangler には、Node バージョン 16.17.0 以降が必要です。

さらに、次が必要です。

  • プライベートネットワークへのアクセス(ローカルネットワーク、AWS VPC、Azure VNet、GCP VPC、またはオンプレミスネットワーク)
  • 既存の VPC Services を Worker からバインドするための Connectivity Directory Bind ロール
  • または、VPC Services を作成して Worker からバインドするための Connectivity Directory Admin ロール

1. 新しい Worker プロジェクトを作成する

Wrangler で新しい Worker プロジェクトを作成します。

npm create cloudflare@latest -- workers-vpc-app

セットアップでは、次のオプションを選びます。

  • What would you like to start with? では、Hello World example を選びます。
  • Which template would you like to use? では、Worker only を選びます。
  • Which language do you want to use? では、TypeScript を選びます。
  • Do you want to use git for version control? では、Yes を選びます。
  • Do you want to deploy your application? では、No を選びます(デプロイ前にいくつか変更します)。

プロジェクトディレクトリに移動します。

cd workers-vpc-app

2. Cloudflare Tunnel をセットアップする

Cloudflare Tunnel は、プライベートネットワークから Cloudflare へのセキュアな接続を作ります。このトンネルにより、Workers はプライベートリソースに安全にアクセスできます。外部クラウドの仮想マシンまたはコンテナでトンネルを作成できます。このチュートリアルでは、ローカルデスクトップでも構いません。

  1. Workers VPC ダッシュボード を開き、Tunnels タブを選びます。

  2. Create を選び、新しいトンネルを作成します。

  3. トンネル名を入力し(例: workers-vpc-tunnel)、Save tunnel を選びます。

  4. オペレーティングシステムとアーキテクチャを選びます。ダッシュボードに、環境向けの具体的なインストール手順が表示されます。

  5. 表示されたコマンドに従い、cloudflared をダウンロードしてインストールします。一意のトークン付きのサービスインストールコマンドを実行します。

トンネルが正常に接続されると、ダッシュボードが確認を表示します。

Cloudflare Tunnel 向けにプライベートネットワークを設定する

トンネルが接続されたら、Workers にアクセスさせたいサービスへトンネルが到達できることを確認します。トンネルは、Workers VPC に公開したい内部リソースに到達できるマシンにインストールします。外部クラウドでは、トンネルが目的のサービスにアクセスできるよう、Access-Control-Lists、Security Groups、または VPC Firewall Rules の設定が必要な場合があります。

3. VPC Service を作成する

トンネルが動いているので、Workers が内部リソースにアクセスするために使う VPC Service を作成します。

  1. Workers VPC ダッシュボード を開き、VPC Services タブを選びます。

  2. Create を選び、新しい VPC Service を作成します。

  3. VPC Service の Service name を入力します(例: my-private-api)。

  4. Tunnel ドロップダウンからトンネルを選びます。新しいトンネルが必要な場合は Create Tunnel を選びます。

  5. 内部サービスの Host or IP address を入力します(例: localhostinternal-api.company.local、または 10.0.1.50)。

  6. Ports を設定します。次のどちらかを選びます。

    • 標準の HTTP(80)と HTTPS(443)向けに Use default ports
    • カスタムの HTTP および HTTPS ポートを指定する Provide port values
  7. DNS Resolver を設定します。次のどちらかを選びます。

    • トンネル組み込みの DNS 解決を使う Use tunnel as resolver
    • Custom resolver を選び、DNS リゾルバーの IP を入力します(例: 8.8.8.8
  8. Create service を選び、VPC Service を作成します。

ダッシュボードに、一意の Service ID 付きの新しい VPC Service が表示されます。次の手順のためにこの Service ID を保存します。

HTTP サービスの場合:

npx wrangler vpc service create my-private-api \
  --type http \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --hostname <YOUR_HOSTNAME>

TCP サービスの場合(例: PostgreSQL データベース):

npx wrangler vpc service create my-database \
  --type tcp \
  --tcp-port 5432 \
  --app-protocol postgresql \
  --tunnel-id <YOUR_TUNNEL_ID> \
  --ipv4 <YOUR_IPV4_ADDRESS>

次を置き換えます。

  • <YOUR_TUNNEL_ID> を手順 2 のトンネル ID
  • <YOUR_HOSTNAME> を内部サービスのホスト名(例: internal-api.company.local
  • <YOUR_IPV4_ADDRESS> をサービスのプライベート IP アドレス(例: 10.0.1.50

次もできます。

  • --hostname <YOUR_HOSTNAME>--ipv4 <YOUR_IPV4_ADDRESS>--ipv6 <YOUR_IPV6_ADDRESS>、またはデュアルスタック構成の両方に置き換えて、IP アドレスでサービスを作成する
  • --http-port <PORT> および/または --https-port <PORT> を追加して、HTTP サービスにカスタムポートを指定する(例: --http-port 8080 --https-port 8443
  • --cert-verification-mode で TLS 証明書の検証モードを設定する(verify_fullverify_ca、または disabled

コマンドはサービス ID を返します。次の手順のために保存します。

権限エラーが出る場合は、必要なロール を参照してください。

4. Worker を設定する

Wrangler 設定ファイルに VPC Service バインディングを追加します。

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "workers-vpc-app",
	"main": "src/index.ts",
	// Set this to today's date
	"compatibility_date": "2026-09-20",
	"vpc_services": [
		{
			"binding": "VPC_SERVICE",
			"service_id": "<YOUR_SERVICE_ID>"
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "workers-vpc-app"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-09-20"

[[vpc_services]]
binding = "VPC_SERVICE"
service_id = "<YOUR_SERVICE_ID>"

<YOUR_SERVICE_ID> を手順 3 のサービス ID に置き換えます。

5. Worker のコードを書く

VPC Service バインディングを使うよう Worker を更新します。次の例です。

export default {
	async fetch(request, env, ctx): Promise<Response> {
		const url = new URL(request.url);

		// This is a simple proxy scenario.
		// In this case, you will need to replace the URL with the proper protocol (http vs. https), hostname and port of the service.
		// For example, this could be "http://localhost:1111", "http://192.0.0.1:3000", "https://my-internal-api.example.com"
		const targetUrl = new URL(
			`http://<ENTER_SERVICE_HOST>:<ENTER_SERVICE_PORT>${url.pathname}${url.search}`,
		);

		// Create new request with the target URL but preserve all other properties
		const proxyRequest = new Request(targetUrl, {
			method: request.method,
			headers: request.headers,
			body: request.body,
		});

		const response = await env.VPC_SERVICE.fetch(proxyRequest);

		return response;
	},
} satisfies ExportedHandler<Env>;

6. ローカルでテストする

Worker をローカルでテストします。リモートの VPC Services を使う必要があります。wrangler.jsonc 設定ファイルで構成した Workers remote bindings を使うか、npx wrangler dev --remote を使います。

npx wrangler dev

http://localhost:8787 にアクセスし、Worker からプライベートネットワークへの接続をテストします。

7. Worker をデプロイする

テストが完了したら、Worker をデプロイします。

npx wrangler deploy

Worker はデプロイ済みになり、Cloudflare Tunnel 経由でプライベートネットワークのリソースに安全にアクセスできます。権限エラーが出る場合は、必要なロール を参照してください。

次のステップ

役に立ちましたか?