# Auth Portal Единый auth-портал для CFDM, VPS Tracker и EvoBGP (`auth.shnt.top`). ## Стек - Monorepo: pnpm workspaces + turbo - `apps/web` — Vite + React 19 + TanStack Router/Query + shadcn/ui + ReUI - `apps/api` — Fastify 5 + JWT + SQLite (better-sqlite3 / Drizzle) - `packages/ui` — `@authportal/ui` (shadcn primitives) - `packages/shared` — Zod-контракты - `packages/db` — схема и клиент SQLite ## Быстрый старт ```bash pnpm install cp .env.example .env # ReUI PRO key уже в apps/web/.env.local (gitignored) — или скопируйте из другого проекта pnpm --filter @authportal/api dev # :8080 pnpm --filter web dev # :5175 ``` ## Интеграция с VPS Tracker См. [`docs/integrate-vps-tracker.md`](docs/integrate-vps-tracker.md) — SSO handoff (`return_to` + `#access_token`), общий `JWT_SECRET`, RBAC `vps:*`. См. [`docs/integrate-cfdm.md`](docs/integrate-cfdm.md) — то же для Cloudflare Domain Manager (`cfdm:*`, порт Vite `5174`). См. [`docs/integrate-evobgp.md`](docs/integrate-evobgp.md) — EvoBGP (`bgp:*`). См. [`docs/integrate-evofirewall.md`](docs/integrate-evofirewall.md) — EvoFirewall (`fw:*`). См. [`docs/integrate-technitium.md`](docs/integrate-technitium.md) — Technitium DNS (`dns:*`, OIDC IdP). Корень: ```bash pnpm dev # turbo: api + web pnpm build pnpm test pnpm lint ``` ## ReUI PRO ```bash cd apps/web # нужен REUI_LICENSE_KEY в .env.local pnpm dlx shadcn@latest add @reui/auth-13 --yes ``` `components.json` → registry `@reui` с `Authorization: Bearer ${REUI_LICENSE_KEY}`. ## Docker / Gitea CI - Workflow: `.gitea/workflows/docker.yml` (как CFDM) - Secrets: `ACTIONS_PAT`, `GITEA_TOKEN` - Образ: `git.shts.su/denozord/auth-portal` Локально / без reverse proxy: ```bash docker compose up -d --build ``` **Production (один Compose: Traefik + auth-portal, HTTPS Cloudflare DNS challenge):** [`docs/deploy-traefik.md`](docs/deploy-traefik.md) · [`deploy/docker-compose.traefik.yml`](deploy/docker-compose.traefik.yml) · [`deploy/env.traefik.example`](deploy/env.traefik.example) OIDC IdP (Technitium): в `.env` достаточно `ISSUER` (опционально `OIDC_ISSUER` / `OIDC_RSA_PRIVATE_KEY`); после старта — Admin → OIDC-клиенты. См. [`docs/integrate-technitium.md`](docs/integrate-technitium.md). ## Структура ``` apps/web/src/ # SPA (routes, components/reui, reui-kit) apps/api/src/ # Fastify packages/ui/ # shadcn CLI output packages/shared/ # contracts packages/db/ # drizzle schema .gitea/workflows/ # CI/CD ```