Files
cloudflare-domain-manager/docs/Home.md
T
Denozordec 3f6f402872
quality / commitlint (push) Skipped
CD / update-wiki (push) Failing after 8s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 50s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 1m40s
CD / publish (push) Successful in 1m33s
feat(health-checks): enhance health check functionality and add new routes
- Introduced origin health check routes and integrated them into the application.
- Updated health check configuration to include success recovery thresholds.
- Expanded error handling with new error codes for health check failures.
- Added new service routes for managing health checks, including creation and listing.
- Improved health check service logic to track consecutive successes and failures.

This commit enhances the health check capabilities, providing better monitoring and management of service health.
2026-08-19 12:26:12 +07:00

3.7 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 */30 * * * * *)
HEALTH_DEGRADED_FAILURES Ошибок подряд до degraded (default 1)
HEALTH_DOWN_FAILURES Ошибок подряд до down (default 2)
HEALTH_SUCCESS_RECOVERIES Успехов подряд для recovery CHECKING → HEALTHY (default 2)
HEALTH_LATENCY_WARN_MS Латентность-порог для degraded (default 1000)

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). Reconcile DNS запускается cron-задачей health-check. Cloudflare Health Checks — официальный API зоны, Workers не используются.

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.