Traefik 篇は L7、frp 篇は visitor 軸です。本稿は証明書を nginx に寄せ OpenClaw はループバックのままにします。SSH トンネル篇と併読ください。
痛点は三つです。一L7 の証明書とルール差分が監査説明を肥大化させること。二 frp visitor が別手順になり二重化すること。三 status と doctor が別通知で判断が遅れることです。
| 入口方式 | 強み | 多地域での注意 |
|---|---|---|
| Traefik 等 L7 | HTTP ルートが豊富 | 証明書と動的設定の負債が増えやすい |
| frp STCP | visitor で貫通が速い | secret と台帳が監査の別章になる |
| nginx stream | ClientHello のみ解読し透過 | map と証明書 SAN を一致させる |
トポロジー
各 PoP の 443/tcp を stream が受け、ssl_preread の SNI で 127.0.0.1 の gateway/doctor へ振り分けます。外向き TLS は nginx が終端し、ループバックは短命トークンとファイル権限で守ります。vpshalo では東京・ソウル・香港・シンガポール・米西海岸など複数リージョンへ同じ設定片を複製し、差分は map 行と証明書 SAN だけに留める運用が向きます。
stream 設定断片
map の戻りを proxy_pass へ渡し、未知 SNI は空で落とします。
map $ssl_preread_server_name $oc_backend {
default "";
claw-gw.internal.example 127.0.0.1:18787;
claw-diag.internal.example 127.0.0.1:18788;
}
server {
listen 443 reuseport;
ssl_preread on;
proxy_pass $oc_backend;
proxy_connect_timeout 5s;
}
証明書とトークン
公開証明書は nginx の ssl_certificate で管理し ACME オーナーを固定します。gateway は必ずループバック bind、トークンは秘密ストアか限定 ACL ファイルに置き Git へ戻しません。証明書更新とトークンローテーションはチケットを分けます。
openssl s_client -servername で各 PoP から検証します。ヘルスと status/doctor の合算
sidecar が /status と /doctor を叩き JSON に region・lane・error_class を付けます。五分窓で jq 等により一行要約へ潰し PagerDuty へ送れば地域判断が一度で済みます。失敗時は gateway と診断のどちらが先に赤くなったかを同一行に残し、ロールバックの優先順位を会議室で争わないようにします。
最小再現の五歩
一v2026.5.x へ揃え gateway をループバックのみにする。二map に内部名を列挙し未知 SNI を落とす。三nginx で TLS 終端と ACME 権限分離。四sidecar で status/doctor を同スキーマ化。五五分要約をダッシュへ載せロールバック手順へリンクする。
よくある質問
Q Traefik を捨てる必要は。A 不要です。L7 は残し OpenClaw 入口だけ stream へ寄せるハイブリッドで足ります。Q doctor を止めると。A 止めず合算先を一つにします。
引用三行:SNI と SAN を表で管理。gateway は公開禁止。status/doctor は五分一行。
PoP 追加時は map と合算テーブルへ region を足します。