- Removed Dockerfile and Dockerfile.test as part of the transition to a pre-built image. - Updated .dockerignore and .gitignore to reflect new build context and ignored files. - Modified docker-compose.yml to use the new image for the application. - Enhanced documentation in AGENTS.md and README.md to include CI/CD details and release process. - Added new dependencies for commit linting and semantic release in package.json and pnpm-lock.yaml. This commit streamlines the Docker setup and improves the CI/CD workflow with Gitea Actions.
3.1 KiB
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_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 задаются вес/приоритет.
Режимы LB: round_robin, failover, weighted. В Cloudflare free weighted
работает как round_robin (одна A на IP), веса хранятся в БД для будущих расширений
и отображения в UI. Reconcile DNS запускается cron-задачей health-check при смене
статуса IP (up / degraded / down / unknown); down-IP убирается из A-записей.
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.