ガイド1:macOS で動かす
Cloudflare OS を macOS でローカル実行する最短手順と、pnpm run-local の内部解説
mac で動かす(TypeA)
開発して試すのに最適なのは macOS でのローカル実行です。 このページでは検証用の最短手順と「一体何が起きているのか」を解説します。
手順(最短)
# 1) 前提ツールを確認
node --version # 20.19+ / 22.12+ が必要(Vite7 の要求)
pnpm --version # 11.x が望ましい(corepack で揃える)
# 2) corepack で pnpm のバージョンをリポジトリ指定に合わせる
corepack enable
corepack prepare pnpm@11.17.0 --activate
# 3) 本体を取得
git clone https://github.com/cloudflare/cloudflare-os.git
cd cloudflare-os
# 4) 依存インストール(モノレポ全体)
pnpm install
# 5) ローカル起動
pnpm run-local起動に成功すると、最後に次のような表示がでます:
Starting: wrangler dev [...]
ブラウザで http://localhost:8787 を開けば UI が表示されます。
pnpm run-local は何をしているのか(内部解説)
pnpm run-local は、実際には node scripts/run-local.mjs を走らせています。 その内部で何が起こるかを順に追います:
- 開発用ワーカー構成を自動生成
wrangler.dev.jsonc(gitignored)をルート・各 gatekeeper・workshop-backendに書き出す。
- Gatekeeper を全数サービスバインディング
packages/下のgatekeeper-*フォルダを読み取って、それぞれをserviceバインディングとして backend に接続(例:GATEKEEPER_GITHUB)。
- backend に
ADMINS=["admin"]を挿入- ローカルで admin 機能を試すための用意です。
- フロント資産の配信設定
--serve-frontend-assetsを渡し、workshop-frontend/distをバックエンドがそのまま配信。
wrangler devをマルチコンフィグで同時起動- ルートRouter・バックエンド・各Gatekeeperの
wrangler.dev.jsoncを複数指定して 単一ランタイム(workerd)内でまとめて起動します。
- ルートRouter・バックエンド・各Gatekeeperの
つまり「サーバー 1 本」ではなく、開発用 Router + バックエンド + 各 Gatekeeper が 1つの workerd ランタイムで同時に動くということです。
データがどこに保存されるか
.wrangler/ディレクトリが生成され、Durable Objects のローカル永続化データが ここに保存されます。- このフォルダを消すと、作ったワークスペースや Gadget は失われます。
秘密情報は .dev.vars に書く
リポジトリ直下の .dev.vars(gitignored)に外部サービスとの OAuth や tokens を書きます。
GITHUB_CLIENT_ID=xxxx
GITHUB_CLIENT_SECRET=xxxx
run-local は起動時にこのファイルを読み込み、各 Worker の設定値に注入します。
開発モード(構成を分けて開発する場合)
リポジトリには「開発用」の分割モードもあります。
pnpm dev-server # バックエンドを wrangler dev で起動(API 側)
pnpm dev-client # フロントを Vite で起動 → http://localhost:3000run-local: ビルド済みフロントをバックエンドが配信(本番に近い動作)dev-*: Vite がフロントを配信(ホットリロードで開発しやすい)
用途に合わせて使い分けてください。
次のステップ
ローカルで動いたら、次は外部サービス連携(ガイド3:Gatekeeper)、 そして常時稼働(ガイド2:QNAP NAS)へ進みましょう。