Lizard で SvelteKit をデプロイする

Lizard 向けの SvelteKit サーバーをビルドするには、@sveltejs/adapter-node を使用します。これにより build/ が生成され、port 3000 で node build によって起動されます。adapter は明示的にインストールして設定してください。adapter-auto をまだ使用している scaffold では、Node のデプロイ先は確立されません。

まずは、このレシピで使用する設定とファイルを含む完全なソース例から始めてください。

adapter を設定する

npm install --save-dev @sveltejs/adapter-node

svelte.config.js では、既存の preprocess やその他の設定はそのままにしつつ、kit.adapter を Node adapter に設定します。

import adapter from '@sveltejs/adapter-node';
 
export default {
  kit: { adapter: adapter() },
};

使用する予定のデプロイ adapter だけを残してください。特に、未使用の @sveltejs/adapter-static 依存関係があると、設定で adapter-node を import していても、現在の detector では static の経路が選ばれることがあります。

設定値
ビルドnpm run build、通常は vite build
Outputbuild/
ランタイムnode build
Host and portHOST=0.0.0.0、PORT=3000
サービスポート3000

本番サーバーをテストする

npm ci
npm run build
HOST=0.0.0.0 PORT=3000 ORIGIN=http://localhost:3000 node build

サーバーレンダリングされたページを開き、アプリに form action がある場合は送信してください。このガイドで使用する検出では、adapter のデフォルト出力パスをそのまま維持してください。

デプロイして公開 origin を設定する

CLI setup の後:

lizard init --name sveltekit-app
lizard add --service web
lizard up --service web --port 3000
lizard ps --json

ORIGIN には、デプロイ出力にある正確な公開 HTTPS origin を、パスなしで設定します。たとえば、このプレースホルダーを実際の URL に置き換えます。

lizard secrets set ORIGIN=https://YOUR_PUBLIC_HOST --service web

訪問者が使用する origin がカスタムドメインであれば、代わりにそちらを使用してください。変数変更後に forms を再確認してください。複数の許可された origins や proxy 由来の URL を使う場合は、SvelteKit Nodeサーバーガイド を読み、信頼する proxy headers を意図的に設定してください。

検証とトラブルシュート

lizard logs --build --service web --json と lizard logs --service web --json で build と runtime のログを確認します。内部ルートを直接開き、form を送信し、存在しないルートをリクエストしてください。

forms で cross-site submission error が報告される場合は、セキュリティチェックを無効にする前に ORIGIN を確認してください。node build がサーバーを見つけられない場合は、有効な adapter と出力パスを確認してください。lizardpack の経路を使うには、service command overrides は未設定のままにしてください。

Static SvelteKit サイト

必要なすべてのページを prerender できるアプリでは、@sveltejs/adapter-static、そのデフォルトの build/ 出力、および service port 80 を使用できます。その出力では server actions や request-time endpoints は実行できません。必要な routes に対して prerendering を設定してください。パッケージをインストールするだけでは不十分です。

@sveltejs/adapter-static をインストールし、svelte.config.js の adapter import を置き換えます。

import adapter from '@sveltejs/adapter-static';
 
export default {
  kit: { adapter: adapter() },
};

すべての routes を生成できるサイトでは、これを src/routes/+layout.js に追加します。

export const prerender = true;
export const trailingSlash = 'always';

未使用のデプロイ adapter は dependencies から削除してください。npm run build を実行し、build/ に必要な各ページが含まれていることを確認します。デフォルト出力では、service command overrides は未設定のままにし、port 80 で新しい service をデプロイしてください。新しい build は生成された HTML を配信し、存在しないページには HTTP 404 を返します。nginx に server レシピの port 3000 を再利用しないでください。

生成された HTML routes と SPA fallback のどちらを選ぶかは、静的ルートと404エラー を参照してください。フレームワークのオプションと制限については、SvelteKit静的アダプター を参照してください。

2026年9月9日のデプロイ確認とその制限については、テスト済みバージョンとクラウド結果 を参照してください。