Деплой
Целевой стек Cloudflare Workers + Supabase, снятие блокера с Next 15, шаги деплоя, env-переменные, DNS/SSL и урок про печать по LAN.
Целевой стек (эконом, #58)
- Фронт: Cloudflare Workers через
@opennextjs/cloudflare. Бэк: Supabase (уже в проде). DNS: Cloudflare. - Цена: Supabase Pro $25 + Cloudflare Workers $0–5 ≈ $30/мес (фиксированная, не pay-as-you-go). Vercel Pro $20/сайт признан расточительным для мультисайтового MonsterDEVZ.
- Custom Domain
api.chuygun.kgна Supabase не берём ($10/мес add-on) — бэк-адрес из кода, брендинг закрытого POS не нужен (#59). Бэк на дефолтномonwzbtknxtdituwrcxvn.supabase.co.
Блокер и его снятие
OpenNext дропает Next 14 в Q1 2026 → был обязателен апгрейд на Next 15+ (сделан, #57: 14.2.15 → 15.5.20, React 18 → 19; codemod для async request APIs cookies / params).
Монорепо-нюансы OpenNext:
outputFileTracingRootобязателен.- Удалён лишний package-lock (ломал сборку).
- Лимит размера воркера 10 MiB gzip (Paid) — проверять из-за i18n (ru/en/uz) + shadcn; при превышении lazy-load тяжёлого.
Шаги деплоя на Cloudflare (после Next 15)
npm i -D @opennextjs/cloudflare wrangler.wrangler.jsoncвapps/web/(workerchuygun-web,compatibility_date ≥ 2024-09-23, флагnodejs_compat).open-next.config.ts.- Cloudflare → Workers & Pages → Connect to Git → репо, Root
apps/web, build через OpenNext. - Прописать env в Cloudflare Dashboard (список ниже), привязать домен
chuygun.kgк воркеру. - Смоук-тест: логин официанта → меню → заказ → realtime касса/кухня → печать.
Env-переменные
Публичные (NEXT_PUBLIC_*): SUPABASE_URL, SUPABASE_ANON_KEY, SITE_URL (→ боевой домен, иначе QR/ссылки укажут на старый URL), PRINT_AGENT_URL, MAP_LAT, MAP_LNG, VAPID_PUBLIC_KEY.
Серверные секреты (Cloudflare Secret, не plaintext): SUPABASE_SERVICE_ROLE, VAPID_PRIVATE_KEY, VAPID_SUBJECT, PUSH_NOTIFY_SECRET.
Значения секретов — см. закрытый файл доступов. В git не коммитить.
Cloudflare DNS / SSL
- Регион Supabase — Asia-Pacific (Tokyo); при Vercel-варианте регион был переключён fra1 → sin1 (#24, Singapore ближе к Tokyo).
- (Legacy Vercel-runbook) Cloudflare-прокси в режиме «DNS only» (серое облако): Vercel сам выпускает Let's Encrypt-cert, двойное проксирование ломает renewal. SSL/TLS mode — Full (strict). На Cloudflare Workers прокси нативный.
Урок про права / «Initializing» (LAN vs USB печать, #44)
macOS 26 убрал raw-очереди CUPS → ломает node-thermal-printer printer:auto. Прямой libusb упирается в LIBUSB_ERROR_ACCESS без sudo (принтер «Initializing» / не печатает).
Решение: печать через LAN tcp://IP:9100 — работает на любой ОС без прав и автозапуска-от-root. USB оставлен резервом под Windows-кассу (#45).
Статус (02.07.2026)
- Supabase prod развёрнут (
onwzbtknxtdituwrcxvn, Asia-Pacific), 51+ миграций, меню/столы залиты (#41). - Домен
chuygun.kgподключён к Cloudflare, NS сменены в cctld, ждём активацию.
Vercel-дубли в MonsterDEVZ удалять ТОЛЬКО после того, как Cloudflare заработает.
Порядок для владельца (когда придёт банк-карта): оплатить Supabase Pro $25, Cloudflare Workers Free/$5, продлить chuygun.kg в cctld (~3011 сом/год).