ホスティング
アプリのフロントエンドをバックエンドのすぐ隣で公開します。ビルド済みのサイトをアップロードすれば、すぐに安全なアドレスが付き、最近のバージョンにワンクリックで戻せます。
しくみ
- サイトは名前とアドレスです。
my-appというサイトはhttps://my-app.espohost.comで配信されます。1つのプロジェクトに複数のサイトを作れます。 - アップロードのたびにデプロイが作られます。これは変更されないファイルのコピーです。サイトが表示するのは常に1つのデプロイ(公開中のもの)なので、新しいバージョンを公開しても古いものは変わりません。
- Espobase はファイルをそのまま配信し、ホスティングサーバーではあなたのコードを実行しません。サーバー側の処理が必要なときは、ページからプロジェクトの REST API や Edge Function を呼び出してください。
1. ダッシュボードから公開する
- プロジェクトを開き、左メニューのホスティングを選んでサイトを作成します。名前、アドレス、そして React や Vue などのアプリではシングルページアプリのスイッチを設定します。
- フォルダを公開をクリックし、
distやoutなどのビルドフォルダを選びます。隠しファイルはアップロードされません。 - ブラウザが各ファイルの指紋を計算し、同じファイルは1回だけアップロードします。完了すると、新しいデプロイが公開されます。
- サイトのカードに表示されたアドレスを開きます。
2. ターミナルや CI から公開する
espobase CLI なら、ビルドフォルダをコマンド1つで公開できます。
espobase deploy ./dist --site my-app # ✓ 42 files · 1.8 MB # → https://my-app.espohost.com
--message はデプロイにメモを付け、--no-activate は公開せずにアップロードだけ行います。CI ではサイトのデプロイ権限だけを持つトークン(アカウント設定 › デベロッパー)を作り、ESPOBASE_TOKEN として渡してください。このトークンは公開できますが、サイトの削除や設定変更はできません。espobase sites list でサイトの一覧を確認できます。
Git からビルド
- フォルダをアップロードする代わりに、Node プロジェクトを含む公開 Git リポジトリ(GitHub、GitLab、Bitbucket、Codeberg)からサイトをビルドできます。サイトのカードを開き、ビルドを設定を選んで、リポジトリとブランチ(必要ならフォルダ、コマンド、Node のバージョン 20 または 22)を入力し、今すぐビルドをクリックします。
- Espobase はリポジトリをクローンし、依存関係をインストール(ロックファイルに従って pnpm、yarn、npm)し、ビルドコマンドを実行します。各ステップは隔離された環境で動きます。出力フォルダ(
dist、build、out、public、または指定したもの)が新しいデプロイとして公開され、そのまま公開状態になります。 - 1回のビルドで使えるのは、CPU 2つ、メモリ 4 GB、10分までです。隔離環境から Espobase にはアクセスできず、Espobase のシークレットも持ちません。
- ビルド中のログはサイトのカードに表示され、ビルドと一緒に保存されます(直近30件を保持)。サイトは一度に1つのビルドだけを行い、待機中または実行中のビルドはキャンセルできます。
- ビルドにはプランのビルド時間を使用し、ビルドごとに切り上げて計算します。使い切ると、新しいビルドは次の請求サイクルまで待機します。すでに公開したサイトには影響しません。
- ビルド変数で、ビルドに環境変数として値を渡せます。公開値(
VITE_API_URLなど)はダッシュボードに表示され、シークレットは暗号化され、二度と表示されず、ログでも隠されます。ビルドがサイトのファイルに入れたものは訪問者全員が読めるため、フレームワークがサイトにコピーする変数(VITE_やNEXT_PUBLIC_で始まる名前)にシークレットを使わないでください。 - GitHub(Pro と Group): サイドバーの GitHub で GitHub アカウントを接続し、サイトのビルド設定でコードの場所に GitHub を選びます。プライベートリポジトリも使えます。Espobase はインストールしたアプリでビルド中だけ読み取ります。本番ブランチへのプッシュでサイトがビルド・公開され、同じリポジトリのプルリクエストごとに専用アドレスのプレビューが作られます(公開ですが検索エンジンには表示されず、プルリクエストを閉じると削除されます)。フォークからのプルリクエストはビルドされません。
サイトの配信のしかた
- HTTPS は自動です。各サイトは
espohost.comの下に専用のアドレスを持ちます。 /aboutはabout.htmlを、/docsはdocs/index.htmlを開きます。末尾のスラッシュがないフォルダのアドレスは、スラッシュ付きにリダイレクトされます。404.htmlを置くと、独自の「見つかりません」ページを表示できます。ない場合は簡易的な404が表示されます。- シングルページアプリをオンにすると、ファイルでないパスは
index.htmlを開くので、アプリのルーターが処理できます。/logo.pngのように拡張子付きで存在しないファイルは、引き続き404になります。 - ブラウザは訪問のたびにファイルを再確認する(
ETag)ため、新しいデプロイはすぐに反映されます。_next/static/のファイルは Next.js が内容のハッシュを付けており、1年間キャッシュされます。 - コンテントタイプはファイルの拡張子で決まります。
独自ドメイン
- ホスティングでサイトのカードを開き、ドメインを管理を選んで、
www.yourbrand.comのようなドメインを追加します。 - DNS プロバイダーで、表示された2つのレコードを設定します。ドメインの所有を証明する TXT レコード(そのまま残しておいてください)と、ご自身のドメインから
sites.espohost.comへの CNAME です。yourbrand.comのようなルートドメインは CNAME を設定できないため、代わりに表示された A レコードを設定してください。 - DNS を確認をクリックします。TXT レコードが見つかるとドメインが確認済みになり、HTTPS 証明書は最初のアクセス時に数秒で自動発行されます。
- サイトは、ご自身のドメインと
espohost.comのアドレスの両方で表示されます。ドメインを削除すると、すぐに表示されなくなります。 - プランのドメイン数が後から減った場合、超過分は配信されなくなりますが、保持されます。
帯域幅
- 帯域幅とは、サイトが訪問者に送信するデータ量です。請求サイクルごとに、組織内のすべてのサイトの合計で計算され、ホスティングページで確認できます。
- プランの帯域幅の75%、90%、100%に達するとメールが届きます。超過分のトラフィックに料金はかかりません。
- 100%から125%の間は、サイトは動作し続けます。125%を超えると、次の請求サイクルが始まるまで(または帯域幅の大きいプランに変更するまで)、訪問者には「帯域幅の上限に達しました」というページが表示されます。何も削除されません。
- トラフィックは1分ごとに集計されるため、上限を超えてから数分以内に一時停止が始まります。
バージョンとロールバック
- 各デプロイはサイトのカードに一覧表示されます。古いデプロイで公開するを選べばロールバック、新しいデプロイで選べば先へ進めます。動くのはポインターだけなので、即座に切り替わります。
- Espobase は各サイトの最新10件のデプロイを保持し、古いものは自動的に削除します。公開中のデプロイは削除されません。
- 公開とロールバックはデベロッパーができます。サイトの作成・名前変更・削除、シングルページアプリの設定変更、デプロイの削除は管理者が行います。すべての変更は監査ログに記録されます。
セキュリティ
- 公開したものはすべて誰でも見られます。ファイルにシークレットを入れないでください。公開可能キーは公開前提で、データは行レベルセキュリティのルールで守られます。シークレットキーは決してサイトに入れないでください。
- サイトは Espobase とは別のドメイン
espohost.comにあるため、サイトから Espobase の Cookie やサインインを読み取ることはできません。 - アップロードされた各ファイルは、申告された指紋とサイズで検証され、デプロイのファイル一覧にないものは配信されません。
プランと上限
- Free: ホスティングは含まれません。
- Pro: 1プロジェクトあたり10サイト、ホストされるファイルは10 GB、サイトごとに独自ドメイン1件、帯域幅は月250 GB、ビルドは月500分。
- Group: 1プロジェクトあたり50サイト、ホストされるファイルは100 GB、サイトごとに独自ドメイン5件、帯域幅は月1 TB、ビルドは月2,000分。
- 1つのデプロイは、最大10,000ファイル、1ファイル50 MB、合計500 MBまでです。1時間以内に完了しないアップロードは無効になります。
- ホストされるファイルは組織全体で数えられます。サイト数の少ないプランに変更すると、超過分のサイトは配信されなくなりますが、何も削除されません。
まだ利用できないもの
- サーバーでレンダリングするアプリ(サーバー付きの Next.js など)。静的エクスポートは現在でも使えます。