Phase 0 deploy — static export Next.js → Cloudflare Pages через git integration.
Live (Phase 0): https://arno-ijr.pages.dev (opens in a new tab)
Ключевой gotcha (2026)
Cloudflare объединил UI "Workers & Pages". Через Create application ты попадаешь в Worker-like flow с минимумом полей. Но для static-сайта всё равно нужен Pages-style wrangler.jsonc в repo root:
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "arno",
"compatibility_date": "2026-05-20",
"pages_build_output_dir": "./apps/web/out"
}Не пиши assets.directory (это для чистых Workers со static assets — другой тип проекта).
Одноразовая настройка
- Залогинься в Cloudflare dashboard → Workers & Pages → Create application → Pages → Connect to Git
- Выбери GitHub аккаунт
ChrisPianof→ repoarno - Project name:
arno(дастarno.pages.dev; если занято —arno-appили подобное) - Branch:
main - Build settings:
- Framework preset: None (не Next.js preset — мы делаем static export сами)
- Build command:
corepack enable && pnpm install --frozen-lockfile && pnpm --filter @arno/web build - Build output directory:
apps/web/out - Root directory: (оставить пустым = repo root)
- Environment variables:
NODE_VERSION=20PNPM_VERSION=11.1.3
- Save and Deploy
После первого deploy
- Public URL появится:
https://arno.pages.dev(или назначенный) - Subsequent push к
main→ auto-rebuild + redeploy - Preview deploys per PR — включены by default
Custom domain (post-MVP)
В master spec §III.2.9 — Porkbun как separate registrar. DNS TTL 300s. Подключение domain → Pages — позже (Phase 16).
SPOF mitigation (master spec §III.2.9)
Сразу после первого deploy:
- Добавить второго admin'а в Cloudflare account (hardware key 2FA)
- Сохранить CF API token в 2 password manager backups
- Documentировать в
docs/runbooks/cloudflare_account_loss.md(Phase 16)
Troubleshooting
Build fails с "pnpm: command not found":
- Проверь
PNPM_VERSIONenv var - Альтернатива:
npm install -g pnpm@11.1.3 && pnpm install && pnpm build
Static export output empty:
- Проверь
next.config.mjsимеетoutput: "export" apps/web/out/index.htmlдолжен существовать послеpnpm --filter @arno/web build
404 on routes:
trailingSlash: trueвnext.config.mjs— обязательно для static export
Когда менять deploy strategy
Static export достаточен до Phase 8 (introduce Auth). Phase 8-9 — переход на:
- Вариант A:
@cloudflare/next-on-pagesadapter — Edge runtime - Вариант B: Workers Static Assets с OpenNext — современнее, ближе к Vercel
Решение в Phase 8 после оценки экосистемы (2026).