ワイルドカード DNS、ルート、TLS を設定し、exposePort() のプレビュー URL を自分のドメインで使えるようにします。Worker とサンドボックスイメージのデプロイは Sandbox アプリケーションをデプロイする を参照してください。
プレビュー URL にはワイルドカード DNS が必要です。公開したポートごとに、https://8080-abc123.yourdomain.com のような一意のサブドメインが付くためです。
.workers.dev ドメインはワイルドカードサブドメインに対応していません。ローカル開発以外の公開ホスト名でプレビュー URL に到達する必要がある場合は、カスタムドメインが必要です。
- ドメイン付きの有効な Cloudflare ゾーン
exposePort()を使う Worker- Wrangler CLI がインストール済み
- サンドボックスアプリがすでに デプロイ可能(Worker + イメージ)
Cloudflare ダッシュボードでドメインを開き、A レコードを作成します。
- Type: A
- Name:
*(ワイルドカード) - IPv4 address:
192.0.2.0 - Proxy status: Proxied(オレンジの雲)
これで、すべてのサブドメインが Cloudflare のプロキシ経由になります。IP アドレス 192.0.2.0 は、プロキシ時に Cloudflare が認識するドキュメント用アドレス(RFC 5737)です。
Wrangler の設定にワイルドカードルートを追加します。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-sandbox-app",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-09-20",
"routes": [
{
"pattern": "*.yourdomain.com/*",
"zone_name": "yourdomain.com"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-sandbox-app"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-09-20"
[[routes]]
pattern = "*.yourdomain.com/*"
zone_name = "yourdomain.com"yourdomain.com を実際のドメインに置き換えます。これで、すべてのサブドメインリクエストが Worker に届き、Cloudflare が SSL 証明書を自動で発行できるようになります。
ルート設定を反映するため、Worker を再デプロイします。
npx wrangler deployこのデプロイでサンドボックスイメージやパッケージも変わる場合は、ロールアウトとパッケージ/イメージの組み合わせについて Sandbox アプリケーションをデプロイする に従ってください。ルートだけの変更なら、通常のデプロイで問題ありません。コンテナーイメージとインスタンスの更新を意図的にスキップするときだけ --containers-rollout=none を使います。
プレビュー URL が動くことを確認します。
// Extract hostname from request
const { hostname } = new URL(request.url);
const sandbox = getSandbox(env.Sandbox, "test-sandbox");
await sandbox.startProcess("python -m http.server 8080");
const exposed = await sandbox.exposePort(8080, { hostname });
console.log(exposed.url);
// https://8080-test-sandbox.yourdomain.comブラウザーで URL を開き、サービスにアクセスできることを確認します。
- CustomDomainRequiredError: Worker が
.workers.devだけにデプロイされていないこと、ワイルドカード DNS レコードとルートが正しく設定されていることを確認します。 - SSL/TLS エラー: 証明書の発行まで数分待ちます。DNS レコードがプロキシされていること、ダッシュボードの SSL/TLS モードが "Full" または "Full (strict)" であることを確認します。Worker がサブドメイン(例:
sandbox.yourdomain.com)にある場合、Universal SSL は第 2 レベルのワイルドカード*.sandbox.yourdomain.comをカバーしません。選択肢は、このページ先頭の TLS に関する注意 を参照してください。 - プレビュー URL が解決されない: ワイルドカード DNS レコードがあり、プロキシされていることを確認します。DNS 伝播まで 30〜60 秒待ちます。
- ポートにアクセスできない: サービスが
localhostではなく0.0.0.0にバインドしていること、Worker の fetch ハンドラーで最初にproxyToSandbox()を呼んでいることを確認します。
詳しいトラブルシューティングは Workers のルーティングドキュメント を参照してください。
- Sandbox アプリケーションをデプロイする - Worker とイメージのデプロイ
- プレビュー URL - プレビュー URL の仕組み
- サービスを公開する - ポート公開のパターン
- Tunnels API - 開発向けの設定不要な
*.trycloudflare.comURL - Workers のルーティング - 高度なルーティング設定
- Cloudflare DNS - DNS 管理