ADR 0009: Static Site Hosting — COS + EdgeOne CDN (Revised 2026-08-06)¶
Status¶
Accepted (Revised)
Date¶
2026-07-27 (original) / 2026-08-06 (revised)
Context¶
OVES hosts 23 mkdocs documentation sites on Cloudflare Pages with Cloudflare Access + MS Teams OAuth. Migration targets:
- Hosting: Cloudflare Pages → Tencent-native platform
- Auth: MS Teams → WeCom OAuth (+ Keycloak for non-WeCom users)
Three platforms evaluated. Two rejected:
EdgeOne Pages — REJECTED¶
Per official docs (edgeone.cloud.tencent.com/pages/document/162936836982489088): China-tier default domain preview links expire after 3 hours. Tested 2026-08-05: .zh-cn.edgeone.cool not accessible by China colleagues; *.edgeone.cool token-based only.
COS Presigned URLs — REJECTED for serving¶
COS serves HTML as file downloads. response-content-type=text/html also fails (InternalError). COS is an object store, not a web server.
CloudStudio — SUPERSEDED (was accepted as interim; replaced by EdgeOne CDN 2026-08-10)¶
Deploys full directories, renders HTML properly, multi-page nav works, China + international access verified.
Decision¶
COS is the universal document store. EdgeOne CDN (personal plan ¥9.9/mo) serves 5 subdomains from a single COS bucket.
SOURCE STORAGE SERVE ACCESS
────── ─────── ───── ──────
GitHub mkdocs
WorkBuddy HTML ──→ COS (permanent) ──→ EdgeOne CDN ──→ WeCom group
Presentation *.agentos-app.net
decks
│
EdgeOne CDN (after ICP)
[doc-type].omnivoltaic.cn
Edge Functions: WeCom SSO
COS Structure¶
oves-docs-bucket-1437812500/
├── internal/ → internal.docs.omnivoltaic.cn → CDN origin: /internal/
├── external/ → external.docs.omnivoltaic.cn → CDN origin: /external/
├── adhoc/ → adhoc.docs.omnivoltaic.cn → CDN origin: /adhoc/
└── decks/ → decks.omnivoltaic.cn → CDN origin: /decks/
Interim vs Final¶
| Layer | Pre-ICP | Post-ICP |
|---|---|---|
| Storage | COS (same) | COS (same) |
| Serve | EdgeOne CDN | docs.omnivoltaic.cn |
| Domain | Platform-generated | [doc-type].omnivoltaic.cn |
| Auth | Link-based sharing | Edge Functions (WeCom + Keycloak) |
Consequences¶
Benefits¶
- COS as single source of truth — all doc types, one lifecycle policy
- No rebuild on serving change — artifacts persist; swap CDN origin
- Per-type auth via subdomain Edge Functions
- China + international access ✅ (verified 2026-08-05)
Trade-offs¶
- ICP required for omnivoltaic.cn (in progress)
- Branded URLs: docs.omnivoltaic.cn
- COS prefix discipline required
Verified (2026-08-05)¶
| Claim | Status |
|---|---|
| COS upload from WorkBuddy | ✅ |
| EdgeOne CDN multi-site deploy (5 subdomains) | ✅ |
| China + international access | ✅ (Global nodes) |
| EdgeOne Pages China tier (3hr expiry) | ✅ Confirmed |
| COS presigned URL HTML rendering | ❌ |
Supersedes¶
ADR 0006 — hosting and auth portions only.