# CDN Manager Self-hosted панель управления DNS флота (ноды A/AAAA + сервисные CNAME) через Cloudflare. - App id (auth-portal): `cdn` - Стек: pnpm monorepo, Vite/React/TanStack/ReUI, Fastify/Drizzle/SQLite - Модель: zones → nodes / aliases → sync desired↔Cloudflare (DNS-only) - UI DNA дашборда: как CFDM (`OpsDashboard`, `AttentionQueue`, hybrid KPI) - Не замена CFDM: там домены/сервисы/LB; здесь флот CHR и failover CNAME - SSO: [`integrate-auth-portal.md`](./integrate-auth-portal.md) - Docker + Traefik (prod): [`deploy-traefik.md`](./deploy-traefik.md) - Docker CDN + MikrotikManager (один Traefik): [`../deploy/docker-compose.cdn-mm.yml`](../deploy/docker-compose.cdn-mm.yml) - Docker без Traefik: [`deploy-docker.md`](./deploy-docker.md) См. [README](../README.md) и [AGENTS.md](../AGENTS.md). ## Docker + Traefik (кратко) ```bash mkdir -p /opt/cdnmanager/data cp deploy/docker-compose.traefik.yml /opt/cdnmanager/docker-compose.yml cp deploy/env.traefik.example /opt/cdnmanager/.env # заполнить CF_DNS_API_TOKEN, CLOUDFLARE_API_TOKEN, AUTH_JWT_SECRET, … docker login git.shx.one cd /opt/cdnmanager && docker compose pull && docker compose up -d ``` Compose: [`deploy/docker-compose.traefik.yml`](../deploy/docker-compose.traefik.yml). Env: [`deploy/env.traefik.example`](../deploy/env.traefik.example).