Next.js アプリで PortPreview を使用するには、ポート 3000 で next dev を実行し、npx portpreview 3000 を起動し、OAuth リダイレクト、Webhook ルート ハンドラー、モバイル プレビュー、進行中の UI の共有に HTTPS URL を使用します。デプロイは必要ありません。
Next.js アプリをトンネリングする理由
Next.js は、マーケティング ページ、ダッシュボード、API ルート ハンドラーなどを 1 つのリポジトリに収めるなど、製品の公的な顔となることがよくあります。サードパーティは依然として localhost に到達できません。トンネルにより、next dev または next dev --turbo で反復する間、安定したパブリック HTTPS オリジンが提供されます。
- Webhook。
app/api/...ルートへのストライプ、クラーク、および POST の再送信。 raw-body パターンについては、Next.js webhook local testing を参照してください。 - OAuth。 開発中に
https://your-tunnel.portpreview.dev/api/auth/callback/...を Auth0、Google、または GitHub に登録します。 test OAuth callbacks locally を参照してください。 - モバイルと関係者のプレビュー。 トンネル リンクを QA または設計に送信します。 share a local dev server を参照してください。
クイックスタート
<オル>npm run dev (デフォルトのポート 3000)。npx portpreview 3000。https://....portpreview.dev URL をブラウザまたは携帯電話で開きます。トンネルの背後にある App Router API ルート
ルート ハンドラーは、元のヘッダーをそのままにしてプロキシされたリクエストを受信します。これは Webhook 署名に役立ちます。プロバイダーがノード暗号化を必要とする場合は、ノード ランタイム上で Webhook ルートを維持します。
// app/api/health/route.ts
export async function GET() {
return Response.json({ ok: true });
}
署名の検証については、JSON を解析する前に await request.text() をお読みください。本体をグローバルに読み取るミドルウェアは Webhook を破壊します。 middleware.ts マッチャーから /api/webhooks を除外します。
環境変数とパブリック URL
クライアント コードがそのパブリック オリジン (OAuth、絶対アセット URL) を認識する必要がある場合は、アクティブなトンネルを .env.local に保存します。
NEXT_PUBLIC_APP_URL=https://abc123.portpreview.dev
env ファイルを変更した後、next dev を再起動します。サーバーのみの Webhook シークレットの場合は、STRIPE_WEBHOOK_SECRET のようなプレフィックスのない変数を使用します。
WebSocket とカスタム サーバー
Next.js とともに socket.io を使用してカスタム ノード サーバーを実行する場合、PortPreview はデフォルトで WebSocket アップグレードを転送します。 Turbopack はトンネルの動作を変更せず、バンドラーのみを変更します。
セキュリティチェックリスト
.env.localをコミットしたり、URL を git にトンネルしたりしないでください。- トンネル上でも認証を使用して管理ルートとプレビュー ルートを保護します。
- 広く共有する場合は、トンネル セッションをローテーションします。
- localhost tunnel security を確認してください。
Next.js documentation では、ルート ハンドラーと環境の読み込みについて説明します。 Start PortPreview free Next.js 対応の HTTPS トンネル。
