Cloudflare に手動でデプロイする
@hakoniwajs/cloudflare をインストールした Worker プロジェクトを作り、Wrangler でデプロイします。
@hakoniwajs/cloudflare パッケージをインストールした小さな Worker プロジェクトを作り、Wrangler でデプロイします。テンプレートリポジトリ を「Use this template」でコピーして使うのが手軽です。
必要なもの
- Node.js 22 以降
- Cloudflare のアカウント
プロジェクトを作る
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 を設定した場合は、そのメールアドレスでログインすればすぐに管理者になれます。