Files
cloudflare-domain-manager/docs/Home.md
T
Denozordec 2c92e78b24
quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 8s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 51s
quality / api (push) Successful in 44s
CD / quality (push) Successful in 1m44s
CD / publish (push) Successful in 1m35s
feat(health-checks): enhance health check configuration and logging
- Added new health worker URL and token fields to the AppConfig interface, allowing for Cloudflare Worker integration.
- Updated health check routes to utilize the new worker configuration, enabling dynamic health checks via Cloudflare Workers.
- Introduced a health log endpoint for services, providing detailed logs of health probe results.
- Enhanced health check service logic to support both local and Cloudflare Worker providers, improving flexibility in health monitoring.
- Updated UI components to reflect changes in health check provider settings and display relevant health information.

This commit significantly improves the health check management capabilities, allowing for better integration with Cloudflare Workers and enhanced logging features.
2026-08-19 16:27:34 +07:00

5.6 KiB
Raw Blame History

Cloudflare Domain Manager

Wiki home — synced from repository on main when this file changes.

UI

Design contract (Frame surface, ReUI kit): docs/ui-design-contract.md

Overview

Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry from a single UI.

Configuration

Variable Description
CLOUDFLARE_API_TOKEN API token with Zone.DNS permissions
DATABASE_URL SQLite path (sqlite:/data/app.db)
JWT_SECRET JWT signing secret
ADMIN_USERNAME Admin username
ADMIN_PASSWORD_HASH Argon2 hash (empty = dev admin/admin)
LOG_LEVEL Уровень логов API (info, debug)
HEALTH_CHECK_CRON Cron для health-check (default 0 */2 * * * *). Переопределяется в Настройки → Health-check.
HEALTH_DEGRADED_FAILURES Ошибок подряд до degraded (default 1). То же в UI.
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

Группа сервисов может иметь общий домен (service_groups.domain). Балансировка и health-check работают на двух уровнях:

  • Общий домен группы — A-записи формируются из IP сервисов группы; режим LB и параметры health-check настраиваются в карточке группы.
  • Несколько FQDN на сервис — через service_bindings один сервис может быть привязан к нескольким hostname в разных зонах (уникальность (domain_id, service_id, hostname)).
  • Привязка сервиса с multi-A — режим LB и health-check настраиваются в карточке сервиса для каждой привязки с несколькими IP; для IP задаются вес/приоритет.
  • Ноды — first-class адреса сервиса (nodes + binding_nodes); IP-пулы service_ips / service_binding_ips пишутся dual-write.
  • Change IPPOST /api/v1/service-bindings/:id/change-ip (preview + PATCH DNS).
  • Change Domain — перенос привязок между зонами POST /api/v1/services/:id/change-domain.

Режимы LB: round_robin, failover, weighted. В Cloudflare free weighted работает как round_robin (одна A на IP). unknown не считается healthy и не попадает в пул, пока нет успешных проб; восстановление — UNHEALTHY → CHECKING → HEALTHY после HEALTH_SUCCESS_RECOVERIES (default 2). Пороги и cron движка задаются в Настройки → Health-check (env — fallback, пока значения не сохранены в UI).

Local XOR Cloudflare Worker

Провайдер задаётся на привязке (service_bindings.health_check_provider): local или cloudflare. Одновременно оба не работают.

Local Cloudflare Worker
Кто пробирует процесс API CFDM Worker на edge Cloudflare
Планировщик глобальный cron CFDM тот же cron вызывает Worker
Пороги Slow/Down Настройки → Health-check те же
Результат SQLite ip_health_status та же SQLite + colo
Регионы Health Checks нет нет (на Free продукта нет)

Cloudflare в CFDM — это Worker, не Health Checks API. Продукт Health Checks на Free-плане недоступен и не используется. Worker stateless: конфиг и журнал (health_probe_log) живут в SQLite CFDM.

Деплой Worker: workers/health-probe/README.md (wrangler deploy). URL и токен — Настройки → Health-check. Если Worker не задан, cloudflare-цели не пробируются как Local.

Reconcile DNS запускается cron-задачей health-check. Free Workers ≈ 100k запросов/сутки; cron раз в 2 мин × число IP должен влезать.

Docker

Один alpine-контейнер (API + SPA + SQLite). Образы cfdm и cloudflare-domain-manager — один манифест.

docker pull git.shx.one/denozord/cfdm:latest
# drop-in для прежнего тега:
docker pull git.shx.one/denozord/cloudflare-domain-manager:latest

docker run -d -p 8080:8080 -v cfdm-data:/data \
  -e CLOUDFLARE_API_TOKEN=... \
  -e JWT_SECRET=... \
  git.shx.one/denozord/cfdm:latest

Compose: корневой docker-compose.yml или deploy/compose/docker-compose.example.yaml. Сборка: deploy/docker (bake). Релизы: docs/releasing.md.