本文へスキップ

静的サイト ​

Zenavo は静的サイトを Caddy でポート 8080 から配信し、デプロイのたびにリポジトリからビルドします。

プレーンな HTML ​

index.html があり package.json がないリポジトリは static として検出され、ファイルがそのまま配信されます。

ビルドするサイト(Vite、React、Vue、Svelte、Astro) ​

Vite、Create React App、Vue、static アダプターを使う SvelteKit、Astro など、フレームワークが静的ファイルを出力する Node.js プロジェクトは、build スクリプトでビルドされ、出力フォルダーが配信されます。zbpack は各フレームワークのフォルダー(Vite は dist、Create React App は build)を知っていて、Build Plan Preview に outputDir として表示されます。別のフォルダーなら Settings → Build → zbpack options で設定します。

sh
ZBPACK_OUTPUT_DIR=public

シングルページアプリ ​

クライアント側のルーター(React Router、Vue Router)は設定なしで動きます。拡張子がなくファイルにも一致しないパスは index.html を返し、/assets/app.js のように見つからないアセットは 404 のままです。

静的サイトの変数 ​

静的サイトにはサーバーがないので、Vite の VITE_*(import.meta.env.VITE_API_URL)や Create React App の REACT_APP_* などの変数は、ビルド時に存在する必要があります。Variable タブの変数は実行中のサービスにしか渡されないので、これらは Settings → Build → Build arguments に設定してください。例:

sh
VITE_API_URL=https://api.example.com

Dockerfile がなくてもビルドに渡ります。ビルド引数を参照してください。自分の Dockerfile では、ビルドコマンドの前にそれぞれ ARG 行で宣言します。バンドルの中身はすべて公開されるので、これらの変数にシークレットを入れないでください。

デプロイ ​

  1. Add Service → GitHub で、リポジトリとブランチを選びます。
  2. Next をクリックし、プレビューに static、または nodejs とフレームワーク・出力フォルダーが表示されていることを確認して Deploy をクリックします。
  3. Networking タブでドメインを生成するか、自分のドメインを設定します。

その他のジェネレーター ​

Hugo、Jekyll、MkDocs や zbpack が知らないジェネレーターでは、ビルド済みの出力をコミットして ZBPACK_OUTPUT_DIR をそこに向けるか、サイトをビルドして配信する Dockerfile を追加します。

dockerfile
FROM hugomods/hugo:exts AS build
WORKDIR /src
COPY . .
RUN hugo --minify

FROM caddy:2-alpine
COPY --from=build /src/public /usr/share/caddy
EXPOSE 80

よくある問題 ​

症状原因
/ 以外のページを再読み込みすると 404自分の Dockerfile のサーバーに index.html へのフォールバックがありません。Caddy なら try_files {path} /index.html を使うか、生成されるビルドを使ってください。
画面が真っ白で、コンソールにアセットの 404 が出るビルドのベースパスが / ではありません。vite.config の base や package.json の homepage を確認してください。
VITE_* の値が undefinedVariable タブにしか設定されておらず、ビルドに届いていません。ビルド引数に設定して再デプロイしてください。自分の Dockerfile なら ARG での宣言も必要です。

Zeabur とは関係ありません。