コンテンツにスキップ
箱庭諸島2 TypeScript 版
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

Cloudflare に手動でデプロイする

@hakoniwajs/cloudflare をインストールした Worker プロジェクトを作り、Wrangler でデプロイします。

@hakoniwajs/cloudflare パッケージをインストールした小さな Worker プロジェクトを作り、Wrangler でデプロイします。テンプレートリポジトリ を「Use this template」でコピーして使うのが手軽です。

必要なもの

プロジェクトを作る

npm install @hakoniwajs/cloudflare wrangler

Worker のエントリ (src/worker.ts) は、@hakoniwajs/cloudflare が提供する Worker・Durable Object・キャッシュ用のエントリポイント (CachedPages) をそのまま export するだけです。

import { createWorker } from "@hakoniwajs/cloudflare";

export { CachedPages, HakoniwaGame } from "@hakoniwajs/cloudflare";

export default createWorker();

wrangler.jsonc の例です (完全版はテンプレートリポジトリを参照してください)。

{
  "name": "hakoniwa",
  "main": "src/worker.ts",
  "compatibility_date": "2026-08-22",
  "compatibility_flags": ["nodejs_compat"],
  // ゲームの静的ファイル (画像・CSS) は @hakoniwajs/core パッケージ内の public/ から配信する
  "assets": { "directory": "./node_modules/@hakoniwajs/core/public" },
  // Workers Cache。入口 (default) は無効にし、CachedPages だけ有効にする
  "cache": { "enabled": true },
  "exports": {
    "default": { "type": "worker", "cache": { "enabled": false } },
    "CachedPages": { "type": "worker", "cache": { "enabled": true } },
  },
  "durable_objects": {
    "bindings": [{ "name": "GAME", "class_name": "HakoniwaGame" }],
  },
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["HakoniwaGame"] }],
  // ターン進行のトリガー (15 分ごと)
  "triggers": { "crons": ["*/15 * * * *"] },
  // 管理者のメールアドレスを固定したい場合だけ書く (省略した場合は /admin/setup で登録する)
  "vars": {
    "HAKONIWA_ADMIN_EMAILS": "you@example.com",
  },
}

name は Worker の名前 (公開 URL の https://<name>.<サブドメイン>.workers.dev の部分) になります。必要に応じて書き換えてください。

Workers Cache (cache.enabled: true) を有効にすると静的アセットへのリクエストも Workers のリクエストとして課金対象になります。

デプロイする

npx wrangler login
npx wrangler deploy

必須の secret はありません。ログインのセッションなどに使う秘密鍵 (HAKONIWA_AUTH_SECRET) は、未設定なら初回の起動時に自動で生成されて Durable Object に保存されます。自分で管理したい場合は npx wrangler secret put HAKONIWA_AUTH_SECRET で登録してください (openssl rand -base64 32 などで生成した 32 バイト以上のランダムな文字列)。

X / Discord ログインやメール送信を使う場合は、次の secret も登録します (詳しくは ログイン方法の設定)。

npx wrangler secret put HAKONIWA_X_CLIENT_ID
npx wrangler secret put HAKONIWA_X_CLIENT_SECRET
npx wrangler secret put HAKONIWA_DISCORD_CLIENT_ID
npx wrangler secret put HAKONIWA_DISCORD_CLIENT_SECRET
npx wrangler secret put HAKONIWA_RESEND_API_KEY

設定の書き方

  • 秘密でない設定 (HAKONIWA_ADMIN_EMAILS など) は wrangler.jsonc の vars に書きます
  • 秘密の設定 (HAKONIWA_DISCORD_CLIENT_SECRET など) は wrangler secret put で登録します
  • HAKONIWA_DEV_LOGIN (任意のメールアドレスでログインできる開発用機能) は、本番では設定しないでください (既定で無効です)
  • カスタムドメインを使う場合だけ HAKONIWA_BASE_URL を vars に追加します (通常は不要です)

設定できる項目は 環境変数一覧 を参照してください。

デプロイ後の手順 (ログインして管理者になり、ゲームを開始する) は ワンクリックデプロイの手順 3 以降 と同じです。HAKONIWA_ADMIN_EMAILS を設定した場合は、そのメールアドレスでログインすればすぐに管理者になれます。