🚀 新規事業

TERASU_for_SaaS配信基盤_開発依頼書

最終更新 2026年06月08日 / 40_新規事業/TERASU/TERASU_for_SaaS配信基盤_開発依頼書.md

TERASU for SaaS 配信基盤 開発依頼書 v1

顧客HPを「1つの基盤」で量産配信する(100〜1000社・最大5万ドメイン)。 Cloudflare Pagesの100プロジェクト上限を回避し、顧客の独自ドメインを自動登録。別セッションで実装するための自己完結ドキュメント。

2026-06-08 大串決定:サーバーは Cloudflareで確定。顧客HP配信を Pages(顧客ごと1プロジェクト)→ for SaaS(マルチテナント1基盤) へ移行。Vercel/レンタルサーバーは不採用。理由=静的HP量産に最適・帯域無制限・100ホスト名まで$0・5万ドメイン対応。出典 TERASU_配信アーキテクチャ構想

2026-06-08 Phase1〜3 実装完了・本番稼働
本番: https://terasu-platform.y-ogushi.workers.dev / リポ ~/dev/terasu-platform/(GitHub未push)
実装済: 配信(Host→D1→KV/R2)・管理ダッシュボード(顧客CRUD/サイト差替/公開切替)・バージョン管理+1クリックロールバック・Custom Hostnames連携コード・移行スクリプト(scripts/migrate.mjs)
リソース: D1 terasu-platform / KV SITES / R2 terasu-assets(アカウント y-ogushi@scale-group.co.jp)
2026-06-08 追記:① Custom Hostnames 有効化完了(ダッシュボードでCloudflare for SaaS を Activate=$0開始 → fallback origin saas.scale-group.co.jp+DNS(proxied)+Worker Route saas.scale-group.co.jp/*→terasu-platform+secret CF_API_TOKEN/CF_ZONE_ID 設定 → 登録APIテスト成功・クリーンアップ済)。② 監視cron 稼働/5・死活→自動ロールバック)。
※学び: Custom Hostnamesは「Workers Paid必須」ではなく
SSL/TLS→Custom Hostnames→Enable が必要(全プラン$0・100ドメインまで)。
残は実顧客の運用のみ*: 顧客登録+独自ドメイン追加(管理画面の独自ドメインボタン → 顧客がCNAMEを saas.scale-group.co.jp へ → SSL自動発行)+既存HP移行(scripts/migrate.mjs)。料金=100ドメインまで$0/超過$0.10月。


クイックアクセス(依頼サマリ)

依頼サマリ
| 項目 | 値 |
|---|---|
| 名称 | TERASU 配信基盤(for SaaS) |
| ゴール | 全顧客HPを1基盤で配信・独自ドメイン自動登録・量産対応 |
| 実装 | 3フェーズ(MVP→自動登録/管理画面→移行・本番化)|
| 想定工数 | 10〜15営業日(フル装備)|
| 新規リポジトリ(推奨)| ~/dev/terasu-platform/(Drive外・Git連携を本番経路に)|
| 配信 | Cloudflare Workers + Custom Hostnames(for SaaS)|
| データ | D1(テナント管理)/ KV(HTML)/ R2(画像・アセット)|
| コスト | 100社まで $0 / 1000社 約 $90/月 + Workers Paid $5/月 |
| 主担当 | 別セッションで実装 |


1. 別セッション開始時のキックオフプロンプト(コピペ用)

TERASU for SaaS 配信基盤の開発を進めます。

【依頼書】
~/Obsidian/SCALE-Brain/40_新規事業/TERASU/TERASU_for_SaaS配信基盤_開発依頼書.md

【新規リポジトリ(推奨)】
~/dev/terasu-platform/   ← Drive外・GitHub: scale-group-jp/terasu-platform
(Drive配下に置かない=同期事故/100プロジェクト上限回避。Git連携を唯一の本番経路に)

【スタック】
Cloudflare Workers(配信) + D1(テナント) + KV(HTML) + R2(画像) + Custom Hostnames API(独自ドメイン)

【作業前に読むべきもの】
1. この依頼書 全文
2. <a href="/n/9bdf860f61.html" class="wikilink">TERASU_配信アーキテクチャ構想</a>(背景・段階ロードマップ)
3. <a href="/n/d12b18c838.html" class="wikilink">TERASU_技術・作り方の説明</a>(顧客HPは静的HTML/CSS/JS)
4. グローバル CLAUDE.md(退化禁止・デプロイ前バックアップ・preview必須は社内ツール除外)

2. 背景・目的

観点 内容
現状 顧客HPを 顧客ごとにCloudflare Pages 1プロジェクトで配信
課題 Pagesは ソフトリミット100プロジェクト/アカウント。デモ+自社システム+顧客HPで もうすぐ上限(2026-06-08 大串)
目的 1つの配信基盤で全顧客HPを配信(マルチテナント)。顧客が増えてもPagesプロジェクト枠を消費しない
ゴール規模 100〜1000社(将来5万社まで)

3. アーキテクチャ

要素 役割
Cloudflare Workers リクエストの Host ヘッダ → 顧客ID解決 → 該当サイトのHTMLを配信
D1(SQLite) テナント(顧客)管理・ドメイン・公開ステータス・バージョン
KV 各顧客サイトの HTML(高速読み出し)
R2 画像・アセットのストレージ
Custom Hostnames API(for SaaS) 顧客の独自ドメインを自動登録(最大5万・100まで$0)+ SSL自動発行

配信フロー(直列)
顧客ドメインへのアクセス → Worker が Host で顧客ID解決(D1) → KVからHTML取得 → R2の画像と合わせて配信 → SSLはCustom Hostnameで自動


4. 機能要件(フェーズ別)

Phase 1:配信MVP(最優先・動作の核)

  • [ ] Worker:Host ヘッダ → 顧客ID解決 → KVのHTML配信
  • [ ] D1スキーマ作成(tenants / sites)
  • [ ] KVに顧客HTML、R2に画像を格納する仕組み
  • [ ] 1社分を手動登録して、テスト独自ドメインで表示確認
  • [ ] テンプレHTML × 顧客データ分離の格納形式を確定

Phase 2:独自ドメイン自動登録 + 管理ダッシュボード

  • [ ] Custom Hostnames API 連携(ドメイン追加 → DNS案内(CNAME) → SSL自動発行)
  • [ ] 管理ダッシュボード(顧客サイト一覧・新規登録・HTML差し替え・公開/非公開)
  • [ ] 顧客サイトのバージョン管理(差し替え履歴・1クリックロールバック)

Phase 3:既存Pages移行 + 本番化・事故防止

  • [ ] 既存Pages顧客HPの 移行スクリプト(HTML/asset抽出 → D1/KV/R2へ流し込み)
  • [ ] ドメインを for SaaS へ向け替え(DNS切替)→ 検証 → 切替 → 旧Pages削除(枠解放)
  • [ ] デプロイ経路一元化(管理画面/Git経由のみ・直接アップロード封じ)
  • [ ] ver番号チェック+自動復旧(自社HP monitorと同方式・巻き戻り事故防止)

5. データ設計(D1・最小案)

テーブル 主なカラム
tenants id, 顧客名, primary_domain, status(public/private), created_at
sites id, tenant_id, kv_key(HTML参照), version, published_at
custom_hostnames id, tenant_id, hostname, cf_hostname_id, ssl_status
  • HTML本体 → KV(key例:site:{tenant_id}:{version}
  • 画像・アセット → R2(path例:{tenant_id}/assets/...

6. Custom Hostnames(独自ドメイン)フロー

  1. 管理画面で顧客ドメインを追加 → Cloudflare API に Custom Hostname 登録
  2. 顧客に CNAME設定を案内(顧客のドメイン → TERASU基盤のフォールバックオリジン)
  3. Cloudflare が所有権確認 → SSL証明書を自動発行
  4. 以後、そのドメインへのアクセスは Worker が該当顧客サイトを配信
    - 料金:100ホスト名まで$0、101以降 1件 $0.10/月

7. セキュリティ・事故防止(必須)

  • 本番反映は管理画面 or Git経由のみwrangler ... --prod 直叩き等の直接アップロードを封じる → 古い版で巻き戻る事故を構造的に防止)
  • 各顧客サイトに ver番号 を持たせ、監視+自動復旧(自社TERASU公式HPで2回起きた巻き戻り事故の教訓・_SCALE_TERASU_HP_バージョン管理表
  • ステージング → 本番の2段(外販に直結するため preview 相当を必須)

8. コスト

規模 配信コスト 補足
〜100社 $0(Custom Hostnames無料枠) + Workers Paid $5/月程度
1000社 約$90/月(100社超分 × $0.10) 月売上1000万に対し誤差
〜5万社 従量 上限5万ドメイン

100社未満の今、前倒しで移行してもコスト増なし(無料枠内)。


9. 並行アクション(基盤完成までの保険)

  • Cloudflare Pages のソフトリミット100を引き上げ申請(無料・フォーム申請)。基盤が出来るまでの当面、Pages運用が詰まらないようにする。
  • 申請先:Cloudflare ダッシュボード → Pages → 上限到達時の案内 or アカウントチーム/Limit Increase Request Form

10. 進め方

  1. :このリポジトリ作成(~/dev/terasu-platform/)→ Phase 1(配信MVP・1社で表示確認)
  2. Phase 2(自動登録・管理画面)→ Phase 3(既存移行・本番化)
  3. 移行完了後:顧客HPは for SaaS、Pagesは自社システム/デモ用に温存

関連