Node.js で自前のサーバーに設置する
@hakoniwajs/node をインストールし、npx hakoniwa serve で HTTP サーバーを起動します。
VPS や自宅サーバーなど、自分で管理しているサーバーで動かす方法です。データは node:sqlite による SQLite のファイルに保存されます。
必要なもの
- Node.js 22.13 以降 (
node:sqliteを使います)
インストールと起動
npm install @hakoniwajs/node
npx hakoniwa serve
@hakoniwajs/node をインストールすると hakoniwa コマンドが使えるようになり、serve サブコマンドで HTTP サーバーが起動します (既定のポートは 3000。PORT で変更できます)。
- 待ち受け先を指定しない
npx hakoniwa serveは、すべてのインターフェースで待ち受けます。このときはHAKONIWA_BASE_URLが必要です。未設定だと起動前にエラーで終了します。既定ポートならHAKONIWA_BASE_URL=http://localhost:3000です。メールログインのリンクと OAuth のコールバックに使います - 自分の PC だけで開くなら
HAKONIWA_HOST=127.0.0.1(またはlocalhost、::1) にしてください。ループバックで待ち受けるときはHAKONIWA_BASE_URLを省略でき、http://localhost:<実際のポート>になります。この URL はリクエストの Host ヘッダからは決めません - データベースは既定で
./data/hakoniwa.sqliteに作られます (HAKONIWA_DB_PATHで変更できます) - ログインのセッションなどに使う秘密鍵 (
HAKONIWA_AUTH_SECRET) は、未設定なら初回の起動時に自動で生成されてデータベースに保存されます - 最初の管理者は、ログインしてから
/admin/setupを開き、サーバーのコンソールに出力されるセットアップコードを入力すると登録できます。HAKONIWA_ADMIN_EMAILS=you@example.comのように環境変数で指定しておくこともできます
設定できる項目は 環境変数一覧 を参照してください。
公開する
サーバー自体は HTTPS を扱いません。インターネットに公開する場合は、nginx や Caddy などのリバースプロキシを前段に置いて HTTPS を終端し、HAKONIWA_BASE_URL にはブラウザで開く公開 URL を設定してください。同じマシンのリバースプロキシからだけ届ければよいときは HAKONIWA_HOST=127.0.0.1 のままで構いません。公開 URL が http://localhost:<ポート> ではないときは、ループバック待ち受けでも HAKONIWA_BASE_URL を設定してください。プロセス自体を LAN や公開アドレスで待ち受けるときは HAKONIWA_HOST=0.0.0.0 (または :: やその IP) にし、HAKONIWA_BASE_URL も設定します。未設定のままでは起動前にエラーで終了します。
ゲームを開始する
ブラウザで /login からログインし、/admin の「新しいゲームを開始」でゲームを始めます。CLI から始めることもできます。
npx hakoniwa game new --name 第1回 --start-at 2026-10-01T21:00:00+09:00 --final-turn 100 --unit-time 6h
ゲームの開始・終了やバックアップなどは CLI からも操作できます。CLI を参照してください。
ターンの進行
Node.js 版は、サーバー内のタイマーが 60 秒ごと (HAKONIWA_TURN_CHECK_INTERVAL_SEC で変更可) にターンの進行を確認します。アクセスがなくてもターンは進みます。
静的ファイル
地形の画像や CSS は @hakoniwajs/core パッケージ内の public/ から配信されます。HAKONIWA_PUBLIC_DIR で別のディレクトリに差し替えられます。