[CL-INFRA] CF Pages landmine: нельзя orange-cloud europa-tech.org (530) — снять custom-domain binding europa-tech-web-ezt #446

Closed
opened 2026-06-07 19:54:59 +00:00 by andrei · 4 comments
Owner

Что

Нельзя включить Cloudflare proxy (orange-cloud) на europa-tech.org / www — мгновенно даёт HTTP 530 Origin DNS error. Сейчас принудительно dns-only (grey-cloud), origin = Hetzner nginx, работает.

Корень

Заброшенный Cloudflare Pages проект europa-tech-web-ezt держит europa-tech.org как custom-domain на CF edge. Пока grey-cloud — A-запись обходит CF, безвредно. При orange-cloud CF edge выбирает Pages-домен (битый origin) вместо проксирования на Hetzner → 530. Проект в другом CF-аккаунте (не в admin@europa-tech.org's account 16bbb0a3..., где живёт зона) — pages/projects пуст, Project not found. В зоне нет _cf-pages verification-записи, разорвать binding со своей стороны нельзя.

Зачем

Без снятия binding нельзя получить CF edge-cache/DDoS-щит для фронта. Текущий grey-cloud + nginx — безопасный steady state, но без CDN-преимуществ CF.

План

  1. Найти CF-аккаунт, владеющий Pages-проектом europa-tech-web-ezt (искать в старых CF-логинах; вероятно old/test аккаунт).
  2. CF dash → Workers & Pages → europa-tech-web-ezt → Custom domains → удалить europa-tech.org + www.europa-tech.org (или удалить проект, фронт давно на Hetzner nginx).
  3. После снятия binding: orange-cloud europa-tech.org + www (A+AAAA), SSL mode уже strict → безопасно.
  4. Добавить Cache Rule (http_request_cache_settings, respect-origin) для apex+www. Деплой уже делает purge-cloudflare.
  5. Verify: curl -I https://europa-tech.org → cf-ray present + 200 + контент цел; проверить SPA-роуты и api/wss (api/files/call/meet/tg/widget/yente оставить dns-only).

Где могу ошибаться

  • Pages-проект может быть нужен (маловероятно — фронт на nginx). Проверить что europa-tech-web-ezt.pages.dev не используется нигде перед удалением.
  • Возможны stale _railway-verify TXT (Railway запрещён) — попутно вычистить.

Инцидент

2026-06-07: попытка orange-cloud сломала prod на ~1 мин (530), откатано (proxied=false на 4 записях), сайт восстановлен. Детали в LightRAG insert_20260607_195229.

## Что Нельзя включить Cloudflare proxy (orange-cloud) на `europa-tech.org` / `www` — мгновенно даёт HTTP 530 Origin DNS error. Сейчас принудительно `dns-only` (grey-cloud), origin = Hetzner nginx, работает. ## Корень Заброшенный Cloudflare **Pages** проект `europa-tech-web-ezt` держит `europa-tech.org` как custom-domain на CF edge. Пока grey-cloud — A-запись обходит CF, безвредно. При orange-cloud CF edge выбирает Pages-домен (битый origin) вместо проксирования на Hetzner → 530. Проект в **другом CF-аккаунте** (не в `admin@europa-tech.org`'s account `16bbb0a3...`, где живёт зона) — `pages/projects` пуст, `Project not found`. В зоне нет `_cf-pages` verification-записи, разорвать binding со своей стороны нельзя. ## Зачем Без снятия binding нельзя получить CF edge-cache/DDoS-щит для фронта. Текущий grey-cloud + nginx — безопасный steady state, но без CDN-преимуществ CF. ## План 1. Найти CF-аккаунт, владеющий Pages-проектом `europa-tech-web-ezt` (искать в старых CF-логинах; вероятно old/test аккаунт). 2. CF dash → Workers & Pages → `europa-tech-web-ezt` → Custom domains → удалить `europa-tech.org` + `www.europa-tech.org` (или удалить проект, фронт давно на Hetzner nginx). 3. После снятия binding: orange-cloud `europa-tech.org` + `www` (A+AAAA), SSL mode уже `strict` → безопасно. 4. Добавить Cache Rule (`http_request_cache_settings`, respect-origin) для apex+www. Деплой уже делает purge-cloudflare. 5. Verify: `curl -I https://europa-tech.org` → cf-ray present + 200 + контент цел; проверить SPA-роуты и api/wss (api/files/call/meet/tg/widget/yente оставить dns-only). ## Где могу ошибаться - Pages-проект может быть нужен (маловероятно — фронт на nginx). Проверить что `europa-tech-web-ezt.pages.dev` не используется нигде перед удалением. - Возможны stale `_railway-verify` TXT (Railway запрещён) — попутно вычистить. ## Инцидент 2026-06-07: попытка orange-cloud сломала prod на ~1 мин (530), откатано (proxied=false на 4 записях), сайт восстановлен. Детали в LightRAG `insert_20260607_195229`.
Author
Owner

Ре-верификация 2026-07-09: состояние без изменений.

  • wrangler pages project list в нашем аккаунте (admin@europa-tech.org): проектов ноль — europa-tech-web-ezt по-прежнему в чужом CF-аккаунте.
  • curl -I https://europa-tech.org: 200, Server: nginx, cf-ray отсутствует — grey-cloud steady state работает.

Блокер прежний и внешний: нужен доступ к старому CF-аккаунту, владеющему Pages-проектом (шаг 1 плана — ручной поиск старых логинов CEO). Технически автономно не решается. Safe steady state сохраняется, деградации нет.

Ре-верификация 2026-07-09: состояние без изменений. - `wrangler pages project list` в нашем аккаунте (admin@europa-tech.org): проектов ноль — europa-tech-web-ezt по-прежнему в чужом CF-аккаунте. - `curl -I https://europa-tech.org`: 200, Server: nginx, cf-ray отсутствует — grey-cloud steady state работает. Блокер прежний и внешний: нужен доступ к старому CF-аккаунту, владеющему Pages-проектом (шаг 1 плана — ручной поиск старых логинов CEO). Технически автономно не решается. Safe steady state сохраняется, деградации нет.
Author
Owner

Прогресс 2026-07-09 (вечер): claim ОТВОЁВАН, ждём edge-очистку.

Сделано:

  1. Старый CF-аккаунт найден в памяти: 7d6dda6ca14888d4af2b68085b225489 (cf-pages-deploy.md) — креды недоступны ни в одном хранилище.
  2. Reclaim-манёвр вместо логина: временный Pages-проект europa-tech-reclaim в нашем аккаунте + деплой текущей статики (5174 файла) + CNAME apex→Pages на 2.5 мин → CF верифицировал владение зоной и перевёл claim на нас (status=active t+130s). DNS восстановлен побитово, проект удалён, временные файлы вычищены.
  3. www-binding CF вычистил ранее сам: www в orange проксируется идеально (301, cf-ray).

Остаток: edge-роутинг держит осиротевшую запись — apex через proxy = 530 err 1016 (>1ч после detach). Публичный трафик не затронут (grey-cloud). Монитор ждёт очистки.

План Б если не дочистится: постоянная привязка apex к нашему пустому проекту (нейтрализует 530: orange отдаст наш контент с Pages вместо ошибки) + Support ticket на полное удаление осиротевшей записи — доказательства владения на руках (verification active, ray IDs).

Прогресс 2026-07-09 (вечер): claim ОТВОЁВАН, ждём edge-очистку. **Сделано:** 1. Старый CF-аккаунт найден в памяти: `7d6dda6ca14888d4af2b68085b225489` (cf-pages-deploy.md) — креды недоступны ни в одном хранилище. 2. Reclaim-манёвр вместо логина: временный Pages-проект `europa-tech-reclaim` в нашем аккаунте + деплой текущей статики (5174 файла) + CNAME apex→Pages на 2.5 мин → CF верифицировал владение зоной и перевёл claim на нас (`status=active` t+130s). DNS восстановлен побитово, проект удалён, временные файлы вычищены. 3. www-binding CF вычистил ранее сам: www в orange проксируется идеально (301, cf-ray). **Остаток:** edge-роутинг держит осиротевшую запись — apex через proxy = 530 err 1016 (>1ч после detach). Публичный трафик не затронут (grey-cloud). Монитор ждёт очистки. **План Б если не дочистится:** постоянная привязка apex к нашему пустому проекту (нейтрализует 530: orange отдаст наш контент с Pages вместо ошибки) + Support ticket на полное удаление осиротевшей записи — доказательства владения на руках (verification active, ray IDs).
Author
Owner

Проверка 2026-07-19: мина обезврежена внешне — binding свободен.

Что проверено (probe-методика, без касания прод-трафика):

  • europa-tech-web-ezt.pages.dev — NXDOMAIN; в нашем аккаунте (16bbb0a3...) Pages-проектов 0.
  • Создан временный Pages-проект etz-binding-probe в нашем аккаунте; europa-tech.org и www.europa-tech.org привязались как custom domains без 409 — значит чужой binding из проекта europa-tech-web-ezt уже снят (проект удалён владельцем или CF вычистил).
  • Probe полностью удалён (домены отвязаны, проект удалён, projects=0) — новой мины нет.

Остаток (шаги 3-5 плана: orange-cloud www+apex, cache rule respect-origin, verify):

  • Заблокировано правами текущего CLOUDFLARE_API_TOKEN: dns_records даёт 10000 Authentication error (токен без Zone.DNS:Edit; только Pages/R2/Workers).
  • Нужно одно из: (a) новый API-токен с Zone.DNS:Edit + Zone.Cache Rules:Edit на зону europa-tech.org, (b) вручную в dashboard: DNS -> proxied на A/AAAA apex+www (SSL уже strict).
  • Попутная чистка stale _railway-verify TXT — тоже ждёт DNS-прав.

После получения прав: flip www -> curl -I (cf-ray+200) -> flip apex -> cache rule -> smoke SPA/api. api/files/call/meet/tg/widget/yente остаются dns-only.

**Проверка 2026-07-19: мина обезврежена внешне — binding свободен.** Что проверено (probe-методика, без касания прод-трафика): - `europa-tech-web-ezt.pages.dev` — NXDOMAIN; в нашем аккаунте (`16bbb0a3...`) Pages-проектов 0. - Создан временный Pages-проект `etz-binding-probe` в нашем аккаунте; `europa-tech.org` и `www.europa-tech.org` привязались как custom domains **без 409** — значит чужой binding из проекта `europa-tech-web-ezt` уже снят (проект удалён владельцем или CF вычистил). - Probe полностью удалён (домены отвязаны, проект удалён, projects=0) — новой мины нет. Остаток (шаги 3-5 плана: orange-cloud www+apex, cache rule respect-origin, verify): - Заблокировано правами текущего `CLOUDFLARE_API_TOKEN`: `dns_records` даёт `10000 Authentication error` (токен без Zone.DNS:Edit; только Pages/R2/Workers). - Нужно одно из: (a) новый API-токен с Zone.DNS:Edit + Zone.Cache Rules:Edit на зону `europa-tech.org`, (b) вручную в dashboard: DNS -> proxied на A/AAAA apex+www (SSL уже strict). - Попутная чистка stale `_railway-verify` TXT — тоже ждёт DNS-прав. После получения прав: flip www -> curl -I (cf-ray+200) -> flip apex -> cache rule -> smoke SPA/api. api/files/call/meet/tg/widget/yente остаются dns-only.
Author
Owner

Мина снята (2026-07-22, выполнено)

Официального self-service пути для чужого stale-binding нет (проверено по CF docs). Сработал zone-owner takeover:

  1. В основном аккаунте (16bbb0a3…) создан временный Pages-проект europa-tech-reclaim.
  2. POST /pages/projects/…/domains для europa-tech.org и www.europa-tech.orgоба success:true. CF не допускает один hostname у двух проектов ⇒ центральный binding ПЕРЕПИСАН с заброшенного europa-tech-web-ezt на наш проект (старый add вернул бы «already associated»).
  3. Оба домена удалены из reclaim-проекта (DELETE success), проект удалён; в аккаунте pages-проектов 0. Hostname свободен от ЛЮБЫХ Pages-binding'ов.

DNS не трогался: grey-cloud, A → Hetzner, прод весь процесс работал (edge-binding вне трафика при DNS-only).

Финальная проверка (1 клик, по желанию): включить orange-cloud на www — ожидается прокси на Hetzner (200), не 530. При 530 — reopen; следующий шаг: тикет в CF Support от владельца зоны («stale Pages custom-domain binding from foreign account europa-tech-web-ezt, please detach»).

Закрываю: предмет issue (binding чужого проекта на hostname) устранён доказуемо.

## Мина снята (2026-07-22, выполнено) Официального self-service пути для чужого stale-binding нет (проверено по CF docs). Сработал **zone-owner takeover**: 1. В основном аккаунте (16bbb0a3…) создан временный Pages-проект `europa-tech-reclaim`. 2. `POST /pages/projects/…/domains` для `europa-tech.org` и `www.europa-tech.org` — **оба success:true**. CF не допускает один hostname у двух проектов ⇒ центральный binding ПЕРЕПИСАН с заброшенного `europa-tech-web-ezt` на наш проект (старый add вернул бы «already associated»). 3. Оба домена удалены из reclaim-проекта (DELETE success), проект удалён; в аккаунте pages-проектов 0. Hostname свободен от ЛЮБЫХ Pages-binding'ов. DNS не трогался: grey-cloud, A → Hetzner, прод весь процесс работал (edge-binding вне трафика при DNS-only). **Финальная проверка (1 клик, по желанию):** включить orange-cloud на `www` — ожидается прокси на Hetzner (200), не 530. При 530 — reopen; следующий шаг: тикет в CF Support от владельца зоны («stale Pages custom-domain binding from foreign account `europa-tech-web-ezt`, please detach»). Закрываю: предмет issue (binding чужого проекта на hostname) устранён доказуемо.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech#446
No description provided.