本文へスキップ

Vercel からの移行 ​

Zenavo では、Next.js アプリはサーバーレス関数ではなく、常駐する 1 つのサーバー(next start)として動き、静的サイトは Caddy が配信します。ほとんどのアプリはコードを変えずに移行できます。

Vercel と Zenavo の対応 ​

VercelZenavo
プロジェクトプロジェクト内のサービス
本番ブランチの Git デプロイpush でデプロイ
Preview デプロイ該当なし:別のブランチを追跡するサービスを追加するか、プロジェクトを複製
Serverless と Edge Functions1 つの Next.js サーバーの一部
環境変数変数。NEXT_PUBLIC_* はビルド引数
vercel.json の redirects、rewrites、headersnext.config.js、または静的サーバーの設定
Vercel Postgres、KV、Blobそのまま使い続けるか、データベースサービスに移す
Cron Jobs定期実行はまだありません:スケジューラーを持つワーカーサービスを動かします

1. アプリをデプロイする ​

  1. サーバーを追加し、プロジェクトを作成します。
  2. Add Service → GitHub でリポジトリを選び、モノレポならルートディレクトリを設定します。
  3. Next.js か静的サイトのガイドに従います。Next.js は next build でビルドして next start で起動し、Vite などの静的ビルドは出力フォルダーから配信されます。

Vercel と動きが違う点:

  • ISR と画像キャッシュは next start でも動きますが、キャッシュはコンテナ内にあり、デプロイのたびに空から始まります。
  • Middleware はエッジではなく Node.js のサーバーで動きます。
  • vercel.json の redirects、rewrites、headers は読まれません。next.config.js の redirects()、rewrites()、headers() に移してください。

2. 変数をコピーする ​

sh
vercel env pull .env.production --environment=production

その行をサービスの Variable タブ → Edit Raw Variables に貼り付けます(VERCEL_* は除きます)。NEXT_PUBLIC_*(静的サイトなら VITE_*)はビルド時に必要なので、すべて Settings → Build → Build arguments に移します。終わったらファイルは削除してください。

3. データ ​

Vercel Marketplace のデータベース(Neon、Upstash、Supabase など)は、接続文字列を使えば Zenavo からもそのまま使えます。PostgreSQL を自分のサーバーに移すなら、pg_dump --no-owner --no-acl "$POSTGRES_URL" | gzip > vercel.sql.gz でプレーンな SQL にダンプし、新しい PostgreSQL サービスの Backup & Restore タブでアップロードして復元します(バックアップのアップロード)。

4. ドメインを切り替える ​

Networking でドメインを設定し、A レコードでサーバーに向けます。ドメインが Vercel のネームサーバーを使っている場合は、Vercel DNS でレコードを変えるか、先にネームサーバーを移してください(ドメインと HTTPS)。

Zeabur とは関係ありません。