Static Hosting Migration — Progress Log
Static Hosting Migration — Progress Log
MC: #8523 (tracking), #8482 (basicconsulting.no), #8489 (bilko.io) | Date: 2026-04-20
Overview
ALAI is migrating 8 static sites from Vercel/Azure VM to Cloudflare Pages for cost savings (€0 vs €12-14/mo), operational simplification, and DDoS/WAF coverage. See full blueprint at ~/system/specs/ALAI-STATIC-HOSTING-BLUEPRINT.md.
Migration Log
| Date | Domain | From | To | Downtime | TTFB Before | TTFB After | Notes |
|---|---|---|---|---|---|---|---|
| 2026-04-20 | basicconsulting.no | Vercel (76.76.21.21) | CF Pages | ~60s | 114ms | 51ms (warm avg) | MC #8482. DNS: A→CNAME. Validation required domain re-add. TTFB improved 55%. Proveo pilot validated #8490. |
| 2026-04-20 | bilko.io | one.com (down) | CF Pages | N/A (site was down) | N/A | 68ms (warm avg) | MC #8489. Apex CNAME not possible on one.com free tier (paid feature). Switched to Cloudflare NS (ana.ns.cloudflare.com, bob.ns.cloudflare.com). CF Pages zone ID: 62d89b79f0648d3fa1d045335a989ea7. DNS: CNAME flattening bilko.io → bilko-io.pages.dev (proxied), www → bilko-io.pages.dev. |
Paused Migrations
MC #8483 — basicfakta.no
Reason: Inventory error. Site has serverless functions (Vercel Edge), not pure static. Requires CodeCraft assessment before migration path can be determined.
MC #8484 — snowit.no
Reason: Inventory error. Site has API routes (Next.js), not pure static. Requires CodeCraft assessment for static export viability or alternate hosting.
Audit Verdict: bilko-demo.alai.no (MC #8486)
Decision: Stays on GCP Cloud Run. Not eligible for CF Pages migration.
Reason: Full-stack Next.js app with dynamic API routes and server-side rendering. Static export would break functionality. Current platform (Cloud Run) is correct fit.
Lessons Learned
one.com Apex CNAME Limitation
one.com free tier does NOT support apex CNAME (requires paid plan). For domains registered at one.com, the migration path is:
- Switch nameservers to Cloudflare (ana.ns.cloudflare.com, bob.ns.cloudflare.com)
- Import DNS records via Cloudflare zone scan
- Set up CNAME flattening in Cloudflare (apex → CF Pages project, proxied)
Propagation time: 15 minutes to 4 hours for .no domains.
Inventory Validation Pre-Migration
Before scheduling a migration, verify the site is truly static:
- Check for
pages/api/orapp/api/directories (Next.js API routes) - Check for Vercel Edge Functions (
middleware.ts,edge-config) - Check for ISR/SSR (
getServerSideProps,revalidatein Next.js) - Run
npm run buildand verify output isout/ordist/(static export)
If any of the above exist, the site is NOT static and requires CodeCraft review.
TTFB Improvements
Cloudflare Pages with CDN caching (orange-cloud proxy) delivers 50-60% TTFB improvement over Vercel for static sites. Cold start overhead is negligible (CF edge network vs Vercel edge).
Remaining Migrations
| Domain | Current Host | Status | MC Task |
|---|---|---|---|
| alai.no | CF Pages | ✅ Complete (already on target platform) | N/A |
| basicconsulting.no | CF Pages | ✅ Complete (2026-04-20) | #8482 |
| bilko.io | CF Pages | ✅ Complete (2026-04-20) | #8489 |
| basicfakta.no | Vercel | ⏸ Paused (serverless functions found) | #8483 |
| snowit.no | Vercel | ⏸ Paused (API routes found) | #8484 |
| getdrop.no | Azure VM | 🔄 Pending (DNS on Vercel, move to CF) | #8485 |
| kenyhot.pro | Vercel | 🔄 Pending (coordinate with client) | #8487 |
| merdzanovic.ba | Vercel | 🔄 Pending (coordinate with client) | #8488 |
DNS Consolidation Status
| Domain | Registrar | Current NS | Target NS | Status |
|---|---|---|---|---|
| alai.no | one.com | Cloudflare | Cloudflare | ✅ Done |
| basicconsulting.no | one.com | Cloudflare | Cloudflare | ✅ Done |
| bilko.io | one.com | Cloudflare | Cloudflare | ✅ Done (2026-04-20) |
| getdrop.no | one.com | Vercel | Cloudflare | 🔄 Pending |
| basicfakta.no | one.com | Vercel | Cloudflare | 🔄 Pending |
| snowit.no | one.com | Unknown | Cloudflare | 🔄 Pending |
Generated by Skillforge | ALAI, 2026