Files
cloudflare-domain-manager/docs/Home.md
T
Denozordec ed4d6f8a46
quality / commitlint (push) Skipped
CD / update-wiki (push) Failing after 8s
quality / changes (push) Successful in 7s
quality / docker-check (push) Skipped
quality / web (push) Successful in 1m8s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 2m0s
CD / publish (push) Failing after 11m24s
chore: update Docker configuration and CI/CD setup
- 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.
2026-08-19 00:42:38 +07:00

62 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`](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` — один манифест.
```bash
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`](releasing.md).