diff --git a/Home.md b/Home.md index 8fd3dcd..b00f150 100644 --- a/Home.md +++ b/Home.md @@ -14,7 +14,7 @@ Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry | Variable | Description | |----------|-------------| -| `CLOUDFLARE_API_TOKEN` | API token with Zone.DNS permissions | +| `CLOUDFLARE_API_TOKEN` | API token: Zone.DNS **и** для Worker — Account Workers Scripts Write + Workers KV Storage Write | | `DATABASE_URL` | SQLite path (`sqlite:/data/app.db`) | | `JWT_SECRET` | JWT signing secret | | `ADMIN_USERNAME` | Admin username | @@ -25,8 +25,6 @@ Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry | `HEALTH_DOWN_FAILURES` | Ошибок подряд до `down` (default `2`). То же в UI. | | `HEALTH_SUCCESS_RECOVERIES` | Успехов подряд для recovery `CHECKING → HEALTHY` (default `2`). То же в UI. | | `HEALTH_LATENCY_WARN_MS` | Латентность-порог для `degraded` (default `1000`). То же в UI. | -| `HEALTH_WORKER_URL` | URL Worker health-probe (fallback). Переопределяется в **Настройки → Health-check**. | -| `HEALTH_WORKER_TOKEN` | Bearer-токен Worker (fallback). В GET `/settings` не отдаётся целиком. | ## Load balancing & health checks @@ -58,22 +56,26 @@ health-check работают на двух уровнях: | | Local | Cloudflare Worker | |---|---|---| -| Кто пробирует | процесс API CFDM | Worker на edge Cloudflare | -| Планировщик | глобальный cron CFDM | тот же cron вызывает Worker | +| Кто пробирует | процесс API CFDM | Worker на edge (Cron Trigger) | +| Планировщик | глобальный cron CFDM | cron Worker + ingest KV в CFDM | | Пороги Slow/Down | Настройки → Health-check | те же | -| Результат | SQLite `ip_health_status` | та же SQLite + `colo` | +| Результат | SQLite `ip_health_status` | та же SQLite + `colo` из KV | | Регионы Health Checks | нет | нет (на Free продукта нет) | **Cloudflare в CFDM — это Worker**, не [Health Checks API](https://developers.cloudflare.com/api/resources/healthchecks). -Продукт Health Checks на Free-плане недоступен и **не используется**. Worker -stateless: конфиг и журнал (`health_probe_log`) живут в SQLite CFDM. +Продукт Health Checks на Free-плане недоступен и **не используется**. -Деплой Worker: [`workers/health-probe/README.md`](../workers/health-probe/README.md) -(`wrangler deploy`). URL и токен — **Настройки → Health-check**. Если Worker не -задан, cloudflare-цели **не** пробируются как Local. +Worker **сам** опрашивает IP/порты/протоколы (TCP/HTTP, паттерн [UptimeFlare](https://github.com/lyc8503/UptimeFlare): `sockets.opened`, p-limit 5). +CFDM создаёт скрипт через Workers Scripts API, кладёт список целей в KV и читает результаты. +Публичный URL API не нужен. Если Worker/KV не готовы, cloudflare-цели **не** пробируются как Local. -Reconcile DNS запускается cron-задачей `health-check`. Free Workers ≈ 100k -запросов/сутки; cron раз в 2 мин × число IP должен влезать. +Кнопка **Создать / обновить Worker** — **Настройки → Health-check**. Токен: +Account `Workers Scripts Write` + `Workers KV Storage Write`. Zone DNS недостаточно. + +Free: 5 Cron Triggers на аккаунт; KV 1000 writes/сутки (интервал ≥ 2 мин); +≤ 48 целей за тик. Исходник: [`workers/health-probe/`](../workers/health-probe/). + +Reconcile DNS запускается cron-задачей `health-check` после ingest KV. ## Docker