Documents
Home

02 インフラ構成

2.1 全体構成

【通常時】
Discord / WebUI (app.example.com)
    ↓ Cloudflare Tunnel
自宅鯖
├── DiscordBOT
├── WebUI(SvelteKit)
└── PostgreSQL(マスターDB)
        ↓ 即時同期
    Turso + Cloudflare D1(ミラーDB)
        ↓ 日次
    GitHub(バックアップ)

【自宅鯖ダウン時】
app.example.com
    └── Tunnel切断時 → CF Pages WebUI へリダイレクト
CF Pages WebUI
    ↓ CF Workers API
Turso + Cloudflare D1(書き込みバッファ)

【自宅鯖復旧時】
ネットワーク監視(ping)が復旧を検知
    ↓
Turso + D1 → 自宅鯖内コピーDB(各々)
    ↓ タイムスタンプ・データ比較
    ├── 両方に同じ → PostgreSQL へ書き込み
    ├── 片方のみ  → 両方に書き込み後 PostgreSQL へ
    └── 両方にない → 無視
    ↓
PostgreSQL 最新化 → Turso + D1 全量再同期

2.2 フェイルオーバー

Cloudflare Tunnel のフォールバック機能を使用(CF Workers は不要)。

app.example.com
├── Tunnel 接続中  → 自宅鯖 WebUI へ
└── Tunnel 切断時  → CF Pages WebUI へリダイレクト

2.3 DBの役割

DB 役割 備考
PostgreSQL マスターDB・履歴保持 自宅鯖
Turso ミラー・障害時バッファ SLA あり
Cloudflare D1 ミラー・障害時バッファ SLA なし・補助的
GitHub 日次バックアップ 日次 dump

2.4 ネットワーク監視

ネットワーク状態判定

Google Cloudflare 判定 動作
正常 通常運用
CF 障害 自宅鯖のみで運用・同期スキップ
ネット切断 外部アクセス不可
ネット切断 外部アクセス不可

2.5 CF 障害復旧時

PostgreSQL 全量を Turso + D1 へ再同期(キューなし・全量方式)。


2.6 データ出典(source 値)

説明
home-bot 自宅鯖 DiscordBOT 経由
home-web 自宅鯖 WebUI 経由
cf-web Cloudflare Pages WebUI 経由
d1 Cloudflare D1 経由
turso Turso 経由